Friday, October 31, 2008

C/C++ __gnu_cxx hash_set

In this post, we go about __gnu_cxx::hash_set. As we saw before, we need to define our own HashFcn. We'll also need to define EqualKey if we're using custom data types. Another workaround is to overload the == operator inside the std namespace, then you don't have to provide your own EqualKey. It should look like:

namespace std {
bool operator==(const dnsRecord& rec1, const dnsRecord& rec2) {
return rec1.ip == rec2.ip;
However, I prefer the first solution, and we'll use it in the code below. We also define our own hasher and pass it to the hash_set declaration instead of specializing the hash template inside the __gnu_cxx namespace as we did in the previous post.
#include <iostream>
#include <ext/hash_set>

using namespace std;
using namespace __gnu_cxx;

class dnsRecord {
unsigned long ip;
string domainName;

class MyHasher {
size_t operator()(const dnsRecord &r) const
return h(r.domainName.c_str());

__gnu_cxx::hash<char*> h;

class MyComparator
bool operator()(const dnsRecord& rec1, const dnsRecord& rec2) const {
return rec1.ip == rec2.ip;

int main(int argc, char *argv[])
hash_set<dnsRecord, MyHasher, MyComparator> hset;
dnsRecord rec1;
dnsRecord rec2;
dnsRecord rec3;
rec1.ip = 989798l; rec1.domainName = "dname1";
rec2.ip = 112334l; rec2.domainName = "dname2";
rec2.ip = 808323l; rec3.domainName = "dname3";

dnsRecord rec4;
rec4.ip = 0;
rec4.domainName = "dname1";

hash_set<dnsRecord, MyHasher, MyComparator>::iterator it;
for(it = hset.begin(); it != hset.end(); it++)
cout << (*it).ip << ", " << (*it).domainName << endl;

rec4.domainName = "dname3";

rec4.domainName = "dname3";
if(hset.find(rec4) == hset.end())
cout << "Successfully removed dname3" << endl;
cout << "Error!" << endl;


Tuesday, October 28, 2008

C/C++ __gnu_cxx hash_map

I had some trouble getting this to work, so I decided to post a quick tutorial...

We start with a simple hash_map with int keys and string values:

#include <iostream>
#include <ext/hash_map>

using namespace std;
using namespace __gnu_cxx;

int main(int argc, char *argv[])
hash_map<int, string> hmap;

int ints[] = {213, 432, 45, 10};
string strings[] = {"s1", "s2", "s3", "s4"};

for(int i = 0; i < 4; i ++)
hmap[ints[i]] = strings[i];

for(hash_map<int, string>::iterator it = hmap.begin(); it != hmap.end(); it ++)
cout << (*it).first << " => " << (*it).second << endl;

cout << "Removed: " << ints[0] << endl;

if(hmap.find(ints[0]) == hmap.end())
cout << "Couldn't find: " << ints[0] << endl;

if(hmap.find(ints[1]) != hmap.end())
cout << "Found: " << ints[1] << ": " << hmap[ints[1]] << endl;

It gets a little bit messy when using string keys. Since hash_map is not part of the standard STL, there're some issues you need to worry about. In our case, there's no implementation provided for hash, or in other words, the hash_map can't hash strings by default. Strangely though, hash is defined for char*, and we'll make use of that fact.

You can either specialize the hash template for std::string inside the __gnu_cxx namespace or define your own hash functor and use it in your hash_map declaration. Remember that hash_map is declared as hash_map<Key, Type, HashFcn, EqualKey, Alloc>. I prefer the second solution, you can check it out here. For now, we'll go on with the first one.
#include <iostream>
#include <ext/hash_map>

using namespace std;
using namespace __gnu_cxx;

namespace __gnu_cxx {
struct hash<std::string>
hash<char*> h;
size_t operator()(const std::string &s) const
return h(s.c_str());

typedef struct {
int x;
int y;
} point;

int main(int argc, char *argv[])
hash_map<string, point> hmap;

string strings[] = {"p1", "p2", "p3", "p4"};

point a, b, c, d;
a.x = a.y = 0;
b.x = b.y = 1;
c.x = c.y = 2;
d.x = d.y = 3;

hmap[strings[0]] = a;
hmap[strings[1]] = b;
hmap[strings[2]] = c;
hmap[strings[3]] = d;

for(hash_map<string, point>::iterator it = hmap.begin(); it != hmap.end(); it ++)
cout << (*it).first << " => (" << (*it).second.x << ", " << (*it).second.y << ")" << endl;

cout << "Removed: " << strings[1] << endl;

if(hmap.find(strings[1]) == hmap.end())
cout << "Couldn't find: " << strings[1] << endl;

if(hmap.find(strings[0]) != hmap.end())
cout << "Found: " << strings[0] << ": (" << hmap[strings[0]].x << ", " << hmap[strings[0]].y << ")" << endl;


Repair Network Connection in Ubuntu

I'm running Ubuntu 8.04 under VirtualBox on Vista. I've created a virtual network interface for the vm and bridged my network connections. The network connection was down for a while, so when I started vm there was no connection. After a while however, the connection was restored and I was able to use it on Vista. The problem is, the vm didn't feel that the connection was restored. I googled for that and got a useful thread on ubuntuforums. I applied the solution I found there and added a launcher to my panel.

Right-click the panel -> "Add to Panel..." -> "Custom Application Launcher" then enter:

Type: Application
Name: NetRepair
Command: gksudo /etc/init.d/networking restart
Comment: Repair Network Connection
Click OK.

The launcher should appear on your panel. When you click the icon, it'll run the command you entered and will ask for your password. Hopefully, this should 'repair' your network connection.

btw, this is my first post from ubuntu!

Friday, August 29, 2008

Escapement mechanisms in mechanical clocks

I was fascinated by the simplicity and elegance of these mechanisms, yet it's not comprehensible at the first glance which adds to its charm. Illustrated above is the grasshopper escapement which was invented by British clockmaker John Harrison around 1722. Read more about that here.

Tuesday, August 12, 2008

Watching Beijing 2008 Olympic Games

it's very interesting to watch the competitors pushing the limits of our perception of human capabilities both physical and mental, as they strive for perfection and withstand termendous stress, being watched by millions of people worldwide, and also how they represent their nations, attempting to bring back as much glory as possible, and to be rewarded with medals and world records, with the national anthem playing in the background and the flag hanging above their heads.

Wednesday, July 9, 2008

Alarm Clocks For Dummies

You should always remember to switch on the alarm clock after you set it or else, it will never ring!

I used to stay up late during the last week and these days, I have to finish some errands early in the morning so I had to use the alarm clock, I decide when I'd like to wake up, set the alarm and go to sleep happily, do you see a problem? I didn't switch the alarm on!

What's even more interesting, I wake up around the same time I set the alarm to for no obvious reason! It's strange because I have no certain sleep patterns and the times I set the alarm to are quite random, but somehow whether I switch the alarm on or not, I wake up in time!

I thought that was interesting and funny, but I don't recommend you try it on an important day :)

Thursday, June 26, 2008

Installing JDK on Vista 64-bit

I needed to work on some Java SE application and all the machines I have now run Vista 64-bit, I downloaded the JDK 6 update 6 for Windows x64 from the Sun website but it doesn't seem to work at all, the setup went okay but then, Eclipse craches just after showing the splash screen and the NetBeans installer says that it can't find the jdk on my computer, I installed the 32-bit jdk and everything worked fine.

update: I gave it another look and I found that the Eclipse I got was 32-bit and I read on the web that the NetBeans setup has issues and some say that you can ignore the installer, extract the zip and run, so maybe there was nothing wrong with neither the JKD nor Vista, it was just different configurations that didn't match.

Wednesday, April 16, 2008

Nile University: Wireless Intelligent Networks

For the last three days, I've been attending the conference on wireless intelligent networks organized by the Nile University in the Smart Village. The conference was held under the auspices of Dr. Tarek Kamel, the minister of communications and information technology. Ohio State and RICE universities also contributed to the conference. The conference was followed by a WARP workshop, but only a limited number of the attendees was invited.

It was a great initiative from the Nile University to introduce this interesting field to the academic community in Egypt. University students were also invited to get exposed to the ongoing research in wireless networks and get in touch with the world leaders in this technology. You can find all the information you need about the event on the conference website. The conference presentations should be available soon.

The conference was more oriented to EE topics. As a CS undergraduate, I had some difficulty following up with some talks, but it was a good experience after all. I talked to some of the speakers about the role of CS students in this field and here is what I got:

"The middle east is going to become very powerful both using and developing technology. There is going to be a tremendous need for better ideas," said Prof. A. Paulraj. He also mentioned some topics of interest regarding mobile technology including: powerful processes that consumed little power, new architectures that saves power using techniques like clock gating, more user friendly interfaces suitable for dealing with more data, security and clean slate internet.

"You should take your studies very seriously," said Prof. A. El Gamal.

"Go outside traditional education. Think outside the box. Whatever you learn isn't just courses, you should find points of interlinking between the things you learn. Think about the applications of what you study. Think about services and how it can be provided in a systematic and organized manner," said Prof. M. Eltoweissy.

"If you want to make something outstanding in networks, you have to combine the knowledge from both EE and CE. Without understanding the physical layer, your work will be rather theoretical," said Prof. A. Abozeid.

Finally, I would like to mention Prof. Hesham El Gamal and the Nile University students for their efforts in organizing this conference.

Friday, April 11, 2008

Native Deen - Reviving Islamic Rap

Muslim brotha's did it again. Native Deen are a Muslim musical group from the United States. They consist of three young Muslim men who were born and raised in America. Joshua Salaam, Naeem Muhammad, and Abdul-Malik Ahmad who grew up in Washington, DC. Their music seeks to inspire young people to keep their faith amid the pressures and temptations of modern life.

Many Muslims believe that string and wind instruments should be avoided in Islam. In order to please the widest audience, the group does not use any string or wind instruments in their music. The main instruments are drums, synthesized percussion instruments, and vocals.

Check their home page and don't miss the clip: I am not afraid to be alone, if ALLAH is by ma side (lyrics). If you found yourself interested, you can watch that one too: Small Deeds (lyrics) - put a dollar everyday in the sadaka, it maybe small but you do it for the baraka - these combinations produced a very interesting culture.

Their music is produced under the Mountain of Light label, which was founded by Yusuf Islam (previously known as Cat Stevens)

Keep it goin' brotha's!

Source Wikipedia.

Friday, March 28, 2008

Probabilistic Chips

watch this interesting video! i liked the speaker way too much...

do you think it's really important that every calculation you make gives a correct result? of course it is !! but maybe not for all applications, let's see...

for example, if you're making a bank transaction, does it really matter the number of pennies or cents? what about computer simulations? it's already based on probabilistic models, so maybe a little bit of randomness in the results won't hurt too.

still not convinced? think about a DVD player generating many frames per second, if it messed up some pixels in a number of frames, it won't degrade the overall viewing experience, so maybe signal processing and sensor applications can find advantages to that new technologies.

but why should we bother developing new technologies given the undertaken risks in tolerating the incorrect results? that's because this can significantly reduce the power consumption without compromising user experience.

researchers are now developing a new type of transistors called PCMOS or Probabilistic-CMOS that will be available in 5 years, by making hardware a little bit unstable, we can realize the required randomness while significantly reducing the consumed power. actually this topic is very new that i can't find many articles about it, maybe you can check these links about a new embedded system architecture based on PCMOS, and a demo of PCMOS based DSP.

i think that's a very revolutionary approach in chip design, don't you agree?

Tuesday, March 18, 2008

Setup your Symbian C++ Development Environment on WindowsXp

this semester, we're studying Symbian OS Development for mobile phone software, the course started with C++ development using Carbide C++ and will move later to J2ME, we are currently interested in the S60 platform.

preparing for my next lab assignment, i invite you to join me in installing Carbide C++ on my WindowsXp PC, we'll proceed as follows:

  1. install ActivePerl-5.6.1 (required to build your projects) (this setup adds some env variables).
  2. install S60 SDK for Symbian, i don't recommend beta versions.
  3. install JRE (required by the Carbide Eclipse-based IDE).
  4. install Carbide C++.
  5. for console apps to run, you'll need to add "textshell" in a separate line at the beginning of your "{SDK_PATH}\Epoc32\Data\epoc.ini" file.
then open the Carbide C++ and create a new Symbian OS C++ project-> Generic Symbian OS-> Basic Console Application(EXE) build and run. Let's call this first project "Test"

  1. when i first tried to run, i got this error "BLDMAKE ERROR: Platform ARMV5 not supported by \Symbian\Carbide\workspace\Test\group\BLD.INF" i found that the BLD.INF file contained the project information specially the platform details, as a windows user you expect that to be: "PRJ_PLATFORMS WINSCW GCCE" i found it was "PRJ_PLATFORMS DEFAULT" u can change it manually but to avoid doing that everytime i found it can be customized in the Carbide under Windows-> Preferences-> Carbide.C++-> Platform Filtering Preferences where i unchecked everything except WINSCW and GCCE.

    update: i found later that you can choose not to install the ARMV5 and GCCE in the SDK setup and everything will still work fine for you - as far as we are concerned.

  2. Windows Vista users may face other problems but i can't cover everything here, however i can say that the Symbian online community is very active and you're likely to find the solution to ur problem after a simple search, just be patient it may seem difficult at the beginning.
next time we'll go through our first console application! have fun!!!

Wednesday, February 27, 2008

Hardwood Solitaire III - A Revolutionary Card Game

"A revolutionary collection of solitaire card games with engaging full-color graphics, original music, intriguing sound effects, and captivating 3D game play." Download here.

i really liked this game, i'm not that interested about card games but what got me hooked was the fascinating MIDI music in the background, like a medieval epic or a fairy tale, that always reminds me of the sweet vague thoughts of the past, i had that game when i was a kid and i got it again last year, i open it from time to time to listen to the music and remember my childhood :)

Enjoy the game.

Monday, February 25, 2008

Write Parallel Code

i was reading through the Computer Architecture textbook - Computer Architecture A Quantitative Approach, 4th Edition, when this caught my attention just on the 4th page "Whereas the compiler and hardware conspire to exploit ILP implicitly without the programmer’s attention, TLP and DLP are explicitly parallel, requiring the programmer to write parallel code to gain performance."

well, i've been hearing a lot of talk about parallelism and multi-cores during the last month, like when we had a session about Parallel Lock-Free Programming to talk about the advanced synchronization techniques the Microsoft PFX team is working on, also the Computer Architecture course this semester is specially interested in this stuff - as it was upgraded to the advanced level.

all that kept me thinking for some days what can we do to really exploit the power behind multi-core computers? this is a big question that i'm sure some of the smartest minds are working on and i find myself interested in the subject.

the sentence i quoted up there inspired me about a tool that will help programmers harness the power of multi-cores in the same way they do their normal work, the tool should help the programmer to write parallel code by viewing multiple code areas like in the compare editor and adding compiler directives, also it should support debugging support and auto-tests/suggests concurrency control. This should handle a variable number of cores for the target machine and maybe a variable platform too, regardless of the developer machine. The plug-in can be published as an open source project so everyone can benefit and contribute.

i didn't forget to check what have been done so far and i was not amazed to find that there is some work in this field but the Google search didn't return that many matches, that's a very new and open approach and we expect to witness a lot of achievements in the next years. I'd like to mention Model-Driven Development Tool for Parallel Applications and The Grid Compute Server Plug-in for NetBeans IDE besides the Microsoft PFX. You can also check this paper, it was published in 1989 and provides a theoretical treatment of the subject.

Wednesday, February 13, 2008

Prallel Multi-Threaded Lock-Free Programming

today we had a session by eng.Emad Ali - Software Design Engineer(SDE) at Microsoft Corp. PFX Team, where he first reviewed the multi-threading synchronization objects in C++ and C# and the thread execution model on single-core and multi-core systems,

he then introduced the new synchronization techniques intended to be added to the .Net libraries like SemaphoreLight, Event, Monitor and Parallel.for - which executes independent loop iterations in parallel instead of waiting for each iteration to complete first with support to load balancing between cores too - and showed the advantages of Lock-Free programming in implementing more efficient synchronized data structured like stacks and queue that operate far much better with multiple threads.

he also mentioned the introduction of parallel techniques to LINQ - the Language Integrated Query added to the .Net framework by the end of 2007 that enables you to query any IEnumerable-based information source (arrays, sets...) - which produced PLINQ, in addition to the TPL - Task Parallel Library - which makes it much easier to write managed code that can automatically use multiple processors like Parallel.for, as part of the PFX (Parallel Framework Extensions) development taking place right now.

if you found yourself interested in the subject you can continue with the following links:
Parallel Extensions to the .NET Framework
LINQ: .NET Language-Integrated Query
101 LINQ Samples
Task Parallel Library
Lock-Free Programming (Great)
PFX Team Blog

Computers and Artificial Intelligence at the Bibliotheca Alexandrina with Dr. Ismail Serageldin

yesterday a bunch of engineering students specially from our departement, attended the Computers and Artificial Intelligence three part series at the Bibliotheca Alexandrina. The department was kind enough to give the day off so all the students are able to attend this big event. It was long and rich with information, a lot of history too but i can say this helped to set the base for the thorough discussion introduced by Dr.Ismail.

The sessions outlined the development of computer systems along side the advancements in communications to the age of the internet and the ICT Revolution. A variety of visions were introduced from purely philosophical to purely technical to show the controversy about the definition of intelligence and the idea of creating intelligent machines and whether it's possible or not.

maybe it's suitable to mention the strongest of both sides of this controversy: the Chinese Room Argument that confines any machine intelligence to a set of predefined rules that can only be enlarged which is not real intelligence, opposed by Raymond Kurzweil who says that computers were able to break any borders that have been set before and predicted that computers will be able to defeat the world champion in chess by 1998 and it happened in 1997, 1 year earlier than predicted. there's more on that in the slides, but without the great presentation given by Dr.Ismail.

I added the links for you here, you can get that and more from Dr. Ismail's website.

Computers and Artificial Intelligence, A three part series - Part 1: Where did our computers come from?
Download Presentation
View Presentation
Computers and Artificial Intelligence, A three part series - Part 2: The Search for Artificial Intelligence
Download Presentation
View Presentation
Computers and Artificial Intelligence, A three part series - Part 3: Humans, Robots And The Future
Download Presentation
View Presentation

Sunday, February 3, 2008

Learn about RSS from Common Craft

i've been very amused about these kind of videos, they call it "XYZ in Plain English", which corresponds to our Arabic expression "بالعربى الفصيح", they aim to introduce complex ideas in a very intuitive and story like way guided with pointing fingers and simple sketches, that makes it easy for you to follow up and get the idea, without having to bear with much jargon.

These videos are created by Common Craft and uploaded to YouTube by leelefever, they made many wonderful videos and have some kind of a show too, very creative and inspiring...

one good example that's suitable for our new blog is RSS in Plain English, RSS makes it easy for you to keep track of your favorite blogs and news updates, the video introduces the idea non-technically which isn't enough for you, since it only introduced the illusion of the service,

i prefer you read a little bit more about it on Wikipedia, you can start from here, and to make this discussion more thorough, i have to mention pinging and its implications.

do want to know what an rss feed looks like? click this link to view my blog feed, maybe your browser will suggest registering the feed too, it's a kind of xml that contains some or all the data you need to get, you can view the page source to have a closer look.

Friday, February 1, 2008

Introducing CSED Alex Bloggers

i'm happy to announce the opening of a new group blog for our department students where they can share the latest topics that interest them and engage in fruitful discussions. the idea was brought by three senior students, and i can find myself very interested about it, i intend to contribute the posts i find useful there, u can track these posts by following the label. don't miss out on the interesting posts to come.

Wednesday, January 30, 2008

i can fly!

it gets very windy this time of the year, i remember i was once walking last year when i felt the wind pushing me from behind, it was so strong that it really pushed me forward, i decided to give it a try and just jump upwards to detach my legs from the ground and yes, the wind pushed me about a foot forward, today i got to do that again, i cut a long distance by just jumping upwards and i was accelerating in speed it got a little bit dangerous too,

it's really inspiring how strong the wind can be, no wonder people have always dreamed about sailing and flying, i'd love to try any of that but i don't think i'll get the chance in the foreseeable future,

Friday, January 25, 2008

i got lucky with algorithms!

the exams are finished, not bad i think, i just hope the grades come within the expected ranges, anyway i think i enjoyed this semester, now i have great plans for the midyear vacation, let's see what we're gonna do.

maybe the best thing that happened for sometime is that i got the highest mark in the algorithms year works, i'm so happy about that, i really love algorithms, maybe the course had some issues, but i hope it'll be good at the end.

Wednesday, January 23, 2008

VS JIT-Debugger Pop-ups

a friend of mine told me about that game, after i got the game and made the installation, i started the game and boom, the game is suspended and not responding because Visual Studio Just-In-Time debugger got its nose in the execution sequence, i looked it up on the net and i found many people complaining about the same thing, many decided to uninstall the new .Net and revert to older versions which they've been living happily with but didn't get much luck, finally, i found the answer on Microsoft forums, it suggested that deleting some registry keys can solve the whole problem so i made this reg file and i think it did the trick for me.

Wednesday, January 16, 2008

Tracing Code, Specially Assembly

well, the second exam was Micro-Processors, i really liked this course, and i think i made some good work at it too, the exam went ok, i just didn't feel good about that strange looking question that weighted slightly above 1/5 the total mark, it listed some PIC16F84 code and asked u to trace, describe and fix the functionality it provides, the exam was over when a friend of me showed up saying "hey, it's a factorial, isn't it?" well, buddy, it didn't look like a factorial to me!! and it got much better with the more "factorial" u hear as u go,

now, let me tell u something, whenever u trace any non-trivial piece of code, u must use a table (with borders) of variables and update them step-by-step,

another thing, those pieces of asm codes usually evaluate to something meaningful, specially when u're asked to describe or name it, something like "a*b", "factorial", "pow(a,b)", "Σ ai" or other simple math formulae, maybe that's because nobody writes code that just looks ugly, it's usually written to make something good,

problem is, i did make some sort of a table, i had a row that looked like [3, 2, 1] and the other (that's what u evaluate) started with [4], then u multiply successive elements and update the second, so i just messed it up in the third loop and ended with [4, 12, 36, 36] so the result of foo1(4) was "36", not "24", because i should have multiplied 12 "by 2 not by 3",

maybe i'll remember that for the rest of my life...

Monday, January 14, 2008

Mohamed Abdel Wahab Songs

i had this song in mind "emta ezzaman yesmah ya gameel" when i searched for Abdel Wahab songs, at first i didn't get much luck with my search, but at last i landed on that site and i found many songs in mp3 and ram, enjoy!

Saturday, January 12, 2008

Early in the morning, preparing for the exams...

well it's been some time since i last wake up that early and i have to say it's very quite and clear now, very beautiful indeed, i open the window and the morning sun covered the room in marvelous colors i didn't see before in my cozy room,

this couldn't have been complete for me without a touch of sadness from Anouar Brahem music, and now it's become so captivating i feel i'm lost in all that beauty,

approaching the end of the semester, the first exam's just tomorrow, starting with Operating Systems, i've much to revise, we covered a very reasonable amount in the course, maybe a little more practice and it'd have been nearly perfect,

this semester has been so full, and i'm quite satisfied with the things i did and the experiences i gained, maybe i'll have to tell you about that, but let's keep it for later...

Thursday, January 10, 2008

FastrerFox, i just wanted a stop-watch!!

on of my friends told me the blog takes too long to load, i decided to work on it a little, i started by removing any embedded multimedia that referenced other domains and replaced them by links, i felt it's pretty faster now, i didn't have FasterFox till then as i didn't really need it, at home at least, so i got it and checked the counter, well, not bad, end of the story,

then, i just decided to search for "FasterFox" on, i don't know where i got this bad habit :), but again, it showed some value, i found people saying stuff like phishing and security concerns, i found that article on planet.websecurity for example when i started to get interested, maybe u'll be too if u check wikipedia for FasterFox,

i ended up setting FasterFox to the default mode, where i doesn't change FireFox's default values, after all, i just wanted a stop-watch for the pageload...

Wednesday, January 9, 2008

well, maybe FeedFlare is not the answer

after reading the FeedFlare Developer Guide as planned, all i can say is this thing is cool but isn't as powerful as i expected, the DTD restricts the abilities to showing a single text or link based on the data you can access within ur feed, the feed that i have no control over so far,

i took a look on what the community thinks about FeedFlare and i found that some people are not happier than i am, another blogger too said "FeedFlare? No Thank You." one year ago, released on December 13, 2005, part II on January 25, 2006, i'm quite disappointed, after studying the subject, i won't be able to get what i wanted, the language they used gave me a much better image,

only because i want to go through with it, i'm going to try the flare i created, just for the fun of it, it displays a link to the first label's feed, that's the best i could get so far, check the results on the blog feed,


Tuesday, January 8, 2008

FeedFlare is the answer

i think i found the solution to the problem i mentioned in my previous post, i was checking my FeedBurner account when i found it, it's FeedFlare, it enables you to add custom xml units to your feed to be rendered with each item, there's a lot of FeedFlare units already available, but i couldn't find anything related to the labels that would solve my problem, now i'm checking the FeedFlare Developer Guide to find out how to add my labels back, i'm not sure i'm gonna be able to make the aggregator handle these labels as i want, but anyway it's cool stuff, let's see what can we get, cheers.

Monday, January 7, 2008

Where are my labels in that feed?

i added that feed subscription button to the blog and i just wanted to give it a try, i subscribed the blog in* my Google Reader and all the posts came into view, well, great, but where are my labels? the aggregator enables you to tag items in your feeds, but what about the author labels? i just want my labels to be there after each post like what i see inside the blog,

i tried to figure out how to customize my feed but i was only able to control basic options like whether to syndicate the full post or only the first paragraph or add a footer, it was clear i had no control over the feed content, i even tried adding template code that generates the labels for me but i found that you can only add HTML code in that footer!

i want the aggregator to be able to use the labels i add, within his feed viewer the same way he does when he's on the blog, in a meek trial to go along with the idea, i used firebug to add some label to the viewed item inside my Google Reader, i used same url of the subscribed* feeds, and the reader opened the feed telling me i'm not subscribed,

well, it worked partially, as the page was reloaded not like what i expected, i.e the nice 'loading' on top of the page while everything is still in place, since i used the same url maybe it has to do with the link location or dom hierarchy or whatever, the solution was going to be aggregator specific, maybe special tags can be added to the feed so the aggregator can detect those links and be aware they are parts of the original feed, and maybe we can find people linking to other feeds from their own feeds too!!

i think it's gonna be useful if you can go through your labeled feeds just like the original blog, but at least i should be able to customize my feed content...

*if you don't know already, it's the aggregator that pulls the feed not the feed pushing itself, it's the desired illusion of the service.

Wednesday, January 2, 2008

El-Tanbura, seductive folk melodies of the mythical Simsimiyya

what can i say! it just struck me when i first listened to the very fine tunes they played, i couldn't help playing the songs again and again as if not believing that such melodies can exist in the real world, it was like a journey through the mysteries of the Arabian Nights, very genuine and very seductive.

the homepage, provides plenty of samples and a very interesting biography that describes the origins of the band and the roots of the fascinating genre they play, it also mentions the myths about the origins of the instrument they use, called Simsimiyya, which adds a little spice to the whole thing,

you can find a complete song here on, i hope you enjoy this unique experience as much as i did.