Saturday, April 28, 2007

DBMS Complete

The title isn't a completely accurate statement, but close enough. I worked on it for three days, hammered out about 2000 lines of code, so at the end, I didn't test it as much as I should have, and the documentation for it isn't as complete as I want it to be. I might revisit it on Sunday to complete it. That would require me to run a few more test on the operations and to finish up the javadocs. I submitted it by the due date, but the prof said that if we happen to submit an update to it before he grades it, he'll consider the most recent version. So he's rather sport about that. I'm kind of ashamed at the fact that it's not to my full potential, so that in itself will most likely drive me to fix it up. So when I do that, I'll post a link to a jar file or something for those who are interested in it. The javadocs are already available here, though incomplete.

Thursday, April 26, 2007

Finishing Up School

I haven't done much of anything regarding GSoC in the past few weeks since I have been focusing my attention of getting final projects done for a few of my classes. So fear not, I am not leaving you out in the dark as to my progress with Finch.

I am though working on getting a logo for myself. Using Inkscape, a friend of mine was able to come up with the logo at the top of this blog. I'm not sure if I like it yet, well see.

I have been in contact with my mentor a little, but nothing to talk about. On the other hand, I just finished my research paper for my Organization of Programming Languages class. I researched the programming language D. I don't think I talked about enough of it, but after 10 pages, I got kinda tired of adding more to it. So if you are interested in knowing more about D, their website should provide quite a bit of stuff to munch on. If you are interested in reading my paper you can find it here.

Tomorrow I hope to complete my MiniDBMS engine that implements a few relational algebra operations. Fun times!!!

Friday, April 13, 2007

Proposal

I have been a Pidgin user for several years now and have loved it, but I always wished it could be brought into the console. As a Linux user/programmer I live in the console and since I have everything in screen sessions, I rarely leave it. So with the advent of Finch I was in heaven. However, I'm wishing more of Pidgin's features were available in Finch. Over the course of the summer, I hope to become part of the team and bring some of my wishes to reality.

=======
Overview

A prioritized list of deliverables is as follows:

1. Shortcut Keys Overhaul
2. Sound
3. Logging Improvements
4. Buddy List Options
5. Documentation of my changes
6. Crashing bug fixes (if time permits)

========
Shortcut Keys Overhaul

The shortcut keys need some serious work. I have yet to be able to use it without running into issues about it not catching keystrokes. I will build an independent interface that will be be made accessible via a command line option. This interface will prompt the user for the basic keystrokes to survive through the application. A tentative list of these basic keystrokes is:

Up
Down
Left
Right
Basic Alt commands
CTRL-o
ESC
Tab

The key mappings would be stored in a file to be loaded by Finch upon initialization.

To continue on this idea of shortcut keys, I want to add the option to add your own shortcut keys on the fly. Through an interface inside of Finch , a user will have the option to bind keystrokes to a set of predefined actions. A list of actions will be available through a combo box. There will be a list of custom shortcuts already configured, and the option to edit those will be made available.

I will modify how Finch interprets keystrokes in order to be able to detect both 8-bit meta and ESC sequences. This will provide an abstraction to the user in the configuration file. For example, if a user sets the configuration file to bind the keystrokes C-M-a to an action, the program will be able to determine whether C-M-a was hit regardless of how they are being sent from the terminal.

**OPTIONAL IF TIME ALLOWS**
I will also build into Finch the ability to detect when a user is unable to send commands. I'm still unsure exactly how this will be implemented. As of now, I'm thinking of either having it detect when a user has started the program, but hasn't been able to send any valid commands for a predefined amount of time. Another possibility is when a user has sent a series of invalid commands from the start of the execution, it will detect issues. Upon having detected an issue with commands, it will pop up a window that uses basic commands to catch the aforementioned list of basic keystrokes. Research will be done to determine the best way to implement this idea.

====
Sound

I frequently run Finch inside a screen session in the background, and it is very frustrating when I miss someone who tried to talk to me. Since it's not a GUI and doesn't have the ability to pop up a notification, the best way to resolve this problem is with the use of sound. I will add the ability to customize sounds for different events, similar to many existing IM programs. I will also make sounds customizable on a per-buddy basis similar to how you can program custom ring tones for different people in your cellphone.

=====
Logging

The logging features are another feature I will improve. I will build on the same basic ideas found in Pidgin's logging tools. Though there are a few ideas I want to add.

I will add the option to search through all conversations instead of just searching them one by one, or even searching them over a range of dates. There will also be the option to search from a list of logs from different users. From there we can add an array of search capabilities to better search the logs.

===============
Basic Buddy List Options

There are a few options to the buddy list that I think are missing. I will add the ability to hide/show empty groups and to hide/show buddy details.

===========
Documentation

Every good project is always backed up with good documentation. Firstly I will provide user documentation on how to use the features I have implemented. I will provide them in both man format and HTML format. If time allows, I will do some research in possibly putting the docs into LaTeX format, and thus offering centralized documentation that can be exported into multiple formats, ie: man page, HTML, pdf, etc.

==============
Crashing Bug Fixes

A few current features of Finch cause it to crash. For instance, chatting with jabber over GoogleTalk has cause some strange crashes. I have found that sometimes, simply quitting the application causes it to crash. Though the desired result is still achieved, it would be better for it to quit cleanly than to segfault. Due to the inability to predict the amount of time required in researching these bugs and then fixing them, I have chosen to append this project to my plans with an "As time Allows" clause. If I am able to complete my other goals to my satisfaction and more importantly the satisfaction of my mentors, I shall then take on fixing the aforementioned bugs and some others.

=======
ABOUT ME

My name is Eric Polino and am currently attending Southern Adventist University. Though this is only my second year, I am a junior. I am double majoring in Computer Science and Mathematics. Being self-motivated and having spent a few years teaching myself how to program with the help of a few friends, I was able to challenge several courses at the beginning of my freshman year. This allowed me to take advanced classes from the start. I was also named "Standout Freshman" by the School of Computing.

Last year, I was selected, along with two other students, to represent my school at a regional programming contest where we placed 3rd out of 18 teams. I also participated in a recent Programmer of the Month where I placed 8th in their LOAPS contest. http://dinsights.com/POTM/LOAPS/finals.php

Almost since the beginning of my programming career I have worked on large projects. My main project has been my suicide chess AI. I have also had experience working on large professional software projects. See my resume for more details on my work history. http://www.aluink.net:96/Resume.doc I have also used ncurses for various little projects along the way.

Being a Linux user/programmer I practically live in the console and have everything in screen. Thus having a console-based instant messaging application is music to my ears. Being familiar with Pidgin, Finch is a dream come true. Thus working on Finch personally will allow me to bring my own dream to reality. If I could watch movies and look at pictures in the console, I don't think I'd have much need for a gui. Sure, I like and enjoy pretty icons and nice Guifications, but I also believe that console applications are very powerful.

I am a firm believer that you must be committed to do what it takes to have what you want. When I decide to get something done, I'll do what it takes to make sure it gets done and it gets done well. Given the opportunity, I will live by this motto as I work with Finch this summer.

Google Summer of Code Begins

I am going to be posting here over the summer as I work with Google Summer of Code. Those of you not familiar with GSoC can check it out on their own. I submitted a proposal to work for Finch. Finch is a console based instant messaging client. It's part of the project called Pidgin, formerly known as Gaim. My accepted proposal can be read here.

So it's been rather exciting so far. I spent a week or two working on my proposal. With the help of some good friends of mine: Doug, Daniel, Andrew and Holly, it became what it became. When I was done with it, I was confident that I couldn't have done a better job with the time I had. So when I heard that there were 88 applicants to the Pidgin project and only 10 were going to be accepted, I was scared. But I went back and read my proposal and became confident that I couldn't have written it better, so in the event of it not being selected, I knew it wasn't from lack of effort.

So the accepted applicant list date was originally 4/9 but it was moved to 4/11. And Google was working as fast as they could and were able to finally release the list at 0230 UTC on 4/12.

It was a crazy day. I logged into irc.slashnet.org#summer-discuss about mid-day and started talking with a bunch of other applicants who, like me, were awaiting the release. By the end of the day, I wasn't saying much and just reading, they were going nuts. I was/am very new to IRC channels and some of the culture was just hilarious to me. Some guys were slapping each other with trout, that was just rotfl material. They were talking about all kinds of none-sense, finding the stupidest things to kill time.

Then there was the mailing list. It was a mailing list used by Google to communicate and receive information from the mentors/organizations/students. Some students started to spam it. Playing word games and such. Some mentors and Google officials were getting upset. It was both sad and funny to watch. So in the end I ended up passing time watching the mayhem ensue.

About 20 mins before the final results came out, all applications were labeled as 'Not selected'. My heart fell, I thought it was over. But just as I was about to leave, I saw a message in my inbox from the mailing list saying that it's not official and the results aren't out, all applications are labeled as so. So that made me feel better, but I was still shooken up. Then at about 0230 UTC, I refreshed the tab in Firefox with the page listing my application and it's status and it changed to "Application Accepted". I let out the loudest yell I've ever put out in the computer lab. No worries for those who aren't aware of this computer lab. It's the Advanced Lab for computing majors at my University. There were only three other people in there, and I knew them all personally. They all knew what was going on. In any case, I was/am the computing club president and am known for being off the wall from time to time, so it was fine. Anyhow, I was just flipping out. I ran out of the lab, called up two of my budding who were waiting for news and just couldn't contain myself.

My evening then proceeded to go hang out with a good friend celebrating by drinking sparkling grape juice and watching a good flick "Life is Beautiful", italian movie, amazing story.

Today, I was just getting my repo setup with monotone. Tonight, with the help of my mentor, I managed to compile it properly. There were some strange issues with the setup that I needed help with. So now, I'm lining up to start on stuff. It'll be slow going till I get up north. I'm at school for a while, and I've got some large projects I'm working on that are keeping my time busy. I'll still be getting started slowly.

Till next time...