Still not ready for a release, but I’ve gotten a lot done on the presenter program. Noticable to the public is the lyrics presentation. The only thing that is different about lyrics right now is that they have a title that displays in the window, but not on the presentation screen.

Behind the scenes, I’ve removed the requirement for Glade, which means one less thing to install for the user. It should be a little faster. I still have to finish the toolbars and menus.

There’s still a long ways to go. I may soon be working together with another developer, but I’m about to start working a lot on my real job that actually pays. I enjoy it less, but income is better than none.

Here’s another screenshot to wet your appetite.

Presenter 0.03

I’ve felt a little bit of chastisement from some people because I don’t seem to have posted the reasons as to why I am creating this program. I know there are presentation programs for linux, such as OpenOffice.org Impress, but my purpose is not to make a PowerPoint clone. I said that this will be for generic slides, with lyrics added in, but the whole purpose is to make presenting lyrics easier, and maybe allow people to create presentations quicker and easier than they could in PowerPoint or Impress. It is going to be similar to EasyWorship, but with quite a few changes that I think will make it easier to the user.

This project will mostly be a learning experience. I’ve done some research, and the only real open-source alternative is OpenSong, but I cannot contribute to that project because the developing environment costs money. I think it has a lot of usability issues myself, such as inputting lyrics and chords. The program I am working on has no aim to add in chords. I said something about having sheet music, but that’s not going to happen in the near future because I realize that it is so complicated.

I’ve expected some better response in the open source community than I have received. If all that comes out of it is more experience in programming, I’ll be fine with that.

I’ve gotten some more done on the program. I’m getting better at this as I go, so maybe I’ll have a working product in a week or so.

The name isn’t permanent at all. So I’m calling all those who would be willing to attempt to give it a name. I’d like something that would describe what the program does, but is unique; something catchy. Probably less having to do with church or worship, and more along the lines of a presentation, notes for the speaker (aka, a cheat sheet). It doesn’t really matter if the title hints to an event of organized Christianity, as long as it doesn’t make others uncomfortable to use it for general presentations.

Here’s a screenshot to show off some new and exciting features:

Presenter 0.01-scr2

Note that the program will use full screen eventually, but for development, I just have it set to use half a screen to make development easier. I already have it so that if there is a second screen it will use it, but I don’t have a second screen hooked up at the moment.

I’ve gotten quite a bit of progress done on the presentation program already. I’ll put a screenshot of what I have so far. The program isn’t usable yet, but I’ve got enough to make it decent looking.

Presentation PreRelease

The plan is to use the top left box as a “playlist” type area, that has selections for All Presentations, and underneath that will be what would be a “playlist” in a music program. I’m not quite sure how the dual screens on the bottom will work; the idea came from EasyWorship, but I think I may do away with one of them and just show the current monitor view.

On the bottom left, there is a list of songs. As my last post said, it’s going to default to basic slides instead of songs, and allow more types to be added (such as lyrics, etc). This implementation will be more friendly toward the general user, and allow for not just churches, but any individual to use the program for presentations.

Rant About Technical Issues

I really like the flexibility of GTK, even though it’s difficult to learn. Glade is making things a lot easier. I’m having some frustration with the quality of documentation with pygtk, especially with pango.layout and gtk.gdk.drawable. I think I’ll have to move to use cairo for the presentation screen to have anything decent, because once I write something to the screen, it doesn’t want to erase again. When combining widget.modify_bg, and drawable.*. The downside to that is cairo doesn’t have any documentation for python, and it’s harder to use. I can’t seem to find a way to blur the text for a shadow; I could cheat and just a partially transparent version of the text a bunch of times underneath the text (moved around to give a blurring affect), but I’m afraid it’s going to eat up resources.

I’ve come up with a little bit of the basics for the presenter program. I think it would be more useful to the world if the program was just for generic slides, kind of like a simplified PowerPointâ„¢ (Update: This is not a PowerPoint clone; basic slides are for simple presentations and will not attempt to replace full fledged presentation software, but to simplify updating and managing multiple presentations, such as lyrics). It could then have a plugin for displaying lyrics, and possibly even sheet music. The sheet music will take a lot of time, because creating a program that’s easy to put sheet music into is a lot harder than writing it down, and even reading it (If I remember correctly, less than 10% of the church of Christ can read sheet music, and I’m sure those outside is an even smaller number).

Just starting this program has presented a challenge to me. It’s a challenge to write a Graphical User Interface, and with all the power that GTK provides, it’s technical and difficult to use.

I’d like for the program to be open-source and free for everyone, but I may have music packs, background packs, and some other useful tools available for a fee. I think a useful idea would be to allow the program to work into an online service that uses songs and such directly off of a database on the internet, and charge a monthly fee. They’ll have to pay for the fee to use the songs anyways if they don’t have a CCLI, and that only covers so much anyways. Of course, I’ll have to turn around and pay somebody to use the lyrics and music for the songs.

One thing that has been frustrating is searching for help on certain areas. It seems like when I search Google for something specific about GTK, it comes up with source code or API, and no good tutorials or explanations as to how to use it. Oh well.

I’ve had on my agenda for a long time to create a presentation program. The solutions right now consist of overpriced, commercial programs, and a couple of other, such as OpenSong, but still do not meet the needs that I see. I started thinking about this while reading a post by afderrick, and since I’ve had a lot of free time, it looks like something I could work on.

One thing I’m going to have to work on is maintaining the project if I finish it. That’s probably the reason why my other projects stagnate.

It would probably be highly based on EasyWorship, because I have access to the program. I would also look at OpenSong, but it’s not near as usable as EasyWorship.

After some research, I’ve decided that Python and GTK are the plan so far. I’ve barely started anything, but maybe it’ll turn into something in the near future.

I found a pretty good article on the signs of a good programmer. I fit a lot of those, except maybe being in a variety of technologies. I pretty much stick to things that have good documentation (such as programming languages). I do as little hacking as possible, and by hacking I mean things that were never meant to be used. I started programming long before I learned it in a classroom setting though, and it’s never been “just a day job,” in fact, over 75% of the programming I’ve done has been unpaid.

In other news, I should be getting a new video card tomorrow… my computer will be complete, mwahaha (An evil laugh felt appropriate, I don’t know why). I also got talked into adding B-vitamins and calcium into my daily regimen by the guy at GNC, and I haven’t seen anything but positive results.

This is good information that all Linux developers should know: setuid/setgid.

I’m starting to get back into the learning mode, and the first thing on the TODO list, Python. It’s a lot more impressive than PHP. It’s easier to learn the basics, and yet has so much power from what I’ve seen so far. Maybe I can make use of it in my new job.

I started to try to make a script to print all possible words that a phone number can make, but I found that it was harder than it seemed. I could do it, but I estimate there to be around 729 possible combinations (9 digits, 3 combinations on most keys… if my math is right, that’s 9³), I didn’t want to fool with it and any potential memory problems.

I hate to say it, but I’m ready to go back to school… Well, mainly work. I’m running out of games to take up my time.

Update: Ok, I was wrong. The possible combinations is 39, which turns out to be 19683 possibilities, where each key has 3 letters. That does not account for the letters q or z, or the number 1 or 0. I actually came up with a program that’s only 15 lines long using recursion. For anyone who cares, I’ll put the code here:

#! /usr/bin/env python

digits=['_', '.,!?', 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']

def phoneLetters(phone, r=''):
  if(len(phone) == 0):
    print r
    return
  if(phone[0] >= '0' and phone[0] <= '9'):
    for i in digits[int(phone[0])]:
      phoneLetters(phone[1:], r + i)
  else:
    phoneLetters(phone[1:], r)

import sys
if(sys.argv[1]):
  phoneLetters(sys.argv[1])

Well, I’m currently working on a php project to process a log file, and the hardest part of it all is memory management. I had it set up to stick the information into an array, and then working with the array, but it will not work as is, unfortunately, without kicking up the allowed memory, but then I don’t know how much I’ll have to work with as the log file grows.

This project touches on issues I’ve never dealt with before, and it’s pretty much a whole new experience. I’m glad I know regular expressions.

I also have come to know VIM while working on this project. It’s a neat tool, but it’s so complicated that you can really mess things up if you don’t know how to use it. I tried to use gedit, but it’s already lost me an important file once while trying to save over the internet, and it almost happened twice, so I decided to go back to VIM.