<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4884232226111809683</id><updated>2012-01-29T19:13:50.055-08:00</updated><category term='Personal'/><category term='Coding'/><category term='KDE'/><category term='Art Contest'/><category term='OpenChange'/><category term='MAPI'/><category term='Rants'/><category term='Humbling'/><category term='PlanetKDE'/><category term='Dev Days'/><category term='Linux'/><category term='AltimatOS'/><category term='Qt'/><category term='PerlKDE'/><category term='Sprints'/><category term='BOFH'/><category term='Fun facts'/><category term='APP-get'/><category term='Cranky Coder'/><title type='text'>The Trials of a Linux Geek</title><subtitle type='html'>The daily stuff that happens to a lone Linux developer.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-5243414921320150347</id><published>2011-07-14T21:38:00.000-07:00</published><updated>2011-07-14T22:58:58.975-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='BOFH'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Cranky Coder'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><title type='text'>Vixie Cron How I Loath Thee.....</title><content type='html'>As some know, I work as the senior systems administrator for a company in the southeast SF Bay Area. Recently, we had to move to a new security system, after having been broken into four times in the last _four_ years.&lt;br /&gt;&lt;br /&gt;One of the features of this new system is that it ties into our phone system to alert the building that the alarm is about to be armed. To do this, a dial out to a special phone number needs to occur at the desired hour and then voila! Instant Alert throughout our suite! So, we've setup an email to fax service that we can easily trigger by a simple email.&lt;br /&gt;&lt;br /&gt;So I wrote a REALLY simple shell script shown below (with the fax and email addresses elided):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;set -e&lt;br /&gt;&lt;br /&gt;echo "Sending Security Page NOW!"&lt;br /&gt;&lt;br /&gt;/usr/sbin/sendmail -t &amp;lt;&amp;lt;EOF&lt;br /&gt;FROM: SOMERANDOMSMUCK@minervanetworks.com&lt;br /&gt;TO:   1234567890@fax.com&lt;br /&gt;CC:   SOMERANDOMSMUCK@minervanetworks.com&lt;br /&gt;SUBJECT: Alarm Set&lt;br /&gt;&lt;br /&gt;Set.&lt;br /&gt;&lt;br /&gt;EOF&lt;br /&gt;&lt;br /&gt;RET=$?&lt;br /&gt;if [ $? -eq 0 ]; then&lt;br /&gt;    echo "SUCCESS"&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As I said, simple.&lt;br /&gt;&lt;br /&gt;From there I setup my crontab on one of the Linux box in my cube to have it go off at the apropriote time, 7:55PM Monday through Friday:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;MAILTO=SOMERANDOMSMUCK@minervanetworks.com&lt;br /&gt;&lt;br /&gt;50 19 * * 1-5 /usr/bin/securityfax.sh&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Tested out the script, thinking that "Hey, I'm all done". &lt;b&gt;Wrong.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I come to find out that Vixie Cron &lt;i&gt;can't seem to tell time!&lt;/i&gt; I get the alert emails at 8:31PM from the system!&lt;br /&gt;&lt;br /&gt;At this point, looks like I'll be replacing Vixie Cron on my workstation (CentOS 5). Can anyone advise a good Cron Daemon replacement that has enough similarities to vixie cron that I won't have to relearn &lt;i&gt;too&lt;/i&gt; much and can actually interpret time settings in the crontab as more than mere suggestions?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-5243414921320150347?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/5243414921320150347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2011/07/vixie-cron-how-i-loath-thee.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/5243414921320150347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/5243414921320150347'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2011/07/vixie-cron-how-i-loath-thee.html' title='Vixie Cron How I Loath Thee.....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-3372789798621990348</id><published>2011-02-11T20:53:00.000-08:00</published><updated>2011-02-11T21:23:13.115-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='PlanetKDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Qt, Nokia, and the Internet Rambling.....</title><content type='html'>So, most of you who read my blog know about Nokia's deal with Microsoft. To re-iterate the best image posting I've seen on planetkde via John Layt's blog: Keep Calm and Carry On.&lt;br /&gt;&lt;br /&gt;Yes, Microsoft has been a major negative force on computing, especially with regards to the freedoms of end users. This however does not warrant the extreme and in many ways self-defeating knee-jerk reactions that have been permeating the Interwebs oft lately on the F/OSS blogs.&lt;br /&gt;&lt;br /&gt;Lets rather, take a wait and see approach to this. There really isn't enough information on the ground at this point in the game to know what is or is not going to occur in the immediate or even long-term for Qt Development Frameworks at Nokia. Lets trust in our friends at Nokia to gather up the information that the community is craving to know and get it ready for public consumption.&lt;br /&gt;&lt;br /&gt;Until then, Nothing to See Here, Move Along.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-3372789798621990348?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/3372789798621990348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2011/02/qt-nokia-and-internet-rambling.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/3372789798621990348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/3372789798621990348'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2011/02/qt-nokia-and-internet-rambling.html' title='Qt, Nokia, and the Internet Rambling.....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-3995254385667548302</id><published>2009-10-13T00:29:00.000-07:00</published><updated>2009-10-13T00:41:15.068-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='PlanetKDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><title type='text'>What I've Been Doing Lately... Or Better Said, Coding Lately.</title><content type='html'>Lately I've been doing research to get an Exchange resource working and usable for KDE. During this time, I've had to have a working trunk build since OpenSuSE's Build Service tends to have custom patches for their build of KDE that make some things not behave or look how the default KDE trunk tree acts/looks (that's not a comment that that's bad, just not my want for when I do development, but I digress...)&lt;br /&gt;&lt;br /&gt;To facilitate this, I'd been using the shell scripts that KDE has on Techbase and on the OpenSuSE wiki to build trunk. I've found however, that my time would be better spent working on code, instead of waiting on code to compile when at home. Since I wanted something that would even fully track Qt's Git tree and email me when builds ran or error-ed out, kdesvn-build was not going to meet my needs. What came out of it was a hacky little Perl script called KDEBuilder that was fairly fragile and frankly not designed at all.&lt;br /&gt;&lt;br /&gt;While thinking over the mess that was KDEBuilder, I realized that what I *really* wanted was something that was flexible, feature rich, and wasn't an overblown ported shell script on steroids. Out of this came the design for Direktor, a continuous build system written in a clean Perl code style (heavily influenced by the Google Perl Style guide....) To better describe Direktor, I've pasted the ReadMe.txt from the source tree below:&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;DOCUMENTATION FOR DIRECTOR:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Direktor is a continuous build system primarily meant for use by the KDE open source project. The goal was to create a system that built KDE and it's various dependencies efficiently and allowed the user to be notified and to monitor the progress of the builds.&lt;br /&gt;&lt;br /&gt;To achieve these goals, Direktor can be configured to e-mail out the build announcements and build failures. This is augmented by the HTML data that is generated to create a dashboard for the build.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;DESIGN:&lt;/span&gt;&lt;br /&gt;Originally, Direktor was only a simple Perl script that would naively build KDE trunk and announce simple e-mailed snippets to an email address. This became fairly ungainly as time went on with the need to add in Qt4 to the build. This is when it became obvious that the build methods needed to be more abstracted away to allow any software (including KDE's base dependencies if so desired) to be built with this system.&lt;br /&gt;&lt;br /&gt;To facilitate this, Direktor was re-factored to use description files to detail various aspects about the build and source control system per module or project. These description files are nothing more than INI files with required entries to make the system work.&lt;br /&gt;&lt;br /&gt;A typical description file follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;fig. 1: qt4.direktor&lt;/span&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Direktor 1.0&lt;br /&gt;name = qt&lt;br /&gt;repository_type = git&lt;br /&gt;in_source_build = TRUE&lt;br /&gt;source_repository = git://gitorious.org/+kde-developers/qt/kde-qt.git&lt;br /&gt;source_directory = \$HOME/sources/qt-kde&lt;br /&gt;prefix = \$HOME/installs/qt-kde&lt;br /&gt;configuration_flags = -qt-gif -debug -fast -no-separate-debug-info -system-libpng -system-libjpeg -system-zlib -dbus -webkit -plugin-sql-mysql -nomake examples -nomake demos -prefix \$QTDIR&lt;br /&gt;environment = QTDIR=$HOME/installs/qt-kde \&lt;br /&gt;              PATH=$QTDIR/bin:$PATH \&lt;br /&gt;              QT_PLUGIN_PATH=$HOME/installs/trunk/lib/KDE4/plugins:$QTDIR/plugins \&lt;br /&gt;              PKG_CONFIG_DIR=$QTDIR/lib/pkgconfig:$PKG_CONFIG_DIR \&lt;br /&gt;              LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH \&lt;br /&gt;              QTEST_COLORED=1&lt;br /&gt;configuration_command = configure&lt;br /&gt;build_command = make&lt;br /&gt;build_flags = -j2&lt;br /&gt;install_command = make install&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;As can be seen, this allows the system to be very versatile with builds allowing one to build any package. The configuration_command, build_command, and install_command options allow can be any conceivable valid Linux command, even&lt;br /&gt;scripts.&lt;br /&gt;&lt;br /&gt;The fields in a direktor file are required. Lets review the fields and their format:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Direktor 1.0&lt;/b&gt;&lt;br /&gt;This is the description and format version of a description file as used by this application.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;name:&lt;/b&gt;&lt;br /&gt;This is an arbitrary string value. It is mainly used to present information about the module to the user.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;repository_type:&lt;/b&gt;&lt;br /&gt;This is a string value that takes one of the following values: svn, git, file, cvs, or p4. This tells Direktor which type of repository the module lives in. The file option tells Direktor that the source is not in a revision control system, but rather is a release tar.bz2, tar.gz, tgz, or zip archive.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;in_source_build:&lt;/b&gt;&lt;br /&gt;This attribute takes either a TRUE or FALSE. This boolean value tells Direktor to build the binaries from within or outside the source directory. Increasingly, many of the open source applications are built outside the source directory.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;source_repository:&lt;/b&gt;&lt;br /&gt;This is the location of the source repository or the full path location of the archive that contains the sources of the project to build.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;source_directory:&lt;/b&gt;&lt;br /&gt;This is the location where the unpacked or checked out files will be placed on the local hard disk.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;prefix:&lt;/b&gt;&lt;br /&gt;This is the prefix where the resultant binaries will be installed to.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;configuration_flags:&lt;/b&gt;&lt;br /&gt;These are the flags to pass to the script or application called to configure the source tree for compilation.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;environment:&lt;/b&gt;&lt;br /&gt;This describes the environment variables and values that must be set to allow the build of the source code to complete correctly. These are placed one per line with the continuation character being the forward slash.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;configuration_command:&lt;/b&gt;&lt;br /&gt;This tells Direktor what command or script to run in the source directory to configure the source code for compilation.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;build_command:&lt;/b&gt;&lt;br /&gt;This tells Direktor what command or script to run from the build directory to compile the source code into binary object and executable code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;build_flags:&lt;/b&gt;&lt;br /&gt;This instructs Direktor to use the requested flags with the command to build the source tree. In many cases, this is to instruct the compiler to use non-standard library or header locations, or to do the build in parallel allowing the job to complete faster.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;install_command:&lt;/b&gt;&lt;br /&gt;This instructs Direktor what command or script to run from the build directory to install the resultant binaries produced in to the prefix earlier specified.&lt;br /&gt;&lt;br /&gt;Note that any time an environment variable is requested that has a dollar sign in it must be escaped to properly be interpolated by the shell that is invoked by Direktor.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;REGISTERING MODULES:&lt;/span&gt;&lt;br /&gt;To register the modules, simply add the module direktor file names without the .direktor extension to the .direktor.modules_registry located in the build user's home directory. The header line declares the major series of Direktor that can read this format. An example .direktor.modules_registry follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;fig. 2: .direktor.modules_registry:&lt;/span&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Direktor 1.0&lt;br /&gt;qt4&lt;br /&gt;kdesupport&lt;br /&gt;kdelibs&lt;br /&gt;kdepimlibs&lt;br /&gt;kdebase&lt;br /&gt;kdepim&lt;br /&gt;kdemultimedia&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;WORK FLOW:&lt;br /&gt;When Direktor starts, it clears the current environment and then sets up the global parameters defined in it's configuration stored in the home directory of the user running the build. This file is called $HOME/.direktor.cfg, and is in an extended INI format.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;fig. 3: .direktor.cfg&lt;/span&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Direktor 1.0&lt;br /&gt;[GENERAL]&lt;br /&gt;user = somebody&lt;br /&gt;group = users&lt;br /&gt;registry = $HOME/.direktor.modules_registry&lt;br /&gt;announce_start_via_email = 1&lt;br /&gt;announce_builds_via_email = 1&lt;br /&gt;announce_errors_via_email = 1&lt;br /&gt;announce_completion_via_email = 1&lt;br /&gt;use_dashboard = 1&lt;br /&gt;; these next two are mutually exclusive!&lt;br /&gt;use_watcher_to_dispatch_builds = 0&lt;br /&gt;use_scheduler_to_dispatch_builds = 1&lt;br /&gt;; needed for any non-generic initial repo setup that you will need. Remember,&lt;br /&gt;; this gets run if the lock file $HOME/.direktor.firstrun does not exist.&lt;br /&gt;first_time_startup_script = firsttimesetup.sh&lt;br /&gt;&lt;br /&gt;[EMAIL]&lt;br /&gt;from_address = someone@somewhere.net&lt;br /&gt;to_address = somelist@somewhere.net&lt;br /&gt;cc_addresses = bob@somewhere.net,bugs@somewhere.net&lt;br /&gt;subject_prefix = MY BUILDER&lt;br /&gt;&lt;br /&gt;[DASHBOARD]&lt;br /&gt;html_upload_path = somehost.somewhere.net:/home/builder/public_html/&lt;br /&gt;upload_user = someone&lt;br /&gt;upload_cioher = arcfour&lt;br /&gt;&lt;br /&gt;[WATCHER]&lt;br /&gt;email_inbox = scm-monitor@somewhere.net&lt;br /&gt;action_to_take = queue_all&lt;br /&gt;&lt;br /&gt;[SCHEDULER]&lt;br /&gt;queue_file = \$HOME/.direktor.schedulerrc&lt;br /&gt;action_to_take = fullbuild&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;Once the global configuration is loaded, Direktor checks whether it was started in interactive or daemon mode. Once the execution mode is determined and acted on, Direktor scans the modules_registry to see which modules it needs to retrieve and build.&lt;br /&gt;&lt;br /&gt;After it knows which targets to build, it loads the .direktor file for the given target in. Then it announces the start of the first target to the pre-defined E-Mail address and acts on the required options accordingly by setting up the additional environment needed for the compilation of the sources in this target, checking out or downloading the sources to the local disk and unpacking it if needs be to the source directory, configuring the sources, running the build command for the source target, and then installing it into a predefined prefix. Along the way, if any of the steps fail, an E-Mail announcement is sent out to notify the user building the code that the build has failed.&lt;br /&gt;&lt;br /&gt;While this is all going on, Direktor will generate HTML pages to display the current status of the builds, including whether a build is running, the target's build completion status (success or failure), and when the build is done, what warnings were output during the compilation.&lt;br /&gt;&lt;br /&gt;If the compile fails, the compilation log is displayed back to the last successful portion of the configuration, build, or installation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;CONTINUOUS BUILDS:&lt;/span&gt;&lt;br /&gt;The most significant feature of Direktor is it's ability to run automatic and prescheduled builds with user specified actions. The two modes of this allow it to be used for continuous build assurance allowing projects to assure that all commits to a branch that is monitored to always build.&lt;br /&gt;&lt;br /&gt;The first method, using the watcher system, requires that a post-commit action be set on your source control system to notify Direktor when a check-in has occurred which is delivered to a selected address configured for retrieval by a fetchmail-alike and then processed by procmail, or similar application. During the processing by procmail, the message is piped to our watcher script which then asks the scheduler to start a build as soon as the current server is idle and sends an email notification to a selected e-mail address that a commit to one of the modules has caused a new build to be queued. This very literally will on very active repositories cause the build to always be queued, so be sure that is truly the desired outcome.&lt;br /&gt;&lt;br /&gt;The second method kicks off builds at predetermined clock times. The schedule is re-read every 15 minutes to add newly desired times that may have been added to the specified configuration file. Note that no two builds can run at the same time, so be sure that the schedule is long enough to accommodate the completion of all builds.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-3995254385667548302?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/3995254385667548302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/10/what-ive-been-doing-lately-or-better.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/3995254385667548302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/3995254385667548302'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/10/what-ive-been-doing-lately-or-better.html' title='What I&apos;ve Been Doing Lately... Or Better Said, Coding Lately.'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-2883328676527427415</id><published>2009-10-02T19:00:00.000-07:00</published><updated>2009-10-02T19:28:01.188-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='PlanetKDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Dev Days'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><category scheme='http://www.blogger.com/atom/ns#' term='Sprints'/><title type='text'>Sprint-A-Thon!</title><content type='html'>What has two homes on either side of the planet, attracts geeks by the storm, and the letter Q?&lt;br /&gt;&lt;br /&gt;No, not a rabid Qbert collector, rather Qt Dev Days!&lt;br /&gt;&lt;br /&gt;This year, to start things out right we've managed to acquire through the clandestine (ok, maybe not so much....) work of the Nokia Qt Development Frameworks division (formerly known as Trolltech) F/OSS Community Manager, Knut Yrvin, a small stash of passes for KDE developers to the event. We thought what better way to draw in interested KDE developers than to hold a pre-Qt Dev Days Sprint?!&lt;br /&gt;&lt;br /&gt;What will the sprint cover, you might ask? Well, we're interested in hearing (hopefully sooner than later) what YOU, the KDE hacker wants to work on/brainstorm on at this sprint! To better get an idea of whom will or will not be coming, please stop by our Facebook event page and RSVP. If you choose not to use FB to let us know, feel free to leave a blurb on my blog. Thanks :D&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;UPDATE:&lt;/span&gt; Hmmm, it would seem I for got to post the LINK to said FB event..... Here you go: &lt;a href="http://www.facebook.com/home.php?ref=logo#/event.php?eid=293775555108&amp;ref=nf"&gt;Facebook Dev Days Sprint&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-2883328676527427415?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://qt.nokia.com/qtdevdays2009' title='Sprint-A-Thon!'/><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/2883328676527427415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/10/sprint-thon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/2883328676527427415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/2883328676527427415'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/10/sprint-thon.html' title='Sprint-A-Thon!'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-5581285512764996061</id><published>2009-08-21T23:58:00.000-07:00</published><updated>2009-08-22T00:01:53.002-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='MAPI'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenChange'/><title type='text'>Update....</title><content type='html'>Thanks to Brad Hards' quick intervention, I have a tarball of a recent SVN snapshot for OpenChange. I'll build the code and start working on reviewing the API tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-5581285512764996061?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/5581285512764996061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/08/update.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/5581285512764996061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/5581285512764996061'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/08/update.html' title='Update....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-8384516473320671665</id><published>2009-08-21T23:25:00.000-07:00</published><updated>2009-08-21T23:30:12.034-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><title type='text'>Stuck....</title><content type='html'>This is a special request:&lt;br /&gt;&lt;br /&gt;The last couple days, the OpenChange project's website has fallen off the 'Net. As one of the steps in getting my development environment up is installing libmapi++ (which no distribution seems to have packaged at all), I'm stuck. If anyone knows the folks maintaining the OpenChange project's website, please find out what is going on. Also, if anyone has a current check-out of the libmapi++ tree, please let me know so I can get it from you. Thanks.&lt;br /&gt;&lt;br /&gt;You may now return to your regular blogging enjoyment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-8384516473320671665?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/8384516473320671665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/08/stuck.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/8384516473320671665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/8384516473320671665'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/08/stuck.html' title='Stuck....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-7101937612264466213</id><published>2009-08-20T00:46:00.000-07:00</published><updated>2009-08-20T00:53:34.905-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Humbling'/><title type='text'>Trudging Through Another Build....</title><content type='html'>After spending an evening getting my development environment updated to trunk, I think I've come to a few conclusions: 1) I need to learn more about CMake, 2) learn how to deal with missing headers better (thank you ervin) 3. don't resort to sledgehammer methodology as quickly to fix a problem, 4) work on my my patience level more.&lt;br /&gt;&lt;br /&gt;After committing the fix from being the guinea pig for the fix, I'm onto building kdepim, and then I'll start working on getting the code fixed for the openchange resource so it compiles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-7101937612264466213?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/7101937612264466213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/08/trudging-through-another-build.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/7101937612264466213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/7101937612264466213'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/08/trudging-through-another-build.html' title='Trudging Through Another Build....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-3665006071276776993</id><published>2009-08-18T10:44:00.000-07:00</published><updated>2009-08-18T10:48:21.684-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><title type='text'>Answering Questions.</title><content type='html'>Just so those that are curious know, I'll repost my response to the over a dozen comments to my posting last night......&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;Just a small fyi for those that have been commenting:&lt;br /&gt;&lt;br /&gt;Yes, my aim is for 100% parity with Outlook's capabilities with MAPI. This means that Mail, Contacts, Calendar, Notes, Journal, Public Folders, Tasks, and Projects are on my TODO list.&lt;br /&gt;&lt;br /&gt;Whether this will use openchange for all of that functionality has yet to be decided based off of testig and feature completion.&lt;br /&gt;&lt;br /&gt;Also, I think I should make it clear: the code I'll be working on was started in development around 2007 by Brad Hards and continued by Alan Alvares for his 2008 GSoC project. This WILL be an akonadi resource that talks Extended MAPI/RPC to the Exchange server and DBUS back to the Akonadi session daemon. Where necessary, I might call things in the various libraries from the Samba4 project to mimic an Active Directory backed Exchange client to make my work easier, we'll see if I have to do that or if I can rely on some things from LDAP..... Onwards and Upwards :)&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;With this, I need to stress that it won't be instant progress on this, so please all, be patient :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-3665006071276776993?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/3665006071276776993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/08/answering-questions.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/3665006071276776993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/3665006071276776993'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/08/answering-questions.html' title='Answering Questions.'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-7692720110321047417</id><published>2009-08-17T20:59:00.001-07:00</published><updated>2009-08-17T21:06:43.648-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='PlanetKDE'/><title type='text'>Hello planetkde!</title><content type='html'>This is my first posting on the planet (I hope... the aggregator doesn't seem to be showing my feed.... Here goes crossing fingers....)&lt;br /&gt;&lt;br /&gt;Some people in the community may know me as the guy that likes Perl, Qt, KDE, and does a hell of a lot of IT administration at a very un-KDE job. I've helped out at a few F/OSS related events around the San Francisco Bay Area, including hosting lodging for three of the people that helped at the O'Reilly OSCON event earlier this month.&lt;br /&gt;&lt;br /&gt;A large portion of the stuff you'll read about from my feed will be related to my (mis) adventures with getting KDE integrated with Exchange 2003 and later. I'll get into that a little more in the next post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-7692720110321047417?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/7692720110321047417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/08/hello-planetkde.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/7692720110321047417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/7692720110321047417'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/08/hello-planetkde.html' title='Hello planetkde!'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-1327153193063408748</id><published>2009-08-17T20:36:00.000-07:00</published><updated>2009-08-17T20:46:25.063-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><title type='text'>KDE, PIM, and MAPI</title><content type='html'>Enough acronyms for you? I thought so.... For those that might not have heard, I'll be taking on the challenge of getting KDE PIM fully Exchange capable. This comes from my desire to kill Outlook and Entourage from my life and not force me to use a tool not integrated very well into my desktop of choice (Evolution).&lt;br /&gt;&lt;br /&gt;So what is MAPI, you might ask? Well, MAPI stands for Messaging Application Programming Interface, which is the tier one option if you want a mail client to talk to Microsoft's Exchange server. This interface has gone through a number of changes over the years and thus far has been an elusive target for F/OSS projects. Lately a project called Openchange has been working on a library that much of my work on kdepim will be focused around integrating into KDE. This library covers all of the mess of having to write our own library to get access to these servers. As some know, this library is already used in a native MAPI method in Evolution that was released recently in the routine releases of GNOME. I'll just leverage that work and make KDE just as accessible to Enterprise users stuck in an MS powered shop.&lt;br /&gt;&lt;br /&gt;I'll try to cover all the things I do to make this a reality, so stay tuned, Fun stuff ahead :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-1327153193063408748?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/1327153193063408748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/08/kde-pim-and-mapi.html#comment-form' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/1327153193063408748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/1327153193063408748'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/08/kde-pim-and-mapi.html' title='KDE, PIM, and MAPI'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-2091461636146283503</id><published>2009-08-02T03:18:00.000-07:00</published><updated>2009-08-02T03:20:29.538-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='APP-get'/><title type='text'>APP-Get Progress</title><content type='html'>I've gotten the code for the SourceManager mostly done, need a dumper function at this point and then I can utilise it in app-update. After that LWP code will be high on my list as I add the DownloadManager functions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-2091461636146283503?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/2091461636146283503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/08/app-get-progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/2091461636146283503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/2091461636146283503'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/08/app-get-progress.html' title='APP-Get Progress'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-5177151680468806841</id><published>2009-05-13T00:38:00.000-07:00</published><updated>2009-05-13T00:46:24.409-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun facts'/><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='APP-get'/><title type='text'>Code tally....</title><content type='html'>While this normally falls under the "pissing match" category, I thought this would be fun to show how much code can be shaved off of a project that is written in pure Perl versus C++ and a Shell wrapper. The old genbasedir from Apt-RPM clocks in at 1650 lines of code, not counting the includes in the C++ source files. The NEW genbasedir.pl from APP-Get clocks in at 473 lines of code. A whopping 2/3 code reduction alone. Mind you, I could have cut corners, and trimmed the code down even further, however after looking over the code that genbasedir from Apt-RPM have between the shell script and the two C++ files, there are more than a few areas that look dodgy and lack proper error checking. Tomorrow, I'll move most of the functions from genbasedir.pl to a module to make it unit testable. Stay tuned to further developments :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-5177151680468806841?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/5177151680468806841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/05/code-tally.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/5177151680468806841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/5177151680468806841'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/05/code-tally.html' title='Code tally....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-4382116358707291889</id><published>2009-05-10T14:55:00.000-07:00</published><updated>2009-05-10T15:00:31.891-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='APP-get'/><title type='text'>Reworking genbasedir....</title><content type='html'>To make genbasedir easier to work on in the future (when we move to using some SQL engine for the data store for metadata), I reworked the functions to allow us to use an integer based pkgId instead of using the string name. This should speed up the dependency map functions in app-get considerably when doing package look ups since string comparisons aren't the fastest operations in the world in any language.&lt;br /&gt;&lt;br /&gt;As an aside, I've gotten buy in from Jeff Johnson, the maintainer of the version of RPM at www.rpm5.org to add in some Debian inspired tags to make my work on app-get easier. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-4382116358707291889?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/4382116358707291889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/05/reworking-genbasedir.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/4382116358707291889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/4382116358707291889'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/05/reworking-genbasedir.html' title='Reworking genbasedir....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-6790555166975446745</id><published>2009-05-07T22:46:00.000-07:00</published><updated>2009-05-07T23:34:06.395-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='APP-get'/><title type='text'>New APP in town :D</title><content type='html'>Just an update, I'm working on a new dep solver for RPM and the eventual general successor OPM. The utility is called APP-get, a clone of apt-get that doesn't rely on private API in the underlying package manager to work and crufty code that Apt-RPM does. To get a feel of how APP-get will retrieve the metadata, I've been reimplementing genbasedir.&lt;br /&gt;&lt;br /&gt;At this time, I've much of the new genbasedir written. It writes out a new plain text database format for binary and source package metadata called a lst.db. Each file is a single table of fields delimited by three pipe characters in a row. With this new set of lst.db files, a person can generate the metadata using standard UNIX tools if they so wish (though I don't know why you'd want to, since genbasedir does such a nice job of it :D).&lt;br /&gt;&lt;br /&gt;While writing this, I've been studying the dependency map algorithms used by Apt and SmartPM. Armed with the knowledge of how they determine the dependencies, I should have a fairly easy time of writing the dependency manager in APP-get.&lt;br /&gt;&lt;br /&gt;As I've been writing the code, I'm noting a lot of places that I'll be able to clear out Debian-isms from the design, which makes the codebase and design far simpler. At the same time, I'm seeing features I'd like integrated into RPM5 to make some aspects simpler, such as package priorities.&lt;br /&gt;&lt;br /&gt;In Apt-RPM priorities are implemented as a kludgy list file (rpmpriorities) in /etc/apt/ that is checked for a string representing the name of a given package that uses a YAML-like format that defines packages according to named priorities which are more like the Essential tag in dpkg. I'd like to change this to be INSIDE the package's header to allow distributions to mark certain packages that don't normally have a require against another as Priority: Essential, or Priority: Normal. Also if this was merged into the header of the package, it would allow rpm to gain the ability to stop people from shooting themselves in the foot with rpm -e or app-get remove.&lt;br /&gt;&lt;br /&gt;Well, enough chatter for now. Look forward to more progress on APP-get.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-6790555166975446745?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/6790555166975446745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/05/new-app-in-town-d.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/6790555166975446745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/6790555166975446745'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/05/new-app-in-town-d.html' title='New APP in town :D'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-1462608033073595847</id><published>2009-03-31T23:58:00.000-07:00</published><updated>2009-04-01T00:00:57.878-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><title type='text'>Updating to a new build root....</title><content type='html'>Yes, this is necessary (sadly). GCC 4.1.2 and Binutils 2.17 is fairly old at this point, and isn't safe to build KDE 4 against from what I've found due to linking and visibility bugs. At this point, I'm documenting my work in a script to allow future build roots to be built far faster for the update and security trees that will be following.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-1462608033073595847?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/1462608033073595847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2009/03/updating-to-new-build-root.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/1462608033073595847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/1462608033073595847'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2009/03/updating-to-new-build-root.html' title='Updating to a new build root....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-4533511841240967324</id><published>2008-09-24T23:50:00.001-07:00</published><updated>2008-09-24T23:52:41.045-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><title type='text'>Updates....</title><content type='html'>The build root is coming along, and the AltimatOS Installer is also seeing much needed love. On other fronts, we finally have our registered PEN from the IANA to allow us to create the necessary schema for LDAP in AltimatOS.&lt;br /&gt;&lt;br /&gt;Outside AltimatOS, I've been working a lot lately, which has slowed some things up, but never fear, I will get a release out eventually. :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-4533511841240967324?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/4533511841240967324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/09/updates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/4533511841240967324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/4533511841240967324'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/09/updates.html' title='Updates....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-2757648075384561606</id><published>2008-08-28T00:35:00.000-07:00</published><updated>2008-08-28T00:37:34.618-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><title type='text'>Back in the saddle....</title><content type='html'>It's been a while since I've blogged... Since then, I've gotten a new job and started working on doing updates to the various packages in AltimatOS. Sadly, this means that I need to build a new build root since updating to glibc 2.8 almost killed my install. Let the builds begin!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-2757648075384561606?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/2757648075384561606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/08/back-in-saddle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/2757648075384561606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/2757648075384561606'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/08/back-in-saddle.html' title='Back in the saddle....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-1969101168799846506</id><published>2008-07-22T00:17:00.000-07:00</published><updated>2008-07-22T00:19:26.010-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><title type='text'>Testing. 1, 2, 3....</title><content type='html'>I've finally gotten the last of the package conflicts that APT can detect fixed. Tomorrow will be an installation test into a directory to see if AltimatOS' packages can actually be installed from scratch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-1969101168799846506?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/1969101168799846506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/07/testing-1-2-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/1969101168799846506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/1969101168799846506'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/07/testing-1-2-3.html' title='Testing. 1, 2, 3....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-5079119971360482173</id><published>2008-07-09T12:32:00.000-07:00</published><updated>2008-07-09T12:35:17.097-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Linux programmer for hire...</title><content type='html'>This is one of the few times I'll post a personal message up here...&lt;br /&gt;&lt;br /&gt;As of 11:30AM PDT, I was let go at Google. This means I'm an unemployed Linux coder/systems administrator. If anyone knows of decent employment in the SF bay area, please let me know ASAP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-5079119971360482173?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/5079119971360482173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/07/linux-programmer-for-hire.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/5079119971360482173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/5079119971360482173'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/07/linux-programmer-for-hire.html' title='Linux programmer for hire...'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-2012954488675812830</id><published>2008-05-24T00:02:00.000-07:00</published><updated>2008-05-24T00:04:11.064-07:00</updated><title type='text'>First post while booted into AltimatOS....</title><content type='html'>PAAAAAIIIIIIIIINNNNNNNNNNNNNNNN!&lt;br /&gt;&lt;br /&gt;There be bugs a-plenty. We really need bugzilla up like NOW.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-2012954488675812830?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/2012954488675812830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/05/first-post-while-booted-into-altimatos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/2012954488675812830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/2012954488675812830'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/05/first-post-while-booted-into-altimatos.html' title='First post while booted into AltimatOS....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-2510557069501934158</id><published>2008-05-11T15:39:00.000-07:00</published><updated>2008-05-11T15:47:03.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><title type='text'>I can haz workz GCC...</title><content type='html'>For the last week, I have been fighting against the GNU Compiler Collection and MJPEG Tools. Seems that there are two major bugs in GCC 4.1.2 20070110, both related to C++ code.&lt;br /&gt;&lt;br /&gt;One is a visibility support bug, where the compiler will erroneously mark visible symbols hidden, and the other is a templating bug where redefinitions will cause an Internal Compiler Error. While the first bug would likely have caused my KDE builds to be broken, the second was blocking building kipi-plugins, since mjpegtools is a dependancy on it and does some strange redefinitions to work around a bug in the GNU Debugger.&lt;br /&gt;&lt;br /&gt;Happily, after updating GCC to the 20070305 revision (which techinically updated us to the unofficial 4.1.3 release of GCC) mjpegtools and others seem to build as they should.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-2510557069501934158?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/2510557069501934158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/05/i-can-haz-workz-gcc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/2510557069501934158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/2510557069501934158'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/05/i-can-haz-workz-gcc.html' title='I can haz workz GCC...'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-9007879801688022240</id><published>2008-04-16T23:21:00.000-07:00</published><updated>2008-04-16T23:28:58.206-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cranky Coder'/><title type='text'>Adventures in Packaging....</title><content type='html'>RPM hasn't changed much externally to the user since 1996 when it was first released. Nor has it changed much for people wanting to package up software with it. Internally however, it has changed a great deal, especially with how it discovers dependencies.&lt;br /&gt;&lt;br /&gt;As time has gone on, RPM has become more and more aggressive in discovering what dependencies a package has, including it's calls to GNU only features in the C library. This wouldn't be a problem if your C library was from before 2.5 if you had packages that had been build by both RPM 4.4.6 and 4.4.8, however this is not the case on AltimatOS; we use glibc 2.5.&lt;br /&gt;&lt;br /&gt;Because of this, I get to wait on glibc to build &lt;b&gt;&lt;i&gt;again&lt;/i&gt;&lt;/b&gt;. This does not make me a happy panda....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-9007879801688022240?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/9007879801688022240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/04/adventures-in-packaging.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/9007879801688022240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/9007879801688022240'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/04/adventures-in-packaging.html' title='Adventures in Packaging....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-8495411881103749095</id><published>2008-04-09T20:29:00.000-07:00</published><updated>2008-04-09T20:37:18.069-07:00</updated><title type='text'>Same old task...</title><content type='html'>For a few months I've ignored the state of our packages for AltimatOS. Well, today that changes. We're not far from a public beta and we've yet to get KDE built, let alone fixing any broken dependencies in the repository, which would make it near impossible to release, let alone install.&lt;br /&gt;&lt;br /&gt;As I'm currently the only person on the project, I've turned my attention from the installer to work on our packages. So, at this moment, I'm building KDE 3.5.9 with a wealth of patches to make the experience a little better for our users.&lt;br /&gt;&lt;br /&gt;This will take a while to sort out the last of the packages before I can get back to working on AI unfortunately. Due to the state of the repository and AI, etc. I now implore the free software community: if you want to help; have ever wanted to work on a Linux distribution, &lt;i&gt;please&lt;/i&gt; get in touch with me at greeneg aT altimatos DoT com to volunteer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-8495411881103749095?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/8495411881103749095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/04/same-old-task.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/8495411881103749095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/8495411881103749095'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/04/same-old-task.html' title='Same old task...'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-7857739602949166286</id><published>2008-04-02T23:08:00.000-07:00</published><updated>2008-04-02T23:14:30.148-07:00</updated><title type='text'>Looking good....</title><content type='html'>I've almost all of the code done for the user interface of AI, and at this point can focus on one of the more important features for release of the installer: kickstart mode.&lt;br /&gt;&lt;br /&gt;The back end of the installer is intended to write the kickstart file as it goes so we can just read in the actions requested and act on them in the later portions of the installer. This also allows users to clone systems easily and effectively by installing once on a canary and then copying the kickstart file to a pen drive and running the installer on the new box with the pen drive attached.&lt;br /&gt;&lt;br /&gt;Stay tuned for updates on this, since this shouldn't take too long to add in. ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-7857739602949166286?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/7857739602949166286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/04/looking-good.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/7857739602949166286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/7857739602949166286'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/04/looking-good.html' title='Looking good....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-2955015453089332595</id><published>2008-03-30T03:17:00.000-07:00</published><updated>2008-03-30T03:53:43.640-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Art Contest'/><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><title type='text'>The AltimatOS Logo Contest</title><content type='html'>OK, as people probably have noted from the logo in the upper corner of AI, the temp logo I threw together in 20 minutes is nothing more than Konqueror's Crystal Icon with AltimatOS in ElsiaInline, Thin font. This has been fine for a preliminary placeholder logo, but as I am getting closer to completing AI's user interface and finishing the packaging needed to get AltimatOS ready for it's preliminary beta, I feel it's not enough.&lt;br /&gt;&lt;br /&gt;Because of this, I'm pleased to announce the AltimatOS Logo Contest! We're looking for a logo that emphasis the beauty and extensibility that makes up our OS. While some would throw Tux in there, please don't. We are not designing another Linux, but a coherent operating system; one designed for the average user, not the tech.&lt;br /&gt;&lt;br /&gt;So you may ask, what's in it for me as the artist?&lt;br /&gt;&lt;br /&gt;Well, the grand prize winner will walk away with both an ASUS Eee PC and every release of AltimatOS' planned commercial releases for free. This means that we'll send you one of the first discs mastered of the final releases at &lt;u&gt;each&lt;/u&gt; release, without charge for shipping. The second and third place submissions will be given the first release edition of AltimatOS Desktop Edition on DVD for free.&lt;br /&gt;&lt;br /&gt;And now for the rules:&lt;br /&gt;1. All artwork submissions must be original artwork, without exception.&lt;br /&gt;2. We require all submissions to be in digital formats (SVG, PNG, etc.)&lt;br /&gt;3. Vector images are preferred.&lt;br /&gt;4. If your work has been selected as the winner, it becomes the exclusive property of YggdrasilSoft, LLC. At that time, we require that all original sources for the artwork be sent to us and copyright and trademark rights be transferred to us. This also means that you may not in anyway keep copies of the artwork without prior consent of YggdrasilSoft, LLC.&lt;br /&gt;5. If your artwork is not selected as the winning piece, we will destroy our copy to ensure that we do not violate your rights to the artwork.&lt;br /&gt;6. During the contest you will grant us the right to place your artwork on display on our website(s) for open commentary.&lt;br /&gt;7. The artwork should match the style of the Crystal Icon Set as designed by Everaldo for the KDE project.&lt;br /&gt;8. This contest will run until July 4th, 2008. At the end of the contest, the core team for AltimatOS will judge the artwork based on the effectiveness of branding and beauty to select the new logo for our operating system.&lt;br /&gt;&lt;br /&gt;There, done with the stuffy part! Happy vectoring! :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-2955015453089332595?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/2955015453089332595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/03/altimatos-logo-contest.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/2955015453089332595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/2955015453089332595'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/03/altimatos-logo-contest.html' title='The AltimatOS Logo Contest'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-8165072336321807292</id><published>2008-03-29T16:21:00.000-07:00</published><updated>2008-12-10T10:46:26.211-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='PerlKDE'/><title type='text'>Progress</title><content type='html'>The simplicity of Qt and KDE never ceases to amaze me... With far less lines of code than if I'd been using something like WxWidgets or MSVC, I've a rich interface for an application. See the screenshots:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x4PyKCxI8lM/R-7QmCjCr6I/AAAAAAAAABc/LXUMJdgufgo/s1600-h/ai-intro-small.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x4PyKCxI8lM/R-7QmCjCr6I/AAAAAAAAABc/LXUMJdgufgo/s400/ai-intro-small.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5183309573087473570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_x4PyKCxI8lM/R-7QmSjCr7I/AAAAAAAAABk/Dc-s0jovc8k/s1600-h/ai-licensing-small.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_x4PyKCxI8lM/R-7QmSjCr7I/AAAAAAAAABk/Dc-s0jovc8k/s400/ai-licensing-small.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5183309577382440882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_x4PyKCxI8lM/R-7QmijCr8I/AAAAAAAAABs/NrANskAsICs/s1600-h/ai-tz-small.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_x4PyKCxI8lM/R-7QmijCr8I/AAAAAAAAABs/NrANskAsICs/s400/ai-tz-small.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5183309581677408194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x4PyKCxI8lM/R-7QnCjCr9I/AAAAAAAAAB0/5csCrgliT04/s1600-h/ai-options-small.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x4PyKCxI8lM/R-7QnCjCr9I/AAAAAAAAAB0/5csCrgliT04/s400/ai-options-small.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5183309590267342802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_x4PyKCxI8lM/R-7QnSjCr-I/AAAAAAAAAB8/3MHKsIeeivg/s1600-h/ai-partitioner-small.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_x4PyKCxI8lM/R-7QnSjCr-I/AAAAAAAAAB8/3MHKsIeeivg/s400/ai-partitioner-small.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5183309594562310114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x4PyKCxI8lM/R-7RTCjCr_I/AAAAAAAAACE/qNiIVhJgk60/s1600-h/ai-disktasks-small.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x4PyKCxI8lM/R-7RTCjCr_I/AAAAAAAAACE/qNiIVhJgk60/s400/ai-disktasks-small.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5183310346181586930" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_x4PyKCxI8lM/R-7RTSjCsAI/AAAAAAAAACM/CXSRxN1jwOY/s1600-h/ai-progress-small.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_x4PyKCxI8lM/R-7RTSjCsAI/AAAAAAAAACM/CXSRxN1jwOY/s400/ai-progress-small.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5183310350476554242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_x4PyKCxI8lM/R-7RTyjCsBI/AAAAAAAAACU/CzaRThwUSbQ/s1600-h/ai-closing-small.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_x4PyKCxI8lM/R-7RTyjCsBI/AAAAAAAAACU/CzaRThwUSbQ/s400/ai-closing-small.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5183310359066488850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As can be easily seen, I've a fair amount done, and these aren't even &lt;b&gt;recent&lt;/b&gt; screenshots. On the backend, we're likely going to be using INI and YAML for kickstart files. INI for the main portions and YAML for the partitioner though that is still under consideration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-8165072336321807292?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/8165072336321807292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/03/getting-to-root-of-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/8165072336321807292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/8165072336321807292'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/03/getting-to-root-of-it.html' title='Progress'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x4PyKCxI8lM/R-7QmCjCr6I/AAAAAAAAABc/LXUMJdgufgo/s72-c/ai-intro-small.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-3721807697637144859</id><published>2008-03-28T01:31:00.000-07:00</published><updated>2008-03-28T01:38:19.134-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cranky Coder'/><title type='text'>Syntax bitches!</title><content type='html'>Ok, I guess I need to read the docs on a class &lt;u&gt;BEFORE&lt;/u&gt; just assuming that it'd work the way other Qt/KDE classes work.... Case and point KListViewSearchLineWidget (say that ten times fast, I dare you...)&lt;br /&gt;&lt;br /&gt;Unlike most classes in KDE which take the parent as the first entry, it takes the KListView that the search will be tied to. This is, in my opinion, the epitome of inconsistent code design :( After spending two days getting that widget to display and run properly, I finally broke down and read the documentation.&lt;br /&gt;&lt;br /&gt;Yeah, yeah... I should have read the fine manual earlier, but I had gotten lulled into a false sense of thinking that "this is KDE code, it'll be logical with how it handles constructing the object and it will be &lt;u&gt;consistent&lt;/u&gt;". This learns me one....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-3721807697637144859?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/3721807697637144859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/03/syntax-bitches.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/3721807697637144859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/3721807697637144859'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/03/syntax-bitches.html' title='Syntax bitches!'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-5048988670312130880</id><published>2008-03-13T20:54:00.000-07:00</published><updated>2008-03-13T21:00:52.304-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><title type='text'>Making my projects known</title><content type='html'>Today I finally updated the www.kde-apps.org entry for Phinos (Phinos Installs the OS), which died a grueling death when I was so rudely shoved out of the PhoeNUX OS project. Now, it is reborn as AI, the AltimatOS Installer.&lt;br /&gt;&lt;br /&gt;As before with Phinos, I aim to allow AI to be distro agnostic, with welcomed help from the community. The code is much cleaner now, whereas before it was a wreck being my second major project in PerlQt.&lt;br /&gt;&lt;br /&gt;If you are interested in taking a look at the sources (as there hasn't been a finalized release yet) see &lt;a href="http://svn.tabris.net/repos/ai/"&gt;http://svn.tabris.net/repos/ai/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-5048988670312130880?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/5048988670312130880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/03/making-my-projects-known.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/5048988670312130880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/5048988670312130880'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/03/making-my-projects-known.html' title='Making my projects known'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-6194505755424209253</id><published>2008-03-13T18:54:00.000-07:00</published><updated>2008-03-13T18:58:12.910-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rants'/><title type='text'>On the act of moving....</title><content type='html'>Moving from one place to another might seem like such a nice thing to do, however at this point, I'm finding that I'm hating the "doing" aspect of it more and more...&lt;br /&gt;&lt;br /&gt;Today I spent the day cleaning the old apartment just so I can get the entire 3500 USD deposit back from them. This is only _one_ of many aspects that I really loath in the process. The packing, unpacking, breaking stuff in the move, eating up my time.....&lt;br /&gt;&lt;br /&gt;You'd think that after two cross continental moves, and 12+ moves while at college, I'd be used to it somehow. Guess I'm just getting tired of it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-6194505755424209253?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/6194505755424209253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/03/on-act-of-moving.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/6194505755424209253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/6194505755424209253'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/03/on-act-of-moving.html' title='On the act of moving....'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-9188000423110555304</id><published>2008-03-11T19:45:00.000-07:00</published><updated>2008-03-11T19:48:27.442-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><title type='text'>w00t! Qt::Process FTW!</title><content type='html'>I've worked on getting the backend to CuteDisk as used by AI, AltimatOS' Installer, to use Qt::Process for grabbing info from the OS for the disks, and Holy Mother of God is it fast! No more UI blocking, no more nashing of teeth trying diligently to get Proc::Simple to behave while interacting with RPM, just the snappy processing of commands :D&lt;br /&gt;&lt;br /&gt;As you can clearly see, I'm geeked :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-9188000423110555304?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/9188000423110555304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/03/w00t-qtprocess-ftw.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/9188000423110555304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/9188000423110555304'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/03/w00t-qtprocess-ftw.html' title='w00t! Qt::Process FTW!'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4884232226111809683.post-5500142980363528147</id><published>2008-03-10T22:02:00.000-07:00</published><updated>2008-03-10T22:08:43.634-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AltimatOS'/><title type='text'>Progress</title><content type='html'>I've been working on AltimatOS' installer and website over the last few evenings and things are shaping up. :)&lt;br /&gt;&lt;br /&gt;Since talking to ossi, I've managed to get QProcess to behave with PerlQt reasonably well. This has allowed me to finally setup a fair amount of the CuteDisk backend code, and keep the AI user interface free from blocking.&lt;br /&gt;&lt;br /&gt;On the web front, we've actually gotten a decent amount done. This allows me to focus my attention on AI, PHADS, and Foreman Build Daemon so we can get things done for our goal of an early May installable beta of the OS for people to start banging on. See &lt;a href="http://www.altimatos.com/"&gt;www.altimatos.com&lt;/a&gt; for more details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4884232226111809683-5500142980363528147?l=greeneg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greeneg.blogspot.com/feeds/5500142980363528147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://greeneg.blogspot.com/2008/03/progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/5500142980363528147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4884232226111809683/posts/default/5500142980363528147'/><link rel='alternate' type='text/html' href='http://greeneg.blogspot.com/2008/03/progress.html' title='Progress'/><author><name>Gary Greene</name><uri>https://profiles.google.com/112018728789370905472</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-wxxTMGrTs_w/AAAAAAAAAAI/AAAAAAAAAgM/HZ9luDiW-f8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
