Google’s Project X

Facebook has been very aggressive in asserting their dominance in the Internet. Facebook has been attacking Google at all front. Facebook released an OpenGraph API that  competes with Google’s Social Graph. Facebook is sending window decal to local business signalling a strong competition with Google Places. Facebook advertisement is cheaper than Google Ad. Some people has been successful in generating money by targeting specific demography in Facebook Social Network. There is less competition in Facebook advertisement compare to Google and this has become one of the driving forces in Facebook ad.

The Real Time Search Battle

Some people have argued that Google is not very successful in establishing a clear brand in the market. Facebook has started to use this fact to catch up with the search engine Goliath by filling the gap in the real time search. Facebook is armed with ex-Googler employees that have the knowhow to build a good real time search engine. Google is still the leading search engine when it comes to searching relevant information.

Yes Facebook may be useful to look for what our friends like for lunch, or what they have been doing during the weekend. Lunch.com built a recommendation system using Facebook’s social data repository. All that is good BUT we can’t deny that Google is still the authorative figure in the Internet when it comes to searching real information. I use Google Scholar when I work on my research papers. I use Google Web and Blog search to find important links for my blog. I use Google Map when I needed direction to go for my overseas trip. Sorry Facebook you’re no Google !

The Social Media Battle

Google social media products have not been catching up with other social media products. Google Buzz received a bad press when it was launched. Google Wave that was the hype in 2009 does not seem to go anywhere.

There is a lot of excitement around Google’s social product. People are actually very excited in using Google Wave. Google Wave is the future of online collaboration tool. Orkut is gaining popularity in certain country like Brazil. Orkut has become biggest social networking site in India. People use Google Reader as one of their primary source of information for work purposes. Some A-list bloggers such as Rob Diana shares feeds on an average of 273 feeds per week!

Google Profile is gaining a lot of attention. Louis Gray posted his ideas on how to redesign Google Profile. I personally feel that Google Profile real power lies in close integration with other Google Products such as Google Friend Connect or Google Maps. The bottom line is although Google is not at the forefront in Social Media, they have the undeniable potential to be one!

Project X

Some people argued that Google is loosing the social web war to Facebook. Facebook has gained 250 million registered users. This figure represents a huge untapped resource for content personalization.  Facebook has realized they have the power to change the face of the Internet. Whether they will succeed is a good question for another topic.

Google definitely has an array of amazing products. People are very excited about them. Just take a look at their product ideas page. People are pouring their ideas for Google Product. I do not see this in Facebook, Twitter, Foursquare, or any other social media product out there. There are a lot of challenges that Google is facing ahead. They need to prevent the brain drain in their organisation. Google needs to be able to integrate their social product into their mainstream products.

Is Google initiating a secret project to reposition the organisation as the Internet Goliath? What is their Project X? Google hinted that they are doing a major work in Google Buzz. Rick Klau is heading Google Profile. Google just recently acquired Lab Pixie and the stealth startup Agnilux. I am pretty sure that whatever Google is doing, they will be creating another amazing product for us.

Share

Posted in social media | Tagged | Leave a comment

Social Graph Series 4: Moving Beyond Social Privacy to Semantic Web

My previous social graph series explains how web producers create amazing application by observing our social gesture. The more information that a web producer have on a user allow the web producer to give better recommendation. Web producer need to be able to capture user preferences on a bigger scale. Facebook has answered this challenge by providing the “FB Like” button. FB like button provides seamless integration into any web page with minimal obtrusion.

What is a FB “Like” button ?

Facebook like button allow a user to indicate whether he or she like something on the web. Implementing a like button involves putting an HTML snippet to our website. Some website, such as wordpress, may give more complexity than others. Facebook will post the item that you like in your facebook profile page. Your peer will also be able to know what you like without visiting facebook. Dan Tynan wrote an article on PC world that gives an example how Pandora pulled his “like” information and share his friends like information to suggest music to him.

Web producer can customize how their site shows up when users share your page with the Like button, by adding OpenGraph Meta data. Example (taken from FB Developer Page):

og:title – The title of your page; if not specified, the title element will be used.

og:site_name– The name of your web site, e.g., “CNN” or “IMDb”.

og:image – The URL of the best picture for this page. The image must be at least 50px by 50px and have a maximum aspect ratio of 3:1.

For example if you are creating a page about the movie ‘The Rock’ you would include this meta data:
<meta property=”og:title” content=”The Rock”/>
<meta property=”og:site_name” content=”IMDb”/>
<meta property=”og:image” content=”http://ia.media-imdb.com/rock.jpg”/&gt;

Why people may prefer FB “Like” button

There are other similar like button such as the re-tweet or buzz button. These buttons sends information to twitter or buzz on the item that we re-tweet or buzz. These like buttons does not work seamlessly like the FB like button. This other like button will redirect user to each of the button service provider when user click on them. They rely on OAuth to share the website data with Twitter or Buzz.  Facebook like button is less obtrusive compare to these other like button. Other “like” buttons have not used other Social Graph Meta tag such as OpenGraph, or Google Social Graph to add meaningful semantic to our social gesture.

Our Privacy and the “Like” button

Dan Tynan pointed out in his article on PC world that he is quite concern with the fact that most of his Facebook friends are people that he barely knows. What we need to be aware of is that Facebook shares your information to your friends list and third party websites.  It is very important that we start looking through our friends list and audit those people who we do not wish to share our information with. We can “like” things on the net without having to login to facebook. We will see our profile picture on websites content that we “liked” when we clicked the Facebook like button.

Facebook three partners Docs.com, Yelp, and Pandora will receive FB “Instant Personalization”. Facebook “Instant Personalization” partners receives general information such as: your profile, your friends’ names, profile pictures, gender, connections, and any other content shared using the “everyone” privacy setting. Each partner is required to display a prominent blue scroll-down bar allowing users to instantly opt-out. If users don’t choose to opt out, the partner continues to be able to access general information. Facebook’s terms of service describes their agreement with these partners in more detail.  We can disable the “Instant Personalization” in our Privacy Setting page in Facebook.

It is worthwhile to check our “Like and Interest” setting in our Facebook privacy page just to make sure that our profile picture does not suddenly pop in websites that we do not know. Facebook privacy settings have some great features to allow us to block certain content to certain people or group of people.

FB Maze Like Privacy Page

I believe that Facebook has a certain degree of good intention to safeguard the privacy of our data. The problem is that FB privacy setting page is not very easy to use. We need to manually specify setting for each of FB functionality. FB does not provide a single button to restrict the privacy settings.

Facebook privacy setting page can be a complex maze for a lot of people. In my previous  post pointed out that most Facebook users still unable to set their Facebook privacy settings as to what they imagine it to be. Some people have decided to leave Facebook because they are not confident that they have not missed out any privacy setting in Facebook’s maze like privacy setting page.

On top of Facebook privacy page complexity, Facebook like to change their privacy setting drastically without giving much room for people to opt-out. Last year Facebook made our status updates privacy setting to ‘everyone’ , allowing total strangers to read our status updates. Facebook’s recent move does not really inspire much confidence from their user. I will still keep my Facebook profile alive because it is a great way to keep in touch with friends and family. I can’t deny that I am getting very nervous on how Facebook share my data. It has not been very easy to keep up with Facebook privacy changes.

Moving to a More Semantic Web.

There are a number of challenges around creating meaning in our social interaction on the web, beside privacy and openness. One problem is that there is not much data on the semantics. The only semantic data repository that I can find online is freebase. Even this is not enough to provide meaningful semantics on the social relationship online. The next issue is about meta data abuse. Open Graph allows web producers to specify any values within the OpenGraphMeta tag. People lie about who they are on line. People will also lie about what their web site is all about to drive search engine to visit their sites. OpenGraph is not immune to meta data abuse. Open Graph implementers need to battle the old black hat SEO tricks.

Putting the privacy and openness issues aside, I personally feel excited that major players in the industry such as Facebook, Twitter and Google have invested a lot of effort in making the web more semantically meaningful. I hope that my articles on Social Graph has contributed some values towards the discussion around the social web.

My Articles On Social Graph:

Share

Posted in social media | Tagged | 4 Comments

Social Graph Series 3: It’s About Time We Get Back Our Social Information

My previous social graph series explains how social graph connects social objects on the web. The social gesture that user made towards social objects creates meaningful relationship between the social objects on the web. Social gesture comes in many form, following people in twitter, friending some one in facebook, Buzzing an article, sharing feeds in Google reader, Digging stories on the web, making purchases on the web are what I consider as social gesture.Any action that relate our self to another object (tagible product, other people account, stories) is considered as a ‘gesture’.  Application developers will be able to personalised content or create recommendation based on our social gestures.

Content Recommendation

The following great companies has created amazing algorithm and products that are able to recommend the best product or content that fits our social behaviour.

Amazon claims that they are the biggest book store on the planet, selling a wide range of product such as books, dvd, clothing, MP3, etc. Amazon has a recommendation system that suggest books that a customer might like based on other customer reviews and similiar purchases. Amazon recommendation  are based on individual behavior, plus either the item itself or behavior of other people on Amazon.

StumbleUpon integrates peer-to-peer and social networking principles with one-click blogging to create an emergent content  referral system. Stumble upon recommends websites or links that a user might like based on their ‘likes’ or ‘dislikes’.

Google personalises that search result to match your web history. Google will customize your search results based on location and/or recent search activity. Additionally, when you’re signed in to your Google Account, you may see even more relevant, useful results based on your web history.
Digg is a famous news curation website that allow user to submit articles on the news. Digg surfaces the most “digged” news to the Digg’s front page. Content curation may be the latest next big thing in 2010. Digg curating system has sparked interest from major players such as Microsoft and Google. Google is intrested in Google because Digg curating system is a natural extension to its existing search algorithm.

Google Reader recently launched Google Reader Play. Google Reader play presents user with a slides of interesting RSS feeds that matches the user preferences.

Information Ownership

Every web producer out there funnels our social gesture into their data repository. They do this out of the good intention to provide a better user experience on the web. Some  web producers tend to be more open compare to others. Digg, Twitter, Foursquare share their social gesture data with the public. They let the community to add extra value from their social data by building great applications around it.

Twitter CEO Evan Williams argued that the social web is about being able to exchange information openly. Knowledge should not be owned by a certain private entity. Knowledge should be freely distributed for everyone to reap benefit out of it. Some choose to kept it behind a closed ecosystem that no one can access. They have a good reason for doing this.  Knowledge is power. Keeping knowledge to themselves allow them to have a strategic knowledge base to produce targeted ads or recommendation that potentially brings a lot of value into the corporate. One thing that they might missed out is that there is even a bigger potential to share knowledge with the public.

Sharing information and knowledge has created some of the best invention in the IT history.Take Linux for example. Opening Linux source code was probably the best move in the history of computing. Thousands of developers has joined together to create various distro of Linux and a plethora of amazing open source application that runs on Linux. Linux has been dominating the server market. Their market share in the server market has been rising consistently against other popular operating system. Google who has the most servers on the planet relies on Linux to run their operation.

Openness is the future. No platform should be closed. Opening platform allow us to create better product and services. Anil Dash argued that platform should not be proprietary :

Think of the web, of the Internet itself, as water. Proprietary platforms based on the web are ice cubes. They can, for a time, suspend themselves above the web at large. But over time, they only ever melt into the water. And maybe they make it better when they do.

Information or knowledge sharing should not be mistaken with unauthorized distribution of personal information. Web producer has the responsibility to safe guard our social behaviour information with the highest professional conduct. No data should be shared without the user consent. We own our activity and web producer should let us consciously share these information to people or entities that we choose to share them with. Nobody like having their data shared without their consent. Web producer need to learn the repercussion when their customers are not happy with how they share the customer personal information. Information ownership need to be monitored and regulated if need be to prevent privacy breach. I shall delve into potential privacy and security issue around social graph on the next series.

My Articles On Social Graph:

Share

Posted in knowledge management, social media | Tagged , , | 4 Comments

Social Graph Series 2: Protocols that Defines Social Objects Relationship

Social graph is a popular subject due to the time and attention that people have invested in Social Media. Social media has amassed a lot of useful information. The amount of useful information on social media encourages the library of congress to archive our public tweets. People spend so much time on Facebook until it exceeded Google as the number 1 visited site in US. Recruiters are using social media to pre-screen candidates. Examining the social graph of a user gives a lot of valuable information that service providers can use to create a better and richer user experience. Let us look at some of social graph enabling protocol.

I talked about how Web 2.0 extends our relationship beyond interpersonal relationship in the first series of my social graph articles. Web 2.0 extends our relationship to other social objects on the web such as websites or events. The real value of this connection comes when we can identify the type of relationship that we have to these social objects. We can deduce the type of relationship by observing the social gesture or the relationship protocol semantic that we make towards these social objects.

Social Gesture

Web 2.0 has enabled us to create a more meaningful gestures on the web. Twitter allows us to retweet conversations in the Twittersphere to indicate that we find that a Tweet bear some value to us.  We Digg stories and articles on the web to let others know that these stories worth their time and attention.We bookmarked websites and share them over at Delicious. Bookmarking, Retweeting, Digging are example of social gestures that people can do on the web.

Observing these gesture gives information how we relate to a particular social object. We may deduce that a person likes a particular conversation or stories by looking at their Diggs, Retweets, or Bookmarks. Social gestures enable application developer to give recommendation and personalised content to a user. I will discuss some of the interesting personalisation and recommendation engine on the web in the next series.

Protocol Semantic

Protocol is a set of rules that we abide to exchange information. A protocol helps us define how to put meanings on our relationship with the social objects on the web on the languages that created the web. These protocols are embedded in mark up languages such as HTML or RDF. I will explore some of these protocol and how they help put meaning on our relationship in Web 2.0.

Google Social Graph

Google social graph allow developers to trace sites and people who connects to a user. Google indexes XFN and FOAF pages to define the relationship between the social objects on the net. Google provide a simple interface for application developers to extract meaning from a user social graph. A good starting point with Google Social Graph is by looking through their documentation or joining their discussion groups for FAQ. Google provides a simple URL that developers can call to obtain information on a user social object relationship.

There are two types of social graph relationship that can get from Google.  The lookup social graph from Google returns a list of social objects that are connected to me and the their relationship type based on my twitter account.

The graph below is a pictorial representation of a subset of my Google lookup social graph.The ‘me’ arrows show that Google Social Graph thinks that these sites Delicious, Friend Feed, Facebook represents my other self on the web.The ‘Contact’ arrows shows that Aza Raskin and Rob Diana is listed as  my contact in Twitter.

The otherme social graph from Google gives application developer an overview a user other social identity on the Web. The diagram below is a pa subset of my social identity according to Google otherme social graph. The otherme social graph recognize that I have Delicious and FriendFeed account.

Google Social Graph derives the social objects by looking at the XFN and FOAF semantic that are attached into these social objects. The next two section gives some introduction on XFN and FOAF. An overview of these 2 social graph standard gives us a better overview on how Google Social Graph works.

XFN Social Graph

Understanding the XFN and FOAF is essential to understand and make the most of Google Social Graph. An XFN friendly html page contains certain values in their anchor tag ‘rel’ attribute. At the time of writing this blog XFN allow us to define six different type of relationships: Friendship,Physical, Professional, Geographical,Family, and Romantic. Friendship is one the most used highly used XFN tag on the net. The friendship tag allow us to say who we contacted the most by specifying a ‘contact’ in the ‘rel’ anchor tag. The simplicity of XFN tag allow us to share who we engage the most on the net. The diso project tries to promote XFN as a format that we can use to share our contact information online without having to share our email address book.

FOAF Social Graph

The FOAF (“Friend of a Friend”) project is a community driven effort to define an RDF vocabulary for expressing metadata about people, and their interests, relationships and activities. An FOAF it self is an RDF file that expresses who we are (name, home page, phone, email, our school, work place) and who we know (our friend name, and their email address). FOAF-a-matic is a simple Javascript application that allows you to create a FOAF (“Friend-of-A-Friend”) description of yourself. Below is an example of my RDF that FOAF-a-matic generate for me:

<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
 xmlns:foaf="http://xmlns.com/foaf/0.1/"
 xmlns:admin="http://webns.net/mvcb/">
<foaf:PersonalProfileDocument  rdf:about="">
 <foaf:maker rdf:resource="#me"/>
 <foaf:primaryTopic rdf:resource="#me"/>
 <admin:generatorAgent  rdf:resource="http://www.ldodds.com/foaf/foaf-a-matic"/>
 <admin:errorReportsTo rdf:resource="mailto:leigh@ldodds.com"/>
</foaf:PersonalProfileDocument>
<foaf:Person  rdf:ID="me">
<foaf:name>Zainul   Franciscus</foaf:name>
<foaf:title>Mr</foaf:title>
<foaf:givenname>Zainul  </foaf:givenname>
<foaf:family_name>Franciscus</foaf:family_name>
<foaf:nick>Zainul</foaf:nick>
<foaf:mbox_sha1sum>b26e54382c07faec5d0e595c75e1f62ef6821f80</foaf:mbox_sha1sum>
<foaf:homepage  rdf:resource="https://zfranciscus.wordpress.com"/>
<foaf:knows>
<foaf:Person>
<foaf:name>One  of my friend</foaf:name>
<foaf:mbox_sha1sum>e3727c47664d8fc385e92fdbe13676de3a02bb22</foaf:mbox_sha1sum></foaf:Person></foaf:knows></foaf:Person>
</rdf:RDF>

We can publish this data through FOAF Bulettin board,or via auto discovery. An FOAF parser can find our FOAF rdf file by looking at the link to our RDF file. We can embed this link inside the <link> tag in an HTML page:

<span style="font-family: Courier New;"><html>
<head>
<link rel="meta"  type="application/rdf+xml" title="FOAF" href="foaf.rdf" />
</head>
<body>
...
</body>
</html></span>

Open Graph

The open graph protocol was originally developed in Facebook. Open graph protocol provides a set of meta tag in an HTML document to define social object relationship on the net. Below is an example of an Open Graph implementation in IMDB:

<span style="font-family: Courier New;"><html  xmlns:og="http://opengraphprotocol.org/schema/">
<head>
<title>The  Rock (1996)</title>
<meta property="og:title" content="The  Rock" />
<meta property="og:type" content="movie" />
<meta  property="og:url" content="http://www.imdb.com/title/tt0117500/" />
<meta  property="og:image" content="http://ia.media-imdb.com/images/rock.jpg"  />
...
</head>
...
</html>
</span>

At the time of writing this blog, open graph let us define a website by attaching the following metadata (1) basic metadata (title, type, image, url), (2) location, (3) contact, (4) Object Type (activity, business, groups, organisation, places, products and entertainment, websites).

Graph Comparison

The table below summarizes each feature of these graph:

Protocol
Graph Meaning
Implementation
API or Parser
XFN Humanistic qualities such as friendship or romance Embedding attributes in HTML anchor tag.
  1. RubHubXFN Directories.
  2. Exefen
  3. More on XFN website
FOAF Contact information such email, work phone, website, school Generating an RDF file.
  1. FOAF Generator
  2. Diso
Open Graph Define the structure and intention of a website Embedding HTML meta tags
  1. Ogit
  2. Open Graph protocol to JSON
  3. More on OpenGraph website

Valuing Each Graph Contribution

Each social graph protocol provide different semantic and allow application provider to measure different relationship type between the social objects on the net. XFN tends to help user define their personal relationship qualities with other users on the net. XFN allow us to define our relationship in term of ‘humanistic’ relationship such as ‘Friendship’ , ‘Romance’, ‘Colleague’, etc. FOAF allow us to define our contact information on the net in great detail. FOAF acts like our business card on the net. Open Graph allow user to define their website structure. Open Graph allow web page producer to define the website intention and purpose on the net.

Imagine a website has an FOAF reader that reads through the our published FOAF RDF File and auto create or suggest a profile based on the RDF. This will save a lot of time re creating the same profile information every time we create an account in different website. Social Media aggregator such as Giza Page, Xeesm, or Google Profile can crawl through our XFN tag in wordpress blog or twitter page to consolidate the different website that we are connected to. This will save our time in specifying each of our accounts on the net in different websites. Web site producers can include the OpenGraph tag to define the purpose of their website, allowing search engines to get more relevant information for a user.

Web producer can realize the full potential of these social graph protocol by combining their semantics. For example, If my friend want to find out where I am, a search engine can look for location based websites that specify ‘location’ OpenGraph meta tag. The search engine can crawl through these location based website and use Google Social Graph to figure out which one I am connected to. My friends will then be able to visit each one of these websites to see my location based activity to get a glimpse on where I am or what particular events I am participating.

There are a lot of technologies aimed to enrich the relationship meaning between the social objects on the web. The next series of my post will review technology such as Facebook like button that enrich our relationship between these objects.

Share

My Articles On Social Graph:

Posted in social media | Tagged , | 3 Comments

Social Graph Series 1: Social Graph the Building Block of the Social Web

There have been a lot of talk about social graph due to the fact that Facebook announced their plan on Open Graph and their like button. This will be part of series of a blog post that I am writing to discuss about Social Graph. I will explore the definition of social graph, the potential application of social graph, privacy issue, and how user and developers can reap the most benefit out of social graph. I will present a summary of the article at the end of the series.

Social Graph Explained

The closest definition of social graph in academic field comes from the social network studies. Social Network is a study of relationship between stake holders in an organisation. Defining this relationship helps people to find out who is the source of knowledge within a firm. Who are the opinion leaders in an organisation. The relationship can be measured in different aspect, such as, who do we ask for help, who do we converse for casual topic, who do we approach frequently for advise.

Corporate strategist can do a lot of things by measuring relationship in an organisation. These information help strategist to obtain buy in from opinion leaders to influence decision making in an organisation. Strategist will be able to identify who is the potential knowledge bottle neck in an organisation. A corporate strategist can reduce the organisation dependency on knowledge bottle necks by creating knowledge sharing session between this knowledge source and the rest of the organisation to reduce the potential knowledge lost should this person become unavailable in the company.

The social graph in Web 2.0 extends this notion of social network into relationships of social objects. These social objects can be people, events, or other websites on the web.  Let us take a look at some simple relationships in Web 2.0 Social Graph. This relationship has a lot of potential applications. It range from providing targeted ads, giving personalised recommendation, or helping users find old friends on the net. Before I delve into each exciting application of social graph let us take a look at some simple social graph on the net. These relationships highlights the different social objects that we can connect to in Web 2.0. Understanding this relationship gives other people some insight on how other people and website affects my decision making and how I present my social identity on line.

Peers Graph – Explaining My Decision Making

Let us take a look at a simple relationship in Twitter. I like to call this type of relationship as Peers Graph. In this social graph I have 6 Peers. This is a subset of my twitter social graph. In this graph I am ‘Following’ 6 people. Out of this 6 people 3 of them follows my tweet. A valuable social network information that we can see here is that, I am influenced by the ideas or news that these  people share online. Gina Trapani tweeted that she ordered a special genetic testing for only $99 (usual price $499). Hearing this news I immediately decided to order myself a genetic test. Rick Klau tweeted yesterday that Google is improving Google Profile indexing in Google Search. This led me to audit the information that I put in Google Profile so that Google will be able to index my profile better.

Ross Dawson,Jesse Stay, and Elijah Manor are also following me. My tweets will appear on a regular basis in their public time line. Whether my ideas influences their decision making is unknown and that can be an interesting discussion for another time.

Human – Web Graph – Explaining My Online Social Identity

The next type of relationship is about the connection between human and web sites. This is a subset of my Human – Web Graph. This relationship shows that I publishes my content to five social media sites: Facebook, Twitter, LinkedIn, Google Reader, and WordPress. My human web graph relationship define my online social identity. I use my wordpress blog to publish my ideas, thoughts, how-to on technology. My linked in account has my most up to date resume. I publish my status updates to both Facebook and twitterMy Google reader aggregates the feeds that I find interesting on the web.

This relationship presents valuable information for different people. My friends who are interested to know what I am up to can check my Facebook or twitter. Recruiters who may be interested to hire me can look through my linkedIn profile. Like minded techno geeks can read my wordpress.com blog and discuss their ideas with me on my blog. Having knowledge of a person Human – Web Graph help us understand who this person is and what they are interested in. The potential application from this knowledge is almost unlimited.

Web 2.0 has created an opportunity for us to define our relationship beyond the boundaries of person to person. Web 2.0 helped us define how we interact with other social objects such as places, events, and websites. Understanding our user Web 2.0 relationship enable application developers to enrich user engagement through technology.

I will discuss about the enabling protocol for social graph in the next series. Till then. Good Night.

My Articles On Social Graph:

Share

Posted in social media | Tagged | 3 Comments

Basic XML Processing with Python

Python comes with ‘xml.dom.minidom’ a lightweight DOM implementation that we can use to read and write XML file. I am using this to read and write XML file in my Ubuntu. It work seamlessly with Ubuntu 9.10.

Writing XML File

root_element = doc.createElementNS(self.NS, self.XMl_CONFIGURATIONS);
config_element = doc.createElementNS(self.NS, self.XML_CONFIG);
root_element.appendChild(config_element);
description_element = doc.createElementNS(self.NS, self.XML_DESCRIPTION);
description_element.appendChild(doc.createTextNode(self.description));
config_element.appendChild(description_element);
doc.appendChild(root_element);
f = open(self.CONFIG_XML, 'w');
f.write(doc.toprettyxml(indent="   "));
f.close();
  1. doc.createElementNS(self.NS, self.XMl_CONFIGURATIONS); creates an XML element.
  2. root_element.appendChild([an element]); appends an element as a child element
  3. We use the standard open(), write(), and close() file operation to write the XML file>
  4. doc.toprettyxml(indent=” “); writes a pretty XML with proper indentation for readability

Reading XML File

Reading the XML file is pretty straighforward:

1. Create a dom object:

dom = xml.dom.minidom.parse(self.CONFIG_XML);

2. Read the XML element by using the getElementsByTagName:

dom.getElementsByTagName(the element name)[0].childNodes[0].nodeValue

The code above read the first child value from the specified ‘element name’.

The returned string will contain the spacing and indetation that the parser use to write the pretty XML. I have not found a good way to string these extra characters. I use the following code to remove the extra indentation.

textwrap.dedent(element value).replace('\n','');

note: element value is the XML value that we extracted using getElementsByTagName

Text Wrapper dedent method will take care of the indentation. The replace() method take care of the carriage return characters.

Share

Posted in programming, Python, Ubuntu | Tagged , | 2 Comments

What is “too often” ?

Mark Suster posted an article about why he will not want to recruit independent contractors or people who has more than 6 jobs when they reach 30. A lot of people, not only Mark, has the same opinion that people who like to move job too often care about themselves more than their company. Some views that job hopping may not be such as bad thing. Changing job allows you to maintain passion on your job. Some people stay in their job because they love it. It is something that they look for when they wake up in the morning. Some stays because they feel “stuck”.

Working relationship in a company is a two way channel. We as the worker need to be able to project a certain degree of good will that we are going to do good for our employer. At the same time our employer need to engage their employee and ensure that they will respected. Employee need to be ensured that they will be the first to go at the sign of trouble.

These are some of the comments that I share on Mark’s blog on his article.

On having 6 jobs before 30

I do know some of peers have 6 jobs before they are 30 because when they graduated in difficult times. Some of the companies that they worked for did not manage to pay them any money for the first 3 months. This led them to look for other jobs . I guess there should be some degree of consideration from the interviewer to look at why the candidate have more than 6 job.

On independent consultant

Some of my friend decided to become an independent consultant or freelancer because not many company were interested to hire fresh graduate during that difficult period. Some of them actually wanted to work in a stable company because they were not so keen in chasing client for money on a daily basis. These freelancers tend to have self initiative and creativity because they have to do all the job themselves. Some of us who work in big companies tend to do smaller portion of task or functions. The larger or more complex type of work will be given to senior people, or they wont be no major work stream because big task will always be divided to smaller task. Thus company workers may not have the same amount of hands on or creativity compare to these “independent contractors” because of this division of work. This is not a bad thing, I guess divide and conquer comes when you have more people to do the job. Just to be fair there should be a certain amount of consideration given to freelancers or independent contractors.

Managing Online Profile

My friend David Talamelli mention that he feels people should be treated as individual. There should not be a clear ‘Yes’ or ‘No’ answer when considering a candidate. Recruiters need to listen the candidate stories and give a fair amount of consideration during the hiring process. We as candidates should try our best to present the best resume or profile.

Jeremiah Owyang wrote an excellent article about managing our online profile. We need to be aware about what we put online. Recruiters are using our online presence as a valuable in put during the interview process. Set up alerts about yourself in Google Alert. Try to listen what other people is saying about you. Update your linkedIn accounts. Get good references. Worked on your resume, polish it. Do your own independent projects to show your passion about your job.

Share

Posted in social media | Tagged | Leave a comment