|
Public info:
|
Project Motivation: Motivations for doing this project are as follows...
- Contributing: I have been a proud user and participant of the Maemo platform for nearly a year and a half now. For awhile now, I have been looking into contributing, and with an opportunity given by Google Summer of Code, I know that I can make a substantial contribution by being able to dedicate myself full time to a project benefiting the Maemo Community.
- Technical: I seek to gain more experience in programming C, and to learn more about event driven and UI programming. My goal is to get into Unix/Linux systems programming.
Project Full Description: Liqbase is a highly innovative idea and project built initially for the Maemo platform, it is touch based GUI geared towards speed and ease of use even on minimal of hardware without compromising resolution or CPU speed. With that being said, further open source development is much needed to help Gary Birkett (lcuk), the project's founder and administrator, to bring the development of the liqbase framework to the next level. For those not yet familiar with liqbase, here is a good video by lcuk showing the liqbase framework and explaining lcuk's need for help (http://www.youtube.com/watch?v=iMXp0Dg_UaY). One thing that the development of liqbase can use more of is comments, code organization, and easy to read style. I plan to add to this with my good organization skills, coding style, and ability to effectively comment and document code within it's source to benefit myself months later and other coders wishing to contribute with relative ease to liqbase. In terms of reorganization, I will strip unnecessary and redundant code, further consolidate the code into a clear-cut API and library, and help insure the quality of the code. This work will help structure the liqbase framework so that further development goes smoothly and further additions will be a breeze.
Furthermore, in addition to the maintenance to the status-quo of liqbase, I plan on developing the GUI framework of liqbase so as to allow with ease for applications to be built on top of liqbase. As a proof of concept, I plan to build a Systems/Network monitor that uses the liqbase UI framework to create a fully interactive and sleek application. This application will use a server/client model where servers are set up on remote machines and a client runs on one's tablet. The servers will constantly transfer systems data to the listening clients, and the client will display the host name of the connected server. When one touches (clicks) the host name tile, precise and comprehensive systems information will be displayed for that machine, including but not limited to CPU usage, memory usage, processes and their PID, mem %, cpu %, and uptime. Also, there will be a simple interface for securely managing aspects of the systems such as killing that darn pidgin process that somehow has 94% CPU usage.
In conclusion, my project aims to refine existing liqbase code, further develop the liqbase framework for modular application addition, and to actually build and document a Systems/Network monitor application so to establish a proof of concept for other developers to write applications using the highly interactive and innovative liqbase framework. :)
Liqbase Framework Overview: To help understand some of the current features of the liqbase framework, I have written a brief overview of the high level components and will explain how the liqbase framework will tie into my System/Network Monitoring application.
- A central desktop, home location used to view sublocations. Such a setup can be used to show the different machines being monitored by my app.
- Zoom in feature that changes to the sublocation when "double-touched". This is a quite elegant and fun feature that the liqbase framework uses to switch the focus to the sublocation.
- Kinetic scrolling used to interactively and smoothly scroll a screen. This will be great for when the monitoring display extends beyond one screen length.
- Interactive use of buttons and ability to use actual fingers to navigate back and forth through locations. This is an intuitive design that is both comfortable and interactive.
- Sketching feature that allows one to write down notes about their monitor data for example.
- Text selection and editing that can allow a user to edit a configuration.
- Screenshot functionality that may be used to take a snapshot of current monitor displays.
As far as the incomplete aspects of the framework go in terms of building applications on top, there are certain limitations or a current lack of support for achieving such a task. This, I will help remedy.
Project tasks and deliverables:
1) Develop the core liqbase framework.
- Define a clean looking coding style, a bit of polishing should benefit the liqbase code.
- Write the code for the incomplete aspects of the liqbase framework to allow for applications to be built on top.
- Further consolidate the liqbase framework library and API to define a clear-cut set up library functions.
- Refactor, clean up current liqbase framework code in aiding the further consolidation to the end of achieving a solid API.
- Help get liqbase ready for Maemo 5 Fremantle.
2) As a proof of concept, develop a visual Systems/Network monitoring application built on top of the liqbase GUI framework.
- Develop server/client programs using the Berkeley Sockets interface
- Write functions to retrieve systems information for the Systems/Network monitor.
- Use the liqbase framework to interactively and beautifully display and manage the data on a Nokia tablet.
3) Document the procedure for writing an application using the liqbase framework.
- Write a tutorial or wiki page explaining how to write an application using liqbase as a UI.
Project schedule: Now-May 23: Review All Code, Collaborate with lcuk, Submit patches where needed May 23-July 10: Project Task #1, full development July 13: Mid-term due July 15-August 17: - Project Task #2 with Task #2 refinement, testing, bug fixing - August 10: Suggested 'pencils down' date - Project Task #3 writeup tutorial documentation, this shouldn't take very long Do you have other commitments during the summer of code coding period ? If yes, what kind of commitments? No. Google Summer of Code full-time would be no problem for me. Why are you the right person for this project?
There are three aspects that I think say why this project is for me: knowledge, skills, experience. Knowledge, I am proficient in many programming and scripting languages including php/perl/python/java/c/bash/xhtml/css, I have done some event driven programming in Gtk and Java awt/swing, and I have very adequate knowledge of Linux. Skills, my programming skills are quite exceptional for my age in which I have great coding style and organization skills, also I have the ability to work well with others and to collaborate ideas to reach a logical solution. Experience, I have experience in doing a medium to large programming project development, working with the technical aspects of the Nokia tablets, and experience with writing GUI and event driven code. Here is a little more detail...
- Linux Experience: I have been a Linux user since 2005. In that time I have progressed from barely being able to adequately manage my Ubuntu desktop installation to being able to properly configure and manage the Arch Linux installations that I use now. On my Nokia N800 tablet, I have a well managed OS2008 Diablo install and have installed and used Deblet before. For my tablet I have written numerous scripts to do my bidding such as a perl script to convert videos to a more tablet friendly format and another perl script to update my tablet with various media on my other machines. On my Arch Linux systems, I have spent numerous hours hacking and configuring my systems to get all of my hardware on all of my systems to work nicely, a challenging example of this for me was getting a Belkin Wireless-G card to work on my Arch laptop where without documentation I came up with an effective setup using existing drivers, a special HAL, and a few perl/bash scripts to help with the configuration.
What are the benefits of your project for the Maemo Community? It is my belief and Mr. Gary Birkett's belief that liqbase speaks for itself as the amount of hard work done so far and promise it could bring. Further development of the liqbase framework would take one man's vision of tablet innovation to the next level. This next level will open up a doorway for other developers to add to the liqbase framework, but of equal importance allow those developers to use a UI framework so interactive, innovative, and spectacular that the very sight of it will attract newcomers to the community and contribute to the growth of the Maemo Community.
Along with the important of developing liqbase, my visual System/Network monitoring application will provide not only a cool little app to the Maemo repositories, but will serve as a shining example of what can be done with liqbase framework.
Short Biography (academic work, open source background and other activities that you like to do)
Computer Background: I started programming at age 13 with writing mIRC scripts. Rather quickly, I jumped into web development where I wrote full XHTML/CSS/PHP websites and even designed some graphics. Notable achievements there was the development of a PHP CMS, which consisted of about 7,000 lines of code. Also, I coded XHTML/CSS templates at a professional level, in which I had a partnership with a graphics designer to develop layouts for customers. At the age of 17, I left web development to pursue my real interest: open source development, Unix/Linux systems programming and network security. By this time, I had been an experienced Linux user, and a proud N800 owner. Through Linux computer administration, I have written several perl, python, and bash scripts to perform various tasks. Along with my interest in network security and Unix Systems programming, I have learned to program in C. From taking two college Computer Programming courses, I have learned the concepts of procedural programming, object oriented programming, and the language Java. Currently, I seek to gain experience in programming large C projects. It is my goal to master programming in C for Linux/Unix systems.
- C Programming Background: I started learning C about a year ago. In the reading (learning) aspect of learning a programming language I have learned well by reading several great books and spending many hours reading the source code of other c projects. In the writing (experience) aspect, I have yet to work on a large c programming project, but have done a small project or two on my own. When I was learning TCP/IP socket programming in C, I worked on writing a solid base for an IRC bot that used BSD sockets to connect to an IRCd and had some basic functionality. Another small project I did in C and to fuel my interest in statistics (and card games) was to program a random card generator to simulate the probability of getting certain hands in poker with n number of trials. Besides these little projects, I have written numerous programs to explore C and learn Unix/Linux systems programming. Despite my currently short C background, my years of coding in other languages, coupled with my motivation, full-time dedication, and ability to learn quickly and work hard, I am confident that I can undertake this project.
High School Background: As I have not entered college, here is some information about my high school background:
- Extracurriculars: Boy Scouts of America, Debate Team, Model United Nations, Future Business Leaders of America, Varsity Tennis
- Awards: Eagle Scout, Texas A&M Corps of Cadets Scholarship, Texas A&M Aggie Eagle Leadership Award
- College Attending: Texas A&M University, Dwight Look College of Engineering
- Major: Computer Engineering
- Activities I Will Do: Air Force ROTC, Corps of Cadets Military Leadership Program
- College Credit Earned or Expected to Earn before enrolling in College (earned in High School): Calculus I, Calculus II, Statistics, Computer Science I & II, U.S. History, American Government, Intermediate Computer Programming
- Community Service: around 200 hours documented
- Work Experience: Junior Systems Technician at Wright-Patterson Air Force Medical Center - Internship (2008)
- Assisted Air Force Personal in rolling out over 600 new PCs - Setup software and hardware for hospital staff
Open source background: Although I have not yet had the privilege of working on an open source project, my participation and affiliation with open source communities is strong. I have been part of the Arch Linux Community for about 2 years, part of the Open and Free Technology Community for 2.5 years IRC network (PHP channel), part of the Maemo Community for about 1.5 years, and have had a constant presence in Freenode IRC network for 3 years, appearing in various programming and Linux channels. Also, my main home online and in IRC has been on a network called Linuxniche where the individuals are dedicated to Linux and other open source technology. In short, I have participated and been around open source communities and individuals for years, and I think it is about time I start contributing to the communities that I love and cherish.
- Liqbase Association: A few months back, I posted on the ITT forums looking for a project to work on, and lcuk responded saying that liqbase needed help. Although, I didn't jump at lcuk's initial offer because I was looking for my own project to learn C socket programming, I did spend time playing around with liqbase to see what it was all about. Well, after I spent time learning C sockets, Google Summer of Code proceedings came around the corner and I decided to contact lcuk with an offer of help and an initial proposal of what I would like to do with liqbase. So, for the past couple of weeks, I have spent everyday conversing and collaborating with lcuk to get a clear picture of what liqbase needs and what I can offer. The results of those discussions are summarized here and lcuk and I feel that my help will very much benefit liqbase. My eagerness is strong and I have already spent time reading through the liqbase code.
Other Activities: For recreation, I enjoy running and skateboarding. I play tennis at a tournament level. To relax, I enjoy a little Sci-Fi such as Star Trek, Stargate, and Battlestar Galactica. In high school, I enjoyed competing in public forum debate tournaments and practicing my oratory skills. But otherwise in my free time, you'll find me reading a computer book, writing code, or hacking around on Linux or my tablet. :D
|