Facebook Page Badge Builder

Over the weekend I made a little app that lets you create badges for your facebook pages. It’s a utility app that beats the tedious task of creating a badge yourself.
To use it you must have a facebook account (duh!) and then goto http://pagebadge.peerglobe.com. Add the application and after that you’ll know what to do. You can also just click on this badge to go the application site.
Let me know if you have any suggestions or feedbacks so I can improve the app better. Enjoy.
2008 Vancouver Joomla Day Announcement
I’ve posted an announcement regarding Vancouver first Joomla day held at Vancouver Public Library on June 14th. Peerglobe is one of the organizers of this event, and I would like to invite everybody to come and have fun with us in this event.
Check out the event details here or check the offical event page at http://vancouver.joomla.ca
Wordpress Camp Event
The event was a blast. About 80 wordpress enthusiast attended the event.
Thanks to everybody who attended this event. Check out Tazzu Blog to read more details about the presenters and their presentations.
I’ve uploaded the pictures from this event to the Peerglobe facebook page. These photos are taken by Amanda Abrams.
Again, thanks to our sponsors for helping with this event.
WordPress is a state-of-the-art publishing platform with a focus on aesthetics, web standards, and usability. WordPress is both free and priceless at the same time. This project is maintained and funded by www.Automattic.com
www.wordpress.org
Invoke is an Interactive Agency that specializes in transforming ideas into tangible results executed within a complete interactive brand strategy. As a full service agency, they ensure you receive the best of everything - from a world class website to effective marketing campaigns.
www.InvokeMedia.com
Culinary Copik Multimedia is a distinctive company, offering reliable and cohesive Visual Communications for the Food and Beverage industry.
http://tinymassive.com
Culinary Copik Multimedia is a distinctive company, offering reliable and cohesive Visual Communications for the Food and Beverage industry.
www.culinarycopikmultimedia.ca
BlueFur.com provides fast, reliable and affordable hosting for websites across the globe through advanced technology and knowledgeable support team.
www.bluefur.com
Citizens Bank is a virtual bank owned by Vancity. Hi interest savings, low/no fee chequing and operates for the triple bottom line: people.planet.profits. It embeds corporate social responsibility into all aspects of its business, and gives a portion of its profits back to the community.
Akelos Framework
Being from Ruby on Rails background, I can’t help to compare other frameworks that I use to RoR. Maybe this is a bias comparison since some frameworks are built with different purpose in mind.
But there are some techniques that can be used within a framework that is independent of the overall purpose of the framework. One example is implementation of ORM that has been achieved beautifully in ActiveRecord in RoR. There are more such as MVC Design and agile development Techniques such as generators and helpers
Since I started developing in Joomla and Drupal, I’ve been feeling very frustrated with a lack of good ORM in PHP. So far the popular ones are Propel and Doctine. Symfony agile framwork is based on Propel. But the problem with mentioned ORMs is that there too many configurations to be done before you get to enjoy ORM in your applications.
Yesterday I came acorss Akelos Framework. I haven’t tested Akelos throughly but what I found very intriguing is that they followed RoR agile techniques very closely. Moreover their implementation of ORM is very similar to ActiveRecord in RoR. They even solved the model association meta programming done in RoR ActiveRecords such as ‘has_many’ or ‘belongs_to’ for PHP. checkout http://wiki.akelos.org/many_to_many_without_habtm
That’s Very nice.
Tazzu Networking presents First Wordpress Camp in Vancouver

Come and checkout the first Vancouver Wordpress Camp on Wednesday April 30th at the NetworkHub. This event is hosted by Tazzu Networking, a community for knowledge.
In this event you can meet writers and journalists who use blogs everyday. This is a good opportunity to learn more about blogging tips and how-tos.
Moreover you can learn more about Wordpress, a popular open source blogging application. Some bloggers will share their experience with Wordpress and show how to customize own blog using Wordpress plug-ins and other embed-able web widgets.
You can learn about the blog at the Tazzu’s Blog.
AIR, Flex, Ruby On Rails, Joomla Get Together
We had our second AIR, Flex and Ruby On Rails get together this week on Wednesday. About 20 people from different technology backgrounds attended the event. The event was very informative and surprisingly provided a warm and friendly networking environment.
Our first speaker was Peter Armstrong the co-founder of Ruboss Corporation and co-creator of Ruboss Framework. Ruboss Framework is a Ruby on Rails plug-in that allows smooth integration of a Flex application with a Ruby on Rails RESTful framework.

What’s REST ?
REST is a software architecture design that describes objects as resources identified by unique URIs whose state can be altered by different actions expressed as verbs. For example lets consider a printer on the network as an object and the unique URI that identifies the printer is, for example, /printer/1 . The state of the printer can be altered by issuing different commands to the printer through its URI. We can ask the printer to print something by saying PRINT ‘x’ /printer/1 or ask the printer to reset itself by saying RESET /printer/1. This method of applying different verbs to a single unique URI to accomplish different results is the principal of the REST design.
On the Web, Resources are described by URLs and the actions that can be applied to these resources are defined as GET, POST, DELETE and PUT. Since the current web browsers only implement two of these actions POST and GET, in order to fully implement the REST design, the back-end framework must handle all four verbs and the mapping of URL to the resources themselves. In Rails 1.x a plug-in called Simply RESTful would extend the framework by handling all four verbs using the “_method” parameter and mapping controllers to the resources in the Route Class. In Rails 2.0 this feature is part of the framework core.
In order to benefit from the REST design within the Flex Application, Ruboss framework creates a service layer between the flex objects and web services that binds a flex object to a remote resource and provides ability to perform REST actions on the object without manually hand-coding resource’s URI and the “_method” parameter. You can learn more about Ruboss framework at http://code.google.com/p/ruboss/.

After a short break Gerald Bauer presented his latest creation, S9 slide show, a free web alternative to PowerPoint and Keynote in Ruby. It’s a simple ruby program that turns text written in wiki style into HTML slide pages. This is a great tool to turn a collaboratly witten wiki into a slide show. You can download and try S9 at http://slideshow.rubyforge.org/tutorial.html or check out Gerald’s blog.
I’ve posted the event photos at facebook and flickr. Be sure to check them out. Thanks to everyone who attended the event and for those who couldn’t make it for this one we’ll be having more events later on.
College Kids Who Writes Cool Apps
I came across an article about Douglas Merrill, the Google’s cheif information officer, and his recent interview with Wall Street Journals. You can read this article here. Basically instead of forcing employees to only work on certain technologies, he encourages Google’s employees to work on whatever technology they want. After reading this I found it really odd that companies don’t let their employees to choose the technology that they want to work on. But then I got reminded of the time that I used to work in Canada Revenue and how restricted we were in using technology. It’s very sad to be a developer and your access to internet is only through a single common web kiosk shared by other people.
What it interested me the most was the comments left by some people particularly one of them. I image captured the comment and posted below. Feel free to read it

It is very interesting to note that most of the technologies we deal with everyday like Google, Flickr, Facebook, Microsoft, Mac and so many more are in fact developed by college kids or even high schools kids who changed the world just by writing cools apps.
What can AIR mean for the Tech Indsutry ?

Adobe describes AIR as a runtime that lets developers use proven web technologies to build rich Internet applications that deploy to the desktop and run across operating system.
Developers can use AIR to build rich cross-platform desktop applications. In addition it has powerful and easy to use web communication support libraries, so that applications can easily interact with the back-end web servers. And I think that’s the key part of the AIR technology. It is meant to be used as an extension of our today’s web not a replacement.
Consider this example
I love Google Apps. And regardless it high popularity, I don’t think Microsoft Office can offer what Google Apps offer:
- It’s free to use
- The documents are stored online so it’s accessible anywhere
- The documents can be shared among others using only emails.
- It has very powerful collaboration feature that allows for many to work on a single document at once.
The only issue is the lack of richness of the document’s format compared to its desktop rival and that’s because of styling restrictions posed by HTML and CSS. But now Google can offer the same level of user interaction or even more by extending their office suit to desktops using adobe AIR. Not only it would cost Google a fraction of what it’s cost Microsoft to build a rich office suite (AIR allows for the existing web technologies to be used to develop multi-platforms desktop applications), but it can still maintain the 4 important advantages Google has against Microsoft office product.
This example merely shows the power of extending the web to desktop.
Build Joomla 1.5 MVC The Ruby on Rails Style
This articles explains the a ruby on rails plug-in I developed that utilizes some features of Ruby on Rails such as Plug-ins, Rake, Generators, Migration and ActiveRecord to speed up some development time for Joomla projects.
This is not a first time that someone used Ruby related tools for other projects than ruby. Capistrano, the web application deployment utility written in Ruby, has been used for Joomla sites deployments. You can read about it at http://www.adaruby.com/2007/08/14/deploying-joomla-using-capistrano-20/
Why I made this tool
I am a ruby on rails developer who has started developing in Joomla 1.5 Content Management System. Joomla 1.5 has a MVC-based architecture very similar to one in Ruby on Rails. It’s very clean and understandable. The only problem is that much of the setting up and packing procedures requires manual labor. It is possible to use ant to do some packaging but the level of automation acquired using ant is limited compared to rake (make in ruby) and in addition in ant you must write long XML scripts. Yak.Moreover Ruby On Rails comes with pre-packaged generating tools to create empty skeletons for controllers, models and views which can be used for Joomla projects with some modifications. In addition, it is possible to use Rails Migration class to create the install and uninstall SQL files. That means instead of writing syntax-error prone SQL statements, you can write them in plain ruby and it gets translated to SQL statements.Who can read this
I made the following assumptions about the your level of knowledge in Ruby on Rails and Joomla.
- You are a rails developers who has recently turned to Joomla 1.5
- You know how to set up a rails environment and make it work with MySQL
- You know the ruby scripting language and Rails and have good understanding about some rails tools and elements such as Plug-ins, Rake, Generators, Migration and ActiveRecord
- You know about Joomla 1.5 and know how to set it up with Apache, MySQL
- You have a good understanding about Joomla extensions like components, modules and plug-ins and you are familiar with new Joomla 1.5 MVC framework
Lets start
Download Joomla 1.5. and Install and set it up. Checkout the Joomla site for installation instruction.
Download rails and set it up. check out http://rubyonrails.org for instructions.
First lets create a rails project and call it joomrails. In shell we type
rails joomrails
This creates a rails project named joomrails. Then let’s install the joomrails plugin the googlecode repository
cd joomrails
./script/plugin install http://joomrails.googlecode.com/svn/trunk
The joomrails rails plugin gets installed. As the result some of the rails default directory like public, app gets removed. It’s okay since we are not working on a rails project. Now Lets create a Joomla Wrapper within our rails project.
./script/generate joomla /path/to/your/joomla/project

This creates three directories
japp -> soft link to your joomla project directory
jextensions -> holds your joomla extensions
jpkg -> hold the packaged extensions
Everything is set. Let’s create a component named web_realtor
./script/generate jcomponent web_realtor
this creates the following joomla component skeleton

As an example let’s create a controller for the admin site and name it property_manager.
./script/generate jcontroller admin web_realtor poperty_manager
This creates a component controller and view skeleton named property_manager with all the necessary files and folders

Same way you can create models. For example to create a property model we type
./script/generate jmodel admin property
Now lets build and package the component, we type
rake com:webrealtor:build
this builds and packages the components and places it in the pkg folder. This also iterates through the component folder and creates a manifest and places within webraltor.xml file which is the component install file.
There is more to joomrails than just generators. There is a use of ActiveRecord and Migration files to create SQL statements using the ruby languages instead of writing it in plain SQL. Ruby on Rails developers really appreciate this feature. The db folder within the component webrealtor, contains a file called 01_install.rb. The structure of the file is as follow

The method self.up is to create install.sql file and self.down will generate the uninstall.sql file. So lets create a table properties for our model property

Now if we build this component the install.rb will generate two files install.sql and uninstall.sql in the admin folder that will look like this.
install.sql file:
CREATE TABLE `#__properties` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `user_id` int(11) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `address` varchar(255) DEFAULT NULL) ENGINE=InnoDB;
uninstall.sql:
DROP TABLE `#__properties`;
Another feature that I added is a way to be able to continue developing on a component after installing it. The problem is that after a component is installed the source is copied to the joomla project directory under joomla/administrator/components/com_adminyourcomponent and joomla/components/com_siteyourcomponent folders. by typing rake com:componentname:link the installed component folders in the joomla project joomla/administrator/components/com_adminyourcomponent and joomla/components/com_siteyourcomponent are deleted and instead soft links to your component site and admin folders in the jextension directory are created. This allows us to use the existing project of our component to develop.
So in our example we type
rake com:webrealtor:link
This instruction ends here. Leave me a comment if you need some help using this. Or let me know if there are bugs which is for sure. I am hosting the project home page at goolge at joomrails.googlecode.com.
Flex / AIR / Rails / Joomla Get Together

Come and Drop by for a casual and friendly get-together.
We are arranging another AIR/Flex/Rails workshop event on Wednesday March 19th. We’ve invited a few people to discuss their insights working with these technologies. Peter Armstrong (http://peterarmstrong.com ) will join us and talk about his new released book “Flexible Rails” (http://flexiblerails.com ). Flexible Rails is the term Peter uses to describe the integration of Adobe Flex with Ruby on Rails as the back-end. Flex supports building powerful graphic user interfaces while Rails simplifies database integration. Peter is also having a full-day Rails/Flex workshop on March 31st. He’ll be talking about that as well.
Atul Nagpal, an AIR presenter in the last event, will be joining us again to talk about his fascination with Adobe AIR and Flex. He will be showing some of his application that he’s developed using AIR. Finally Rastin (www.rmdstudio.com ) and I will be doing a comparison between Ruby on Rails and the new MVC Architecture in the Joomla! 1.5 Content Management System framework.
This is a small get together not a classroom. You don’t have to be a Ruby, AIR or Joomla expert to enjoy this event. Our goals is to get together and learn something new in a friendly environment.
If you have made an application and would like to demonstrate to others, let us know we will post it on the blog and we can discuss it at the event.
We will be providing coffee and doughnuts and going to the Steamworks for a round of beer afterwards.
To attend click on the button below








