Week[11]: Finale, Future and Farewell!

August 19, 2008 at 09:37 | Posted in Uncategorized | 1 Comment

(Sorry for the tardiness of this report – i have been having problems connecting to the wordpress servers.)

This past week i have added a ton of comments and finished the online documentation. Since i bought a new laptop last week, I was very eager to get the OSs installed and running as quickly as possible. I created 3 100Gb partitions – one for Windows Vista, One for Linux, and a shared partition. It only took about 2 hours to get both OSs installed and updated!

Well, I _tried_ to test on Vista, but ran into problems installing CPANPLUS via Strawberry Perl. I guess I needed more time to figure out Strawberry’s inner sanctum. I plan on having it working on Strawberry by the end of next month, if not sooner. I have had too many problems with Vista, but continue trudging along, because i am using it only for a couple of games (Gothic 3 and Portal) and for cross-platform testing and development.

Fedora 9
I love Fedora, and have been using it since FC1 was in beta. (Before that, I used RedHat, since 5.0.) When testing wxCPAN on Fedora 9, I ran into quite a few bugs that seem to be related to the updated versions of Wx-Perl and CPANPLUS. The search method freezes right in the middle. This didn’t happen on Fedora 7, my last system, with CPANPLUS 0.78 and Wx 0.77. I hope to resolve this issue as soon as possible.

I plan on moving the PODReader into its own module, probably Wx::PODReader. I have added quite a bit of documentation to wxCPAN, to aid future development, possibly by others. I plan on continuing development until CPAN becomes obsolete. I would also like to test wxCPAN on the parrot platform. I hear Strawberry Perl is looking for such a tool as wxCPAN, and would like to contribute to Strawberry, if time allows. Since I am a student, i won’t have much time, but I love to code, and do so frequently. This project has given me a long-standing goal, and I love long-standing goals.

Well – it’s been a great trip! I have had a lot of fun. I could not have done it without the support of my mentor Herbert, Eric, my wife Sarah, and the entire Perl community. Thank you all!

Week[10]: Strawberry Slushee

August 11, 2008 at 14:34 | Posted in Uncategorized | Leave a comment

This week, I have tried to install and familiarize myself with Strawberry perl, so I can test on that platform. I have worked out some errors and bugs, and added a bit of documentation – especially on the wxCPAN googlecode site. I have switched to the issue tracker on the web site for all bugs and feature requests. I have also released a couple of files to CPAN. Since I am on vacation until wednesday, I plan on immersing myself into wxCPAN from Thursday to Sunday, where I hope to do lots more testing and documentation.

I have had tons of fun on this project, and look forward to extending it in the next few weeks, before school begins. I hope to have a real production release, with all the features of any great GUI tool, before the end of the year, if not sooner.

Week[9] Report: First release!

August 4, 2008 at 10:27 | Posted in Uncategorized | Leave a comment

I uploaded my first release to PAUSE yesterday! I tweaked around with it for a few hours, only to find out this morning that I didn’t need to do any tweaking. Oh, well – so it goes.

This week, I prepared my module for release to CPAN. I used Module::Install for the Makefile.PL. There is a script in the misc/ directory that I apparently didn’t need to use, but it’s there in case anyone else wants to use it. It cleans the directories, makes HTML docs out of perldocs, and creates a .gz file. This can all be accomplished with `make dist`. (There is so much information to wade through for CPAN authors, I seemed to have missed a few important items.)

I have also tried to optimize the search algorithm, but it seems to take a little longer than I want. I am going to work on it some more this coming week.

I have also tried to resolve the scrollbar issue in the modules list. The problem is that it is inside a wxSplitter, and the scrollbars only show up for really long lists. I am going to get rid of the splitter, and make the information pane a static size. This should resolve the issue until I figure out how to get it working in a Splitter.

So – this coming week, I have three items i wish to address: The scrollbars in the Modules List, the search algorithm, and creating a toolkit for CPAN authors.

Unitl next week – Happy coding!

Week[8] Report: More Fixes

July 28, 2008 at 19:53 | Posted in Perl, Summer of Code | Leave a comment

This week has pretty crazy. I finally got the Update Wizard working. It seems to work pretty well, but I need to address a few issues that may be related to my system configuration. I also decided to create a new class for the Wx::ListCtrl which is my Actions list, mainly because I used it in the Update Wizard as well. My philosophy is: “if I use a similar control twice, why not create a new class?” However, as of today, there are still a few bugs in the Actions List.

I have also added more methods to ModuleTree and ModulePanel. I created ModulePanel, to keep with OOP principles. The new class handles the Information pane and the Module List. It should still work fine. I am testing a lot these days, while i am re-writing for OOP. So when I finish with any piece of the project, it is tested at least a dozen times! This should reduce the number of  problems I may ecounter down the road.

I am ordering a new laptop this week (hopefully thursday), and am going to install Fedora 9 on it, as well as Windows Vista or XP (have’t decided which, yet). It should arrive monday or tuesday. So next week I will be testing and coding on a new system! My current system is running Fedora 7, and has been ever since the day FC7 was released. I think I may have jumbled up some things in the system, so it will be nice to start clean, in order to see what problems, with wxCPAN, someone may encounter with a fresh install.

This coming week, I plan on sifting through all my code to take advantage of some of the new routines I created last week. I also plan on cleaning up and commenting a lot of code. I will be squashing a lot of bugs, as well. This week will be tedious, but at least it will be a much needed break from scratch coding. Going through my code will allow me the chance to write testing routines, and will release my module to CPAN on Saturday or Sunday!

The following week, I plan on implementing tools for CPAN authors, since I will have a module on CPAN to test it out.


July 23, 2008 at 10:59 | Posted in Uncategorized | Leave a comment

I finally fixed the AUTOLOAD method in ModulePanel! I don’t know what I was thinking when I originally wrote it, but the new write is great! I have also moved a lot of methods around to better support working with versions and the OOP concept. The biggest change is condensing the ModuleTree::Batch* methods to Frame::SetAction(@_,$cmd). This way means a lot less to debug and less code to sift through. I am currently working on condensing a lot of my code and implementing the Update Wizard. Hopefully, I will be done with the wizard by week’s end.

Next week: sifting through my code to take advantage of new routines, commenting code, and my first CPAN module release!

The week after next: CPAN author utilities!

Week[7] Report: AUTOLOADing OOPs…

July 18, 2008 at 22:20 | Posted in Perl, Summer of Code | Leave a comment

I have been working really intensely on re-writing the code for ModuleTree.pm, in order to be more object-oriented. I have created a new class, ModulePanel, which handles all the UI update functions that ModuleTree Handled. It is the Panel object uder the Modules tab in the main window. With this new scheme, anyone can embed the panel into any Wx-Perl application! So far, there are two Wx::Panel classes for embedding: one for the PODReader (CPANPLUS::Shell::Wx::PODReader::Embed), and one for the modules panel (CPANPLUS::Shell::Wx::ModulePanel). The ModulePanel still needs the MainWindow.xrc file to be loaded. This may change later, but I highly doubt it. If it does, I will create a new xrc file with just the appropriate widgets.

I have used a new Perl construct (new for me, anyway) for ModulePanel: AUTOLOAD. If ModulePanel can’t handle a method, it passes it on to the ModuleTree inside it. I did this to make everything a lot easier: all I have to do for my Frame is change the reference for the ModuleTree to point to the new ModulePanel instead.

My re-write isn’t fully completed yet, as I have come accross a few problems, mainly having to do with a previous change which dealt with limitations of the $cp->module_tree() function (see previous entry). In order to accomodate handling different versions of modules, I have added a _get_mod() method to ModuleTree. It has been a little difficult designing the interface to this function, even though the function itself is quite small. I started writing it this morning, and am still not finished with it. It started as $tree->_get_mod( $module_name|$module_object ), and I went through many incarnations to arrive at (hold your breath):

$tree->_get_mod( $modObject|$name [,{[version=>$version,] [mod=>$modObject,] [getname=>0|1]}])

Here is an explanation of the method:

The first parameter is either the name of a module or a module object. Pretty simple, as we need to know what module we want to deal with.

The optional second parameter is a hash reference to different options. I chose this method keeping in par with the perl style guidelines for functions with multiple parameters. The options are:

  • version: Float. The version number you want, otherwise we use the current version on CPAN.
  • mod: Same as the first parameter. If used, you can omit the first parameter.
  • getname: Boolean. Only return the name of the module. returns $modObject->package_name. If set to 0 or undef, returns the module reference.

Even with these problems, I am going to upload to CVS, so be warned: a lot of crashes may happen if you get this version!

This has been a very trying week, as I thought it would not be so difficult! Instead, I have worked very hard and long, only to feel I have accomplished nothing. But when I really think of all the new ideas I have used and created, I feel like a stronger programmer. I am going to a family reunion this weekend, at White Lake, NC, for some much needed rest and relaxation. Hopefully, It will give me the freshness I need for tackling next week’s (this week’s continuing) problems!

Wizards Suck – Need More Versions

July 17, 2008 at 06:58 | Posted in Uncategorized | Leave a comment

I have been working on an update wizard for CPANPLUS->Selfupdate(). It is proving to be harder than I thought. I am getting pretty frustrated, so I decided to take a break and work on implementing a feature I almost forgot – working with different versions. I have edited all the code for the ModuleTree->_install_module() and related methods. They all use parse_module() instead of module_tree() in order to obtain a versioned copy of the module. The new function calls look like $tree->_*_module($modname|$mod|$fakemod  [, $version]). This method is a LOT safer, anyway. Any time I need a list of modules, I loop through the list of names and convert to modules.

I believe I am at the point where I need to re-write some code. The ModuleTree is not truly Object-Oriented, and looks for other widgets. This needs to be fixed, since it does not _contain_ the other widgets. I am working on writing a Wx::Panel class called ModulePanel that is the Wx::Panel in the Module tab in the main notebook. It holds all the info tabs and can handle the same methods as ModuleTree, so we need not re-write any other interfaces. With the new interface design, anyone can embed just the ModuleTree widget to display modules and use fetch(), etc. on them. I may even make it a sub-class of CPANPLUS::Backend, so all you would need for a backend is the list. It will definitely have a SetCPP() function for setting the backend to an existing object.

Also – I will be working pretty hard today and tomorrow on this, as I have a family reunion to go to this weekend!

Week[6] Report: Wizards roll 1d12 for saving throw!

July 14, 2008 at 10:04 | Posted in Perl, Summer of Code | 1 Comment

This week has been really confusing for me. A lot of jumping around frantically, trying to get something more usable by the community. I have added a bit and taken away a bit. Here is a lit of random stuff I have done this week:

1. Moved SVN to trunk. I deleted all the files under the development branch, and have moved them all to the trunk, as per recommendation of SVN organization standard.

2. Switched UI development to wxGlade. I have previously rebuilt all of the UI under wxGlade, so the community can better take advantage of my development files. I have also removed some code in Configure.pm to make use of this change.

3. Fixed Preferences Window. Some items in the Preferences window were not working properly. When I changed the code for wxGlade, I noticed a few UI elements were not working properly. This has been fixed. The Preferences window is now fully functional, except for a tab I plan to add specifically for wxCPAN.

4. Enabled gettext support. I went through all the code so far and enabled gettext support using Wx::Locale. Now I can create a simple translation, probably in Spanish, unless someone else would like to translate the strings.

5. Added UI for Wizards. I have created an Update Wizard, which is used to update CPANPLUS, using CPANPLUS::Selfupdate. The UI is built with wxGlade and outputs perl code, because wxGlade doesn’t support Wizards. (It doesn’t work, yet – that’s coming this week.) I have also added a menu item for a First Time Wizard, which will be used if the user hasn’t used CPANPLUS before.

6. Tester Fixes. Some testers have reported that the requirements are too high. I have begun going through my code to try to lessen the requirements for wxCPAN. I have also changed all the wxGlade project files so they output code which can be used with wxWidgets 2.4.

7. Using old wxWidgets 2.4 API. Since I don’t see anything in wxWidgets 2.8 that is very useful, I am now using the API for wxWidgets 2.4. This should relieve some of the requirements, as reported by the testers. However, I see in the Changelog for Wx::Perl that most of the code is used with wxWidgets 2.6-2.8, so I really shouldn’t have to do this, but will, since it is not a big problem.

8. Moved files around The Shell::xrc directory has been moved to Shell::Wx::res. I changed the name because the directory holds images and other resources, not just xrc files. It has been moved down a level to conform with the CPANPLUS::Shell::Wx namespace.

9. I am now a CPAN Author! I got my acceptance from CPAN to be an author. I have registered the CPANPLUS::Shell::Wx namespace, and hope to publish my module as soon as I have finished the UI.

I am almost finished with the UI. All I have left to do is build the Wizards, the Preferences tab for wxCPAN, and a window for CPAN authors’ module administration. Then – on to the Bug Squishin’!


week[5] Report: Watch for Snowballs!

July 5, 2008 at 10:53 | Posted in Perl, Summer of Code | Leave a comment

It seems that my project is coming along a lot faster than my project schedule says, as development has snowballed as expected! As the Google Summer of Code is almost midway completed, here is a few highlights of what i have accomplished so far:

  • I believe the search functionality is 100% complete.
  • The preferences window appears to be complete, insofar as it is an interface to the CPANPLUS configuration. More additions are coming that pertain to wxCPAN, which will be stored in the same config file as CPANPLUS.
  • Module installation works! You can also step through the installation procedure using the ‘Actions’ tab at the bottom of the window. (The other Actions tab is a list of actions for unsupervised installs, which is not imlemented yet.)
  • There is a documentation reader for perl, which is an interface to perldoc. There are two versions of this – a windowed version, and a pane which can be inserted into any wxPerl application. This is 100% complete, and is modelled after the PerlDoc panel, as supplied by the EPIC plugin for Eclipse (http://e-p-i-c.sourceforge.net/).
  • Most of the information tabs at the bottom are 100% complete.
  • The toolbar is 100% complete.
  • Optimized list sorting. Note: this still takes a while for some operations, as there are over 55,000 modules in CPAN!

I still have a few major items left to do, mainly a window for module authors, and documentation.

The gSoC (wxCPAN) is probably the most fun programming project I have ever worked on. I have been in contact with the author of CPANPLUS, and I never imagined I would be taken seriously as a developer by so many people! My mentor has been great help, even though I haven’t had to contact him too much so far. However, I will definitely be contacting him a lot in the last half of my project, as I will need guidance on becoming a CPAN author (I have already applied via their website), as well as other aspects of module development and deployment.

Happy coding everyone!

First Successful Install

July 4, 2008 at 11:02 | Posted in Uncategorized | Leave a comment

I ran my first successful install today! I wated more control of the installation, so included some code to install all the prerequisites in wxCPAN, instead of using CPANPLUS::Backend. I still need to work on code for installing into arbitrary directories, but at least this is a great start! Here is a screenshot of the log:

Log of first successful install as root.

Log of first successful install as root.

Next Page »

Create a free website or blog at WordPress.com.
Entries and comments feeds.