Wednesday, January 31, 2007

Metisse Desktop

I believe some of us have heard about Metisse desktop environment thats going to be provided by Mandriva to their users. Metisse is quite an old project (since FC1) but havent had any major release until recently. Metisse is designed with usability in mind rather than funky effects - a product of the team's research on Human Computer Interaction subject. It won't make shiny effects but it might help you (and grandmas) to use computer and the desktop easier. See screenshots here

If you're interested with it, theres still no Metisse 0.4 packages for distros other that Mandriva thats has been out in the public yet. However, you can build it from source by following this Howto.

Sadly, It uses a modified Xserver (rather than available compositing from AIGLX/XGL) which immediately turned me off. I don't like polluting my system with from-source installations that might be hard to remove later.

HOWTO: Mirroring Yum repositories using Yum-Utils

As promised before in one of my previous post, a Howto on how to mirror and manage yum repositories using some of the utilities in yum-utils.

The first step is, well, of course, is to get yum-utils from fedora repository
yum install yum-utils

Reposync is a utility for mirroring and synchronizing local copy of a yum/rpmmetadata repository.

This utility is very useful if you wanted to make a yum repository mirror. Before this, I used "wget -R -np -N" but this method is a little bit tedious and it doesnt work with repos that didn't use directory listing. Plus, it also download together additional site stuff that I don't need/want and it doesn't verify checksum of the downloaded packages.

Mirroring a repo using this utility is easy, just execute this command
reposync -r <repoid> -a <arch> -n

and the repo will be mirrored in a folder with the same name of the repoid in the directory you executed the command. Eg: you executed the command in /mnt/storage/mirrors/ and the repo you are mirroring is extras, so, the RPMs will be downloaded at /mnt/storage/mirrors/extras/.

Available options
$ reposync --help
Reposync is used to synchronize a remote yum repository to a local
directory using yum to retrieve the packages.

/usr/bin/reposync [options]

-h, --help show this help message and exit
-c CONFIG, --config=CONFIG
config file to use (defaults to /etc/yum.conf)
-a ARCH, --arch=ARCH act as if running the specified arch (default: current
arch, note: does not override $releasever)
-r REPOID, --repoid=REPOID
specify repo ids to query, can be specified multiple
times (default is all enabled)
-t, --tempcache Use a temp dir for storing/accessing yum-cache
-p DESTDIR, --download_path=DESTDIR
Path to download packages to: defaults to current dir
-u, --urls Just list urls of what would be downloaded, don't
-n, --newest-only Download only newest packages per-repo
-q, --quiet Output as little as possible

Repomanage is a utility for repository managers to manage old and new packages in a repository. It will read the RPM packages in the directory and list out old/new packages from the directory to stdout.

Example of using repomanage for removing old packages in the current directory and its subdirectories.
repomanage --old . |xargs rm -rf

Available options
$ reposync --help
usage: repomanage [--old] [--new] path.

-h, --help show this help message and exit
-o, --old print the older packages
-n, --new print the newest packages
-s, --space space separated output, not newline
-k KEEP, --keep=KEEP newest N packages to keep - defaults to 1
-c, --nocheck do not check package paload signatures/digests

Regenerating the repo

Now thats you've done mirroring and cleaning up old packages, its time to regenerate a repository metadata for the repo and make it usable through yum. Read my post on how to create your own Yum repository here.

Enjoy your new local repos~ :)

Monday, January 29, 2007

Which Death Note character are you?

Erm .. found the link to this site from my uni's moodle blog .. posted by someone

Hey!, I got Yagami Light/ Kira!!. Thats something unexpected. However, the description does match with how I think I am.

Take the test here

Sunday, January 28, 2007

Useful Yum repository tools in yum-utils

Yum-utils package have some useful tools for sysadmins who wanted to create and manage their own RPM metadata repository.

Contents of yum-utils package
# rpm -ql yum-utils

Some notable tools
repomanage - helps you manage a repository by listing out old and/or new packages filenames
reposync - helps synchronizing local repository with an online Yum repository
repotrack - helps downloading dependencies of packages -

I'll be posting a howto for creating a yum repository using these tools when I got some time to spare and my mind not filled with something else.

Thursday, January 25, 2007

V3 UTPchat server up and running

Village 3 is up and running

Village 3 Server : (outsider37i)

Tuesday, January 23, 2007

UTPchat Servers In V1/V4/V5 are up

To UTP students, our UTPchat IRC network is now back functional in Village 1, 4 and 5. The servers have been linked up and connected with each other.

Village 1 Server : (Togakure)
Village 4 Server : (Student)
Village 5 Server : (Soul)

There are some problem with V2 and V3, and we are still finding a way to resolve it.

Sunday, January 21, 2007

Back to UTP

Another semester going to start, and yet another semester with only port 80 and 443 outbound to Internet *sigh*.

Struggling to re-setup the IRC servers because of room changes and new admins. Also, need to update my FC6 repository mirror of Extras, Updates and Livna. The UTP Open Source society also have lots of stuff to catch up.

Hopefully I can finish all of this by 2 weeks.

Template broke on IE6 - Fixed

I just noticed that my current template broke on IE6 at the <pre> tag. CSS overflow:auto doesnt work and made the layout haywire on posts that have some long codes I pasted. I found it out when I was using my father's laptop to enter the blog, and that laptop uses IE6.

After some investigation, I got found out that IE6 does not support CSS max-height and overflow:auto does not work with dynamically sized div/pre. Damn IE6

After googling around, I found a hack on how to make it at least wont break the template here. Now my template happily work with IE6 and W3C compliant browsers. Yay~!

btw, this problem doesn't exist on IE7

Friday, January 19, 2007

"Subscribe Feed" Blogger Widget (Update) / Hacking Blogger's widget engine #3

I have modified a little bit of the Subscribe Feed widget which I posted last time. The modification is simply for user-friendliness when adding the widget to your blog and editing the feed URL. Done it by using JavaScript to write the feed url into the links.

To edit the feed url, just adjust the value of
var feed_url = "/feeds/posts/default";
in the code.

To know more about automated widget adding here

You can get the widget using a one-click interface here.

and below is the code
<script type='text/javascript' language='JavaScript'>
// <!--

// use this value to use Blogger's default feed
// or edit it to use other feed's URL
var feed_url = "/feeds/posts/default";

document.write("<a href='"+feed_url+"'><img alt='' src='' style='border:0'/></a>");

document.write("<a href='"+feed_url+"'><img alt='Subscribe in NewsGator Online' src='' style='border:0'/></a>");

document.write("<a href='"+feed_url+"'><img alt='Add to Google' height='17' src='' style='border:0' width='104'/></a>");

document.write("<a href='"+feed_url+"'><img alt='Subscribe in Rojo' src='' style='border:0'/></a>");

document.write("<a href='"+feed_url+"'><img alt='Add to Newsburst from CNET' height='17' src='' style='border:0'/></a>");

document.write("<a href='"+feed_url+"'><img alt='Subscribe in FeedLounge' border='0' src='' title='Subscribe in FeedLounge'/></a>");

document.write("<a href='"+feed_url+"'><img alt='Add to netvibes' height='17' src='' style='border:0'/></a>");

document.write("<a href='"+feed_url+"' type='application/rss+xml'><img alt='Subscribe in Bloglines' src='' style='border:0'/></a>");

document.write("<a href='"+feed_url+"'><img alt='Add to My AOL' src='' style='border:0'/></a>");
// -->

Thursday, January 18, 2007

Social network users have ruined their privacy, forever

Students at the University of Bristol have recently been warned of the dangers of posting to social networking websites. They aren't the first to hear these warnings, and they won't be the last.

Prof. Nigel Smart of the Computer Science Department at the University of Bristol has expressed his concern at the worrying trend of people giving up their privacy on the internet via social networking websites. He told HEXUS: "I am concerned that from some of the posts I have seen, by colleagues, students and others, that there is a deep societal problem emerging of people giving up their privacy without realising it".

There's little point in worrying about ID cards, RFID tags and spyware when more and more people are throwing away their privacy anyway. And the potential consequences are dire.

Just about anyone can read what's posted onto social networking websites like MySpace and FaceBook. 'Anyone' includes the intended audience of friends, but potentially relatives, teachers and employers too. And much of what is posted can never be deleted. I don't need to point out that Prof. Smart's fears are well-founded and that this is bad news, do I?
Anonymity down the drain

People have been posting stuff onto the web for years, though, so why is privacy suddenly a bigger problem for a larger number of people? Three or four years ago, it was all about chat rooms and forums. Both have a level of anonymity by default; you can choose your handle and only talk about what you want to, truth or lies... nobody will know.

Chat rooms are all but dead and buried now, amidst fear of sexual predators and other unsavoury types. However, forums continue, by virtue of their more topic-focused and moderated nature.

Then came what some people like to call 'Web 2.0'. On that wave of "let's pretend we've upgraded the Internet, LOL" came the social-networking websites... along with those terrible pages of drivel people like to call 'blogs'. It became cool to talk about mundane things and show other people what had been happening in your life. In essence, all the chat room goers had something to do once again.

So where's the problem in that? People treat users on their social-networking 'friends lists' just like their normal friends. They'll chat to them, share details from their lives, show them photos... do stuff friends do. People are comfortable with that. Problem is, they're too comfortable.

Bitching down the phone to someone about somebody else is a fairly common occurrence amongst friends, so socially, it's quite acceptable to do the very same with online friends, right? Yes, except unlike a phone call, it isn't private. Interestingly, you could probably get away with it in a chat room; they were essentially anonymous, but social networking is much more personal; the anonymity is all but gone. Fancy being sued for libel? How about initiating a police inquiry, or an investigation by the board of your educational establishment? It could happen, if you say or post the wrong things.
Irreversible damage

Once something appears on the Internet, it's almost impossible to remove. Within minutes, chances are a search engine will crawl it, then that search engine will cache it, so that even if the page changes, the original content will still be there, for a while, at least. Then there are archiving systems like the Way Back Machine. Once the page is on there, it doesn't matter what changes are made... it's archived. Of course, this assumes that pages are accessible by anyone, which isn't always the case, but that doesn't really matter.

It's easy to get an account with almost any social-networking site, and we've learned from chat rooms, it's easy to pose as somebody else. It's easy, then, to get added to a friend list (especially with the 'more friends the better' attitude of current social-networking sites). Suddenly, that 'friends only' stuff is pretty much public.

As these sites continue to grow in popularity, so too does the value of the information on them to parties other than those directly involved. Parents can see what their children really get up to at Uni'. Teachers can see what their pupils really think. Potential employers can profile applicants based on their online braggings and other shenanigans. While much of the content might be taken humorously amongst friends, other parties might not see it that way.

Profiling a person by their online activities need not be a long and arduous task entailing reading their boring blogs and examining all their FaceBook pictures, either. If somebody can write 1000 lines of code to scan MySpace for sexual predators, someone else can apply the same principals to profiling a single person.

Social networking users need to take a step back and think about just what they're posting onto the Internet. It'll probably be too late for a number of people, and it'll take a lot more 'victims' of the lack of privacy before most users actually start heeding these warnings. Just beware that anything posted online to your friends now, could very easily come back to haunt you in days, months, or even years to come.

My name is Steve Kerrison. I don't have a FaceBook account, or a MySpace login. I do have a blog, but it's work-related.

Relatively I feel the same too , especially applies Malaysians teenagers (even some adults). They simply don't care what they put on the internet. At some point, I really feel that the users are really stupid. They use the services in a way it was not designed for. (Eg. Private messages in testimonial section, useless chain mails in bulletins, adding pure strangers in friend list w/o ever knowing the person, a blog became a personal diary, etc ).

I admit I also use social networks, but I share only stuff that to me is okay to be published.

Anyway, it do have a good point - Thanks to their behavior, I can easily gather their personal informations for a "good" use.

::grin:: : Open Web Templates for your website!

I found something interesting from StumbleUpon yesterday. An OpenSource website template community!!

The Open Design Community (TODC) is a group of Open Source Website Designers providing free web design templates helping to make the global internet a prettier place.
Our Goal

Our goal is to create a community owned and managed site, where users can share their free website designs and templates, discuss web design, and promote their services.

I browsed through the templates hosted there, and they are all awesome!. Almost all of them are well polished and professional looking and a lot are as high quality as expensive commercial web templates.

While browsing though, this Dark Ritual template caught my attention. I thought it'll look great for my blog. So I downloaded it and hacked it here and there to make it fit for Blogger's Layout engine and the product is, you're looking at it now!! (^-^)

Below is the modified Dark Ritual template for use in Blogger. For the image files , you can search and get it from

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "">
<html xmlns='' xmlns:b='' xmlns:data='' xmlns:expr=''>

<b:include data='blog' name='all-head-content'/>
Name: Dark Ritual
Date: 2006-11-06
Description: Tribal-style three column layout.
Author: Viktor Persson

Feel free to use and modify but please provide credits.
Date: 2007-01-18
Hikaru Amano <>
-> roughly modified template for use in new blogger's layout engine


/* standard elements */
* {
margin: 0;
padding: 0;

.post-body pre {
border: 2px dashed #cccccc;
background: #ffffff;
color: #000000;

padding: 2px;

textarea, input, select, option, button {
font-family: Tahoma, Verdana, Arial;
background-color : #F3F5F4;
color : #7B9685;
font-size : 10px;
border: 1px solid #B9CAC0;

a {color: #682;}

a img {border:0;}
a:hover {color: #9A6;}

body {
background: #333 url(img/bg.gif);
color: #333;
font: normal 62.5% "Lucida Sans Unicode",sans-serif;
margin: 3% 0;

p,ul {
padding-bottom: 1em;

ul {margin-left: 1.2em;}

li {list-style: none;}
.main li {list-style-image: url(img/li.gif);}

h1 {font-size: 1.2em;}

blockquote {
background: #FFF;
border-bottom: 1px solid #EEE;
border-top: 1px solid #EEE;
color: #333;
display: block;
font-size: 0.9em;
margin-bottom: 1.2em;
padding: 6px 12px;
blockquote p {padding: 3px 0;}

h1,h2,h3 {color: #994;}

/* misc */
.clearer {clear: both;}
.main_right .padded {padding: 6px 2px 6px 16px;}
.main .padded {padding: 7px 10px;}
.meta {font-size: 0.8em; color: #666;}
.left {float: left;}
.right {float: right;}

/* structure */
.container {
font-size: 1.2em;
background: url(img/bgcontainer.gif) repeat-y;
margin: 0 auto;
width: 840px;
border: 12px solid #222;

/* header */
.header {
float: left;
width: 640px;
background: url(img/header.jpg) no-repeat;
font: normal 2.4em Verdana,sans-serif;
height: 150px;
line-height: 100px;
text-align: center;

.header h1.title {

.header h1 a {

.header .description {
font: normal small Verdana,sans-serif;

/* structure */
.top {
background: #222;
color: #DDD;
float: left;
font: normal 1.4em Verdana;
height: 50px;
text-align: center;
width: 639px;
.subnav {
float: left;
width: 160px;
color: #CCC;
.main {
float: left;
width: 480px;

.main .post-title {
font-size: large;

.main .date-header {

.main img {
border:1px solid #000000;
padding: 5px;

.main .footnav img {
.main_right {
float: right;
width: 200px;
color: #CCC;

/* sub-navigation */

.subnav h1 {
background: #222;
color: #FFE;
font: bold 1.1em Verdana,sans-serif;
line-height: 24px;
padding-left: 8px;
.subnav ul {margin: 0; padding: 0;}
.subnav li {
border-bottom: 1px solid #696755;
list-style: none;
.subnav li a {
background: #89866F;
color: #111;
display: block;
padding: 8px 0 8px 12px;
width: 148px;
text-decoration: none;
.subnav li a:hover {
background: #9C997C;
color: #000;

div.widget {
margin: 0 0 15px 0;
/* footer */
.footer {
background: url(img/bgfooter.gif) repeat-x;
color: #CCC;
font-size: 0.9em;
line-height: 39px;
width: 100%;
text-align: center;
.footer .left,.footer .right {padding: 0 16px;}
.footer a {color: #EEE;}
.footer a:hover {color: #FAFCB0;}

/** Page structure tweaks for layout editor wireframe */
body#layout {


body#layout #main_wrap {

body#layout #outer-wrapper {
width: 740px;

body#layout #header{


<div class='container' id='outer-wrapper'>

<b:section class='header' id='header' maxwidgets='1'>
<b:widget id='Header1' locked='true' title='&amp;laquo; Shadow Logs &amp;raquo; (Header)' type='Header'/>

<div class='main_right' id='sidebar_right'>

<b:section class='padded' id='sidebar' preferred='yes'>
<!-- Right sidebar widgets here -->

<div class='subnav'>
<b:section id='subnav'>
<!-- Left sidebar widgets here -->

<div class='main' id='main_wrap'>

<b:section class='padded' id='main_section' showaddelement='no'>
<b:widget id='Blog1' locked='true' title='Blog Posts' type='Blog'/>
<hr id='hrule1'/>
<b:section class='footnav' id='footer'>

<div class='clearer'><span/></div>

<div class='footer'>
<span class='left'> 2006 <a href='index.html'></a>. Valid <a href=''>CSS</a> &amp; <a href=''>XHTML</a></span>

<span class='right'>Template design by <a href=''>Arcsin</a>. Hacked for use in Blogger by <a href=''>KageSenshi</a> </span>

<div class='clearer'><span/></div>





Wednesday, January 17, 2007

Amano Hikaru - Thats me~!

While watching Death Note ep13 (thanks Animanda!) I realized that I can translate my name to Japanese name. Got the idea from Yagami Light's name. The word Light in his name is spelled as 月(Tsuki) but pronounced as "Light".

Feeling curious how my name will be in Japanese, I fired up Kiten and start hunting down words that can match with the meaning of my name.

Malays doesn't have first and last name system. We just use our given name followed by our father's name at the end as our full name. So, I decided to take out 2 words in my name and make it my first and last name :P

Mohd Izhar Firdaus Ismail - I omitted my father's name and the first word of my name because both are names of ancient Phophets which doesn't have a direct literal meaning. That left me with Izhar Firdaus.

Firdaus - literally means Eden/Heaven. From what I already know from learning Japanese, Heaven's kanji is 天 (Ama). Make it a family name it became 天野 (Amano)

Izhar - literally means Bright/Clear. Using Kiten, I tried to find names that means bright/clear and I got a list of kanji that have similar meanings. Akira, Kazumi, Kira, Saya, Sayaka, Asu, are some of them. From the list I picked up Hikaru from the kanji 晃 (Akira/Hikaru/Aki). Reason?. Erm .. err ... 日+光=晃 Theres something in that combination that makes me like it. I simply don't know how to explain.

From Izhar Firdaus , I got 天野晃 (Amano Hikaru) for my name ... 嬉しい〜!

OpenSource apps surely have lots of fun use.

HOWTO: Extracting RPM from command line

Sometimes, admins might want to extract some files from a RPM file for some purposes. If on a system with GUI, this can be easily done using file-roller or some other GUI based archive manager that supports RPM/CPIO archives. RPMs are basically modified CPIO archives, so we use rpm2cpio and cpio command to extract files from it in a CLI environment.

List out contained files
rpm2cpio <rpmpackage.rpm> |cpio -t

Extract all files
rpm2cpio <rpmpackage.rpm> |cpio -id

Extract specific file
rpm2cpio <rpmpackage.rpm> |cpio -id <file>
Note: extracting specific files requires you to put the full path of the file in the archive which you get from the cpio -t output.

You can read more about using cpio from the manpages and from this site

Monday, January 15, 2007

HOWTO: Removing Firefox Menu Toolbar

Yet-another-shrinking-your-UI guide lol~..

Lets go straight to the point. First, to those you a newbie in editing userChrome.css, locate the file using this guide.

Then, just add these lines in userChrome.css.

toolbar#toolbar-menubar {display : none !important}

.toolbarbutton-menubutton-button > .toolbarbutton-box,
.toolbarbutton-1 > .toolbarbutton-box
max-width: 16px !important;
text-align: center !important;

(I'm in lazy mode)

Edit: For the Menu button, use the Compact Menu extension.

Saturday, January 13, 2007

Death Note got licensed in the US

Read It Here

I was wondering why it took so long for ep 13 of Death Note, so I googled and found out the news. Dammit, the US licensed the anime but us in non-US countries who suffered.

Meanwhile, at the other side of the world, Animanda fansubs have agreed with to continue subbing Death Note. よかった。

(^-^) Anxiously waiting for the next episode.

HOWTO: Making Firefox toolbar and tabs smaller

People with low resolution screens might want to make stuff smaller to save space. Below is a guide to shrink the Firefox toolbar .

Switching to small icons

First we need to use small icons for the toolbars. Just right click at the toolbar, click customize, and select "Use small icons".

Resizing the toolbar

There are no menus to change the toolbar width from within firefox. Therefore, we need to edit the userChrome.css file. The userChrome.css file is located in your Firefox profile folder. The location differs according to the OS. Locate your profile folder by following this guide. After you located the profile folder, find the file at <profile-folder>/chrome/userChrome.css . If it doesn't exist yet, create it.

Now, add this css entry into userChrome.css
toolbar {
max-height:30px !important;

This will resize the toolbars width to 30px.

Resizing the tabbrowser

Add this entry into userChrome.css to resize the tabbrowser tab width to 30px and remove any paddings and margins.
.tabbrowser-tabs {
max-height: 30px !important;
margin: 0;

Restart firefox, and you're done. Feel free to experiment with various values.

Btw, if you noticed in the screenshot, my menu toolbar has been removed and replaced with a menu button. I'll post a guide to do this when I have time.

Friday, January 12, 2007

I'm Back

I'm back from JB .. It was a great trip .. learned some new stuff and met some new and old friends .. Trying to find some ideas on what to write next ..

Saturday, January 06, 2007

Away for few days

I'll be away for a few days starting tomorrow. I'm going to Johor Bahru to train Ninjutsu with Bujinkan Dojo JB. (Havent go there this semester yet).

Need to stretch back these rusty muscles.

There will be no more Fedora Core!!!!

Yup, you didn't read it wrong. Fedora Core will cease to exist, and so do Fedora Extras. Why?. Its because they will be merged together to form a distro what will only be called as - Fedora.

You can read about it here,
perhaps Digg it here,
and read the mailing list here.

You can look at the release schedule of Fedora 7 here

I personally think the merge is a good thing to do, because one of its advantages is that it makes it easier to manage and install packages because there will be only one main repo, instead of 2 (Core and Extras) or 3 (if you count together the Updates repo ) repositories. (It'll also makes me easier to mirror the repo for use inside my university)

However, this announcement left me wondering with one question. How will users get the distribution release?. Core and Extras is now together as one repo, so are we going to have CD/DVD with everything in the repo as the distribution release???. Or are we going to have a smaller 1 CD base installation for Fedora??. Or does the FedoraProject have other method in mind??.

Anybody care to enlighten me about it????

HOWTO: Creating your own YUM RPM repository

YUM is the default package manager provided with most RPM distros, especially Fedora and Redhat based distros. It is similar to APT of the Debian based distros. Admittedly, it is not the best package manager in term of performance, I personally feels APT is faster and easier to use. However, it do have some good points. One of it is the ease of creating a YUM RPM repositories.

Some users might want to store cached/downloaded RPM packages for backup or future offline use. Some of them might also want to easily resolve dependencies of downloaded RPMs from non-repository sources. By having their own repository, they can easily install the RPMs and avoid dependency hell.

To create our own repo, we use a tool called "createrepo". Its available in the Fedora DVD/CD and you just need to insert the DVD/CD and install it. You can also get it through yum.
yum install createrepo
After you've installed createrepo, dump all of the RPMs you want to create a repo with inside a directory. For the sake of this howto, lets say the directory is '/mnt/storage/myrepo/'.

Then, run createrepo in the directory. More options of createrepo can be found in its manpage.
cd /mnt/storage/myrepo/
createrepo .
After createrepo finished generating the metadata, your repository is ready for use.

To use the repo, you'll need to create a yum configuration for it in /etc/yum.repos.d/. Below is an example of a basic yum configuration.
# file /etc/yum.repos.d/myrepo.repo
name=My Personal Yum Repo

I purposely set "enabled = 0" so that yum won't automatically use the repo by default. This is to avoid conflict between packages from the official repos and your repo. You can explicitly tell yum to use it by using the "--enablerepo=" option.
yum --enablerepo=myrepo install <packagename>

To those who prefer to use APT, the latest APT-RPM tool can use Yum repositories as its repo. Thus making the usage of APT easier on YUM distros.

Thats all folks. Enjoy your new RPM repo. :)

"Subscribe Feed" Blogger Widget

This is my first widget written using the HTML widget type. It just a simple widget for users to easily provide buttons to several popular feed subscription site.I've been trying to use the add-widget form provided by Blogger, but it seems like the widget.template input couldn't accept input other than <data:content>. I think this is a bug and I've reported it. (Due to this bug, I think the next "Hacking Blogger Widget" post will be halted for a while)

Adding the widget into the template is easy. Open edit template html page, check expand widget, then copy the codes below, and paste it after another widget. Save the template and you're done. To rearrange the widget, just use the 'Page Elements' page.

After adding into your template, goto 'Page Elements' and click the edit button at the widget. Put your feed url into the widget content form. Be careful not to put any line breaks or other characters because it will go into your url.


Subscribe in NewsGator Online Add to GoogleSubscribe in Rojo Add to Newsburst from CNET Subscribe in FeedLoungeAdd to netvibes Subscribe in Bloglines Add to My AOL

And this is the code
<b:widget id='HTML12' locked='false' title='Subscribe Feed' type='HTML'>
<b:includable id='main'>
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
<div class='widget-content'>
<a expr:href='"" + data:content'><img alt='' src='' style='border:0'/></a>
<a expr:href='"" + data:content'><img alt='Subscribe in NewsGator Online' src='' style='border:0'/></a>
<a expr:href='"" + data:content'><img alt='Add to Google' height='17' src='' style='border:0' width='104'/></a>
<a expr:href='"" + data:content'><img alt='Subscribe in Rojo' src='' style='border:0'/></a>
<a expr:href='"" + data:content'><img alt='Add to Newsburst from CNET' height='17' src='' style='border:0'/></a>
<a expr:href='"" + data:content'><img alt='Subscribe in FeedLounge' border='0' src='' title='Subscribe in FeedLounge'/></a>
<a expr:href='"" + data:content'><img alt='Add to netvibes' height='17' src='' style='border:0'/></a>
<a expr:href='""+data:content' type='application/rss+xml'><img alt='Subscribe in Bloglines' src='' style='border:0'/></a>
<a expr:href='"" + data:content'><img alt='Add to My AOL' src='' style='border:0'/></a>
<b:include name='quickedit'/>

You might need to adjust the div id to make it compatible with your theme. Also, the widget id must be a unique id. If theres other widget in your template with the same id, put a different id for this one.

Friday, January 05, 2007

HOWTO: Disabling tab scrolling in Firefox2

Firefox 2 introduces tab scrolling feature similar to Epiphany and several other browsers. However, while this feature seems to help stop tabs from becoming too small and hide its title, its considered annoying to some users. Not be able to see all of the tabs in once glance might not be preferable to some.

To disable this, goto about:config and set this
browser.tabs.tabMinWidth = 0
Now your tabs can shrink until 0 pixel!! lolz!!. To read more about the key, visit here

HOWTO: Enabling tab restore previous session in Firefox2

Firefox 2 already have a session saver built-in with the browser. However, it only activates when firefox crashed. Theres no available menu in the firefox preferences to adjust this behaviour, and some of us might want Firefox to restore tabs from our previous session. Fear not, you can still adjust it by editing a key through the about:config interface and enable the built-in restore previous session functionality.

Doing this is easy, just open about:config, and set this = 3
You can read here to know more about the key.

Superhero? I'm Batman~!! Lolz

From Aizatto's blog, then I saw Surface doing it, Kaeru's not far behind, and followed by Me~!!

Your results:

Batman (90%)

Hulk (75%)

Green Lantern (70%)

Spider-Man (70%)

Superman (70%)

Robin (65%)

Supergirl (57%)

Catwoman (55%)

Iron Man (45%)

The Flash (40%)

Wonder Woman (32%)

You are Batman
You are dark, love gadgets and have vowed to help the innocent not suffer the pain you have endured.

Click here to take the Superhero Personality Quiz


Lolz.. guess the description kindof match me :P

P/S: I hate HTML tables

Thursday, January 04, 2007

Hacking Blogger's widgets engine #2

This is my second post about what I've learned from the new Blogger engine. This time, I'll explain the about the widgets, its tags, and how to create your first widget.

To those who didnt know it, Blogger widgets are those drag-and-drop able page elements in the new Blogger. By default, you can only choose to use the widgets provided by Google for your page. However, that is not the limit. The widget engine in the new Blogger offers good customization and allows developers to develop their own widgets to share with others!. Its uses HTML for layout and XML for content, therefore, its not hard to create your own widget if you know the basics.

Widget Tags
Widgets are defined using <b:widget> tags. You can read Blogger's documentation about the tag here. The basic is, when you define a widget, you just need to give it an id and a type. For a list of available widget types and it data variables, visit here. Below is an example of a simple widget using the HTML type.

<b:widget id="myWidget" type="blog">

<b:includable id='main'>
<div style="align:center">


Writing Your First Widget
Writing a widget is very easy if you have basics in HTML, XML and a little bit of programming. Blogger's widget is a combination of those 3 elements. A program have a main() function, user defined functions and variables. Blogger's widget similar to that. The <b:includable> tags are the functions, and <data:/> tags are the variables. It also support loops and conditional operations. Read here for more information about includes, loops and conditional operations.

A very basic skeleton of a widget contains a widget declaration and main includable.
<b:widget id="myWidget" type="html">

<b:includable id='main'>

<-- main HTML layout -->



From the skeleton, we can expand it more by adding includes and conditions.

<b:widget id="myWidget" type="html">

<b:includable id='main' var='post'>
Title : <data:title>
<b:if cond='data:content == ""'>
Content : Empty
<b:include id='printContent'/>

<b:includable id='printContent'>
Content : <data:content/>


With this, I beleive its already enough for y'all to start writing your own widgets. And if you do, don't forget to share it with the rest of the world.
Sadly though, I couldn't find how to define our own variables. Without user defined variables, it reduces your flexibility when writing the widgets because you'll be depending a lot on built-in variables and widget types. Anyway, good luck :D

Wednesday, January 03, 2007

LinkedIn : A friend network for professionals

I stumbled upon a url to this site from an email in a mailing list. Being curious, I opened the site. At first glance, I thought it was yet-another-friend networking site like friendster and myspace, but I noticed theres something different with it. So, I click the site's about page and read it.

LinkedIn is an online network of more than 8.5 million experienced professionals from around the world, representing 130 industries.

When you join, you create a profile that summarizes your professional accomplishments. Your profile helps you find and be found by former colleagues, clients, and partners. You can add more connections by inviting trusted contacts to join LinkedIn and connect to you.

Your network consists of your connections, your connections’ connections, and the people they know, linking you to thousands of qualified professionals.

Through your network you can:

* Find potential clients, service providers, subject experts, and partners who come recommended
* Be found for business opportunities
* Search for great jobs
* Discover inside connections that can help you land jobs and close deals
* Post and distribute job listings
* Find high-quality passive candidates
* Get introduced to other professionals through the people you know

Its kindof interesting to me, so I joined it. Feel free to invite me into you linkedIn connections.

View Mohd Izhar Firdaus Ismail's profile on LinkedIn

Tuesday, January 02, 2007

Hacking Blogger's widgets engine #1

I just started playing around with the new Blogger's widget based template engine. At first it was confusing because its not normal HTML based template, but a strict XHTML 1.0 XML template. But after a playing around with it for a few hours, I started to understand the elements of the template and started to modify my template little by little (those who entered my blog a few times today might noticed that the template keep changing) and testing what element will affect what values. This is what I've learned so far.

The Template
The template generally consist of 2 significant parts, the layout and the widgets. The layout template is the one Blogger shows by default when you enter edit-html mode. The widgets are shown below the layout template after you check "Expand widget template" checkbox. You only need to change the layout part if you want to customize the base appearance of your blog. If you want more widget specific customization, edit the widget.

The theming system in the widgets engine depends heavily on CSS. If you scroll down the layout code of the default themes, you'll see that more than 80% of the layout is CSS. XHTML is only used to define how stuff will be arranged and CSS will define how stuff will look like.

Font and Colors
The new engine provide a nice UI interface for changing the color and font values in the CSS code. You just need to define the variables inside the CSS code using <variable> tags and it will appear at the "Font and Colors" setting in Blogger.

Example of a variable definition
<Variable name="bodyBgColor" description="Background Color" type="color" 
default="#cfcfcf" value="#C3D9FF">

Example of using the variable inside the CSS
body {
background-color: $bodyBgColor;

From what I found for now, the variable tag only support 2 types which are color and font. So, you can only use it for CSS font and color settings only.

Thats all I guess for now. I will be posting more of this in the future. So, stay tuned (^-^)

Monday, January 01, 2007

GTalk Online Status Indicator

I beleive lots of us is familiar with Yahoo!'s I'm Online images on websites, blogs, myspace, friendster, etc. Some of us might not prefer the over-fancy Yahoo Messenger service (I know I am), prefer Gtalk, and wanted an online indicator for their sites. Jon Burrows have a solution for you. He hosted a Gtalk Online Status bot that will check your online status and provide an image of your status.

Using this service is easy. Just add into your buddy list then send ENCSTRING to the bot to get your encrypted string. The url or your status image will appear at . For more options of changing images visit this page

HOWTO: Adding Non-Strict HTML into Blogger Widget Template XML

I have been trying to insert some javascript buttons into the Posts widget of the new Blogger engine. There are no predefined widgets provided by Blogger for this purpose, so, I opened the template's HTML to insert it. However, the task that I thought gonna be easy became a frustrating task because the engine requires strict XHTML coding in the template thus making everything a nightmare to pass the syntax checker.

Struggling to insert the code, I discovered that the engine will parse any &lt; and &gt; entries into < and > of the generated code. So , I fire up gedit, paste the code, and do a search and replace for & < and >, replacing them with &amp; &lt; &gt; and pasted the new code into the template. The result is -> Success!! -> look at the stumbleupon button below :)

Linux and BSD users can do this quickly on a text file by using sed.
cat file|sed s/'\&'/'\&amp;'/g|sed s/'<'/'\&lt;'/g|sed s/'>'/'\&gt;'/g

Happy New Year 2007!!!

I wish y'all a Happy New Year 2007!!!. I hope this year will be a great year with lots of new things learned. (hopefully next semester's subjects will not be too hard). and for TMnet, upgrade ur f'kin line and release this f'kin torrent cap!!!.
Locations of visitors to this page