Monday, November 17, 2008

New Site Launched - St. Mary's

The St. Mary's Catholic Church website was a volunteer project that I did. Serving the greater Mid South with it's numerous ministries I wanted to give them a professional web presence. The site utilizes the Zend Framework to access Google services as well as custom helper classes that I wrote to simply rendering.

Enjoy.

http://www.stmary-memphis.com/

Friday, September 5, 2008

Design Overhaul

I finally got a chance to redesign www.randomthoughtprocess.com.  The old design had been sitting out there for 5 years.  I minimalised the design, made it pure CSS and got rid of content that wasn't be accessed.  The main purpose of the site is to showcase more abstract work.

I also converted www.mckinna-wiles.com over from information and media about my wife and I to a site dedicated to our daughter McKinna Wiles.

Monday, August 25, 2008

Label Me

Of the API features that Google offers for their Blogger service the one that I was most surprised to see missing is a method to retrieve all the tags(category) for a blog. Though listed in their query parameters is the syntax for search by tag/category, the "cloud" was missing. The below code takes care of this missing feature.

::NOTE::
This class will be rolled into my helper classes soon.

class CW_Blog_Util {
const BLOGGER_URL = 'http://www.blogger.com/feeds/blogId/posts/default';

/**
* associative array holding blog tbl properties
*
* @var array
*/
private $_blogs = array();

/**
* blog title
*
* @var string
*/
private $_title = "";

private $_gDataQuery = null;

private $_gQuery = null;

public function __construct() {
$this->_gQuery = new Zend_Gdata();
}

public function getAllEntries() {

$query = $this->_getGdataQuery();
$feed = $this->_gQuery->getFeed($query);

return $feed;
}

public function getLatestBlog() {

$query = $this->_getGdataQuery();
$feed = $this->_gQuery->getFeed($query);

return $feed->current();
}

public function getBlogListByTag($tag) {

$query = $this->_getGdataQuery();
$query->setCategory($tag);

$feed = $this->_gQuery->getFeed($query);

return $feed;
}

public function getBlogLabels() {

$labels = array();

foreach ($this->getAllEntries() as $attr) {

for ($i = 0; $i < count($attr->category); $i++) {
$labels[] = $attr->category[$i]->term;
}
}

return array_count_values($labels);
}

private function _getGdataQuery() {
$this->_gDataQuery = new Zend_Gdata_Query(self::BLOGGER_URL);

return $this->_gDataQuery;
}

}

// Usage
$blogs = new CW_Blog_Util();

foreach ($blogs->getBlogLabels() as $label => $count) {
print "Label {$label}
";
}

Tuesday, August 19, 2008

McKinna Wiles is Reborn

In anticapation for my daughter, McKinna Wiles, birth I have revamped http://www.mckinna-wiles.com/ using Wordpress as the CMS and a modified theme from wpzone.net.

Enjoy

Monday, August 4, 2008

Access XML Nodes From Namespaces With Zend Framework

One of the requirements for a project that I am working on is that a "weather" module display on on of the main pages.  At first glance this should be pretty easy.  While working on it I noticed that I wanted to access more of the information that the feed had available.  I found plenty of tutorials on how to access the node values using SimpleXML, but I couldn't find what I was looking for utilizing Zend Framework.

After a quick response from the mailing list and references to the PHP online manual I came up with the solution.

Thanks to Pádraic Brady for the assistance.


Zend_Feed::registerNamespace('yweather','http://xml.weather.yahoo.com/ns/rss/1.0');
Zend_Feed::registerNamespace('geo','http://www.w3.org/2003/01/geo/wgs84_pos#');

$feed = Zend_Feed::import("http://weather.yahooapis.com/forecastrss?p=38105");

// Conditional Codes: http://developer.yahoo.com/weather/#codes
$condition = $feed->current()->{'yweather:condition'};
$text      = $condition->getDOM()->getAttribute('text');
print "Text {$text}
";

$astronomy = $feed->{'yweather:astronomy'};
$text      = $astronomy->getDOM()->getAttribute('sunrise');
print "Sunrise Attribute {$text}
";
          
$lat  = $feed->current()->{'geo:lat'};
$text = $lat->getDOM()->nodeValue;
print "Latitude {$text}
";

Friday, July 25, 2008

Come Out, Come Out Where Ever You Are

I made an update to the helper classes and comitted them to the changes in subversion and download version.  If a photo has been tagged with a location then the GeoWhere node is returned as a property.

Monday, June 30, 2008

Mi Picasa Framework, es su Picasa Framework

One of the best features that the Zend Framework offers is it's interface utilities to many of Google's webservices. Namely Picasa and YouTube. However, in my ever continuing effort to simplify my development tasks I started writing some helper classes that would make it more intuitive to retrieve some basic information. For example, give me all the Picasa galleries for the user kwylez or give me the first 15 YouTube videos in the entertainment category.

While this task is fairly easy with the ZF APIs the method names aren't always intuitive. This is where my little project began, as most do. Having a task that one would like to accomplish easily.
I have committed the first version of the helper class framework to subversion as well as a file download.

When prompted for a username/password when checking out of subversion the username is anonymous and password is empty.

The zip file/repository includes:
  1. Custom helper classes
  2. Usage examples

Class features:

  1. Zend Framework style directory structure for easy autoloading
  2. Picasa interface that retrieves meta information on author, galleries, and images
  3. YouTube interface that retrieves information based upon a user or category

Dependencies

  1. Zend Framework 1.5

Friday, March 14, 2008

CMS(pring) Cleaning

It seems that Joomla has won over the hearts and content management needs of two of my clients. I am currently converting over two static sites over to Joomla 1.5. Though Joomla is definitely my CMS flavor of choice it doesn't always fit an organization or person's web needs so I would recommend Drupal and Wordpress. I have had experience working with both and can't say enough praises about both of them. Not only are they FREE, but provide a flexible framework that satisfies 80% of a user's or organizations needs out of the box. The remaining 20% is fulfilled by a large online development community as well as their tried-and-true API.

So before someone tries to sell you on a monolithic, bloated CMS that constantly needs paid support, and costly upgrades see what an open source CMS can do for you.

Friday, February 22, 2008

Search and You Shall Find

Development has begun on a customizeable, portable search application for my clients. The main benefit of the application is that it can be tuned to many kinds of domain-specific search applications (e.g., corporate, personal, internet, vertical search, general search) as well as containing search engine tools such as a crawler. The application will be utilizing the recently released Zend Lucene Search component and Lucene.

Though there will be many out of the box features, the goal is to keep it as simple as possible so if customizations are required, which almost always are, then the code can be extended easily to fit a clients needs.

Turn That 404 Into a WOW

We have all seem them. Either the page has been moved, never been there or a weary developer has "fat-fingered" the text to their myspace page, but that is no reason to have a bad experience to go along with your request.

Worth A Read

Most industries have journals/periodicals that deal with the current trends in that particular industry. Unfortunately, I have been hard pressed to find the quanity of quality reading material that other industry professionals enjoy, i.e. Health, Financial, and Fashion. However, the few gems of literary noting are AIGA, php|arch and Practical WebDesign (from the makers of .net magazine). In the summer issue of Practical WebDesign(issue 166) some of the most note worth articles are "Build and eBay Empire", "Design Effective Layouts", "Build a Social Network".

Caching On RSS

We hold these truths to be self evident...you WILL pay taxes, you WILL eventually die, and the customer is ALWAYS right. It doesn't matter how strong you are eventually your body will give out, not matter how rich and powerful you are, the IRS just wants (and will get) its cut and finally not matter what business you are if the customer isn't happy then your business will fail.

What makes our customer's happy is having a website that performs well. This usually falls into different categories. It must have good design, usability and backend performance. In corywiles.com's ongoing effort to make the website and our client's webites perform as best as it possibly can I have added a new feature to the RSS feeds at the bottom of the site. (Made possibe by our good friends over at Zend)

Though the concept of caching has been around as long as computing itself, I have seen too many times where frequently requested content/widgets/applications are not cached. Don't be a victim of poor website performance. Insist that your web developer has cache on hand.

Code Unlimited is Live

There has been a delay of updates lately because I am have been working on finishing up a website for a client. The goal for the client was to have a site that would promote their medical coding school. The site is a large term project that is going to go through three phases.

The first phase (which is now live) is to establish a web presence with prominently static content for students (past, current, and future). The second phase is to integrate feature rich interactive applications that will aid instructors and students during their courses. These applications include, but are not limited to, course material download, online form registration as well as student account management. The final phase is slated to have all the courses available online as well as added functionality to the student account management area to allow to see their current grades and take tests online in addition to student collaboration.

View Codes Unlimited

Practice What You Link

I have noticed a growing trend of companies to create positions to handle the strategic direction for search engine optimization. (Man that was mouthful). Most small business, like the ones I mostly do business with, can't afford to hire someone fulltime to handle this responsibility. So, they outsource these duties to a consultant. More times than not, the consultants themselves can't tell you strategies or tatics that you can't find yourself with a little bit of research and a lot less cost.

One of the common tips that you will come across is making all of your URLs SEF (Search Engine Friendly). Like most things computing, SEF can have different connotations. The most basic of which has to do with the removal of query strings. Let's look at a common scenrio:

You have a gallery of images that have mulitple pages. The url for the first page might be, http://somehost.com/portfolio/. When search engines crawl through your site they will index the content found on that page. When the user clicks on page 2 of your portfolio site then the url might look something like this: http://somehost.com/portfolio/index.php?start=2&page=2. Though that link has different content, it never gets index because Google, Yahoo!, etc. see the same page (index.php) linked again.

Solution:
Using mod_rewrite (Apache) a developer can 'reconstruct' the urls to make sure that crawlers/spiders will index the content that is found on these subsequent pages. The url for the above example might look like this: http://somehost.com/portfolio/start/2/page/2.

Like anything else search engine optimization can get quite detailed and fine grained, but so can mathematics, but most people are very successful knowing the basic arethemitc, not quantum physics.

For further information on basic tips to help optimize your current site please visit any of the links below.

The Beginners Guid to Top Google Rankings

Pagination Gallery Examples and Good Practices

Google

Search Engine Optimization

Wednesday, February 6, 2008

And the Sites Keep Coming

It is important to always keep the content of your site updated and fresh. Though it has been a little while since I have last updated the news I have plenty of updates today. Since our last post many exciting things have happened in the wide world of the web development.

The great guys and gals over at Zend have release version 1.5 of their framework, which is powering more and more of my sites including this one, as well as the release of Joomla! 1.5. In my opinion if open source web projects could be super heoros then they would be Batman and Wolverine...respectively.

I have been very busy finishing up two sites as well as providing collaboration and development support for another. For further details of the sites please check out the updated portfolio.