<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4381400018851945158</id><updated>2011-08-02T17:20:39.731-07:00</updated><category term='Windows Vista'/><category term='Feelings'/><category term='Fun'/><category term='Blogspot'/><category term='pathway'/><category term='GLay'/><category term='Dgb'/><category term='cBrowser'/><category term='ExtJS'/><category term='R'/><category term='Windows 7'/><category term='Job'/><title type='text'>GeekMi</title><subtitle type='html'>Make a difference every single day.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-5092165554141984762</id><published>2009-11-30T21:52:00.000-08:00</published><updated>2009-11-30T21:58:50.346-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Windows 7 Ubuntu like Multi-desktop</title><content type='html'>Windows 7 didn't provide multiple virtual desktops as expected. A Solution for Ubuntu like multi desktop is to use 3rd party extensions. It's not perfect, but it's working.&lt;br /&gt;&lt;br /&gt;Here's one light weight and free one you may want to try:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://windowspager.sourceforge.net/"&gt;Windows Pager&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The also have some nice screenshots, and a flash tutorial video.&lt;br /&gt;&lt;br /&gt;&lt;img class="c5" src="http://windowspager.sourceforge.net/detail_view.png" alt="detail view"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Source:WindowsPager&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-5092165554141984762?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/5092165554141984762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=5092165554141984762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/5092165554141984762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/5092165554141984762'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/11/windows-7-ubuntu-like-multi-desktop.html' title='Windows 7 Ubuntu like Multi-desktop'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-5144312291681953363</id><published>2009-11-16T17:53:00.000-08:00</published><updated>2009-11-16T17:57:49.153-08:00</updated><title type='text'>RDP on windows over ssh</title><content type='html'>First of all, you need to bind the port. Usually we use putty on a windows machine, or ssh on linux.&lt;br /&gt;&lt;br /&gt;putty -L port1:DESKTOP_IP:port2 account@ip&lt;br /&gt;&lt;br /&gt;and leave the putty window open. In many cases:&lt;br /&gt;port1: 3390, the default rdp port on windows machine.&lt;br /&gt;DESKTOP_IP: the ip of the remote desktop&lt;br /&gt;port2: the rdp port on the remote desktop&lt;br /&gt;&lt;br /&gt;Sometimes on a windows machine, remoting by this method will generate an error of not more than one console session is allowed. In certain windows versions, remoting over ssh is blocked. The easy fix is to use a different port other than 3390, such as 23468; then in the remote desktop ip address, type localhost:23468, which will fix the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-5144312291681953363?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/5144312291681953363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=5144312291681953363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/5144312291681953363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/5144312291681953363'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/11/rdp-on-windows-over-ssh.html' title='RDP on windows over ssh'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-2499628183603789455</id><published>2009-10-01T08:58:00.000-07:00</published><updated>2009-10-01T09:00:16.198-07:00</updated><title type='text'>Article on Java modularity</title><content type='html'>Java 7 is out. Here's a good article explains some of the nice features.&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.infoq.com/articles/modular-java-what-is-it'&gt;InfoQ:Modular Java:What is it?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-2499628183603789455?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/2499628183603789455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=2499628183603789455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/2499628183603789455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/2499628183603789455'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/10/article-on-java-modularity.html' title='Article on Java modularity'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-2973947065479932856</id><published>2009-05-10T10:22:00.001-07:00</published><updated>2009-05-10T10:22:31.407-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Job'/><title type='text'>Data Analyst Job</title><content type='html'>Description&lt;br /&gt;Description:&lt;br /&gt;&lt;br /&gt;The bioinformatics department seeks an exceptionally talented and&lt;br /&gt;motivated individual to assist with gene information curation and&lt;br /&gt;database development, and provide data analysis supports for research&lt;br /&gt;departments.&lt;br /&gt;&lt;br /&gt;Responsibilities:&lt;br /&gt;&lt;br /&gt;The successful candidate will perform regular data curation of the&lt;br /&gt;in-house gene information databases. You will work with other&lt;br /&gt;Bioinformatics scientists and programmers to identify needs and&lt;br /&gt;opportunities in gene information integration and provide solutions.&lt;br /&gt;The successful candidate will also work closely with lab scientists in&lt;br /&gt;analyzing protein sequences, genomic structure and microarray data.&lt;br /&gt;You will be encouraged to help design software for DNA and protein&lt;br /&gt;sequence analysis and to pursue creative solutions to other tasks&lt;br /&gt;commensurate with your experience and ability.&lt;br /&gt;&lt;br /&gt;Requirements:&lt;br /&gt;&lt;br /&gt;Applicants should possess a M.S. degree in bioinformatics, computer&lt;br /&gt;science, or have equivalent experience. The successful candidate must&lt;br /&gt;have strong programming experience in Java, Perl and database design.&lt;br /&gt;Knowledge of R, and web application technologies is highly desirable.&lt;br /&gt;You should have outstanding communication skills and the ability to&lt;br /&gt;work independently and succeed in a complex, dynamic, team-oriented,&lt;br /&gt;multi-disciplinary environment. You should be resourceful and pay&lt;br /&gt;attention to details. Previous experience with biological databases&lt;br /&gt;and sequence analysis are required.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DIVISION:  Research&lt;br /&gt;REQUISITION NUMBER:  08-1000025151 PROG ANALYST&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-2973947065479932856?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/2973947065479932856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=2973947065479932856' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/2973947065479932856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/2973947065479932856'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/05/data-analyst-job.html' title='Data Analyst Job'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-8624335075535200335</id><published>2009-04-29T12:57:00.000-07:00</published><updated>2009-04-29T12:58:58.900-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>R library som</title><content type='html'>Self-organizing maps for clustering, need large number of iterations.&lt;br /&gt;A filtering function in the package, &lt;br /&gt;&lt;br /&gt;filtering() &lt;br /&gt;&lt;br /&gt;is very helpful to floor, ceil the input data table.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-8624335075535200335?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/8624335075535200335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=8624335075535200335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/8624335075535200335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/8624335075535200335'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/04/r-library-som.html' title='R library som'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-3215056267468547161</id><published>2009-04-22T13:46:00.000-07:00</published><updated>2009-04-29T12:57:25.634-07:00</updated><title type='text'>Corr</title><content type='html'>mantel.rtest {ade4},&lt;br /&gt;&lt;br /&gt;This provides a comparison of two distance matrices.&lt;br /&gt;Still looking for a good way of translating correlation to distance.&lt;br /&gt;&lt;br /&gt;mahalanobis {stats}&lt;br /&gt;&lt;br /&gt;Calculate the mahalanobis distance.&lt;br /&gt;&lt;br /&gt;To calculate the mahalanobis distance require Cov estimate, and this can be done with either classic cov or robust cov estimate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-3215056267468547161?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/3215056267468547161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=3215056267468547161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/3215056267468547161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/3215056267468547161'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/04/corr.html' title='Corr'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-7946692870528724497</id><published>2009-04-20T09:51:00.000-07:00</published><updated>2009-04-20T09:52:16.070-07:00</updated><title type='text'>Procrustes Analysis</title><content type='html'>Procrustes analysis: procrustes()  in vegan  provides procrustes analysis, this package also provides functions for ordination and further information on that area is given in the Environmetrics  task view. Generalised procrustes analysis via GPA()  is available from FactoMineR.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-7946692870528724497?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/7946692870528724497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=7946692870528724497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/7946692870528724497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/7946692870528724497'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/04/procrustes-analysis.html' title='Procrustes Analysis'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-7103614212822297653</id><published>2009-04-15T07:36:00.000-07:00</published><updated>2009-04-15T07:38:38.550-07:00</updated><title type='text'>clues package for clustering evaluation</title><content type='html'>clues contain the calculation of five different indexes when comparing two cluster/classifications. &lt;br /&gt;&lt;br /&gt;adjustedRand(cl1, cl2, randMethod = c("Rand", "HA", "MA", "FM", "Jaccard"))&lt;br /&gt;&lt;br /&gt;While the adjustedRandIndex from mclust can only compute for one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-7103614212822297653?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/7103614212822297653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=7103614212822297653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/7103614212822297653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/7103614212822297653'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/04/clues-package-for-clustering-evaluation.html' title='clues package for clustering evaluation'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-8176622021273670255</id><published>2009-04-04T19:00:00.001-07:00</published><updated>2009-04-04T19:00:55.112-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>ggplot2: Great plot libs</title><content type='html'>Just put up a post first. More details coming up soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-8176622021273670255?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/8176622021273670255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=8176622021273670255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/8176622021273670255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/8176622021273670255'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/04/ggplot2-great-plot-libs.html' title='ggplot2: Great plot libs'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-6052162006594595305</id><published>2009-04-01T20:26:00.000-07:00</published><updated>2009-04-01T20:31:12.013-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>Robust correlations</title><content type='html'>The traditional correlation measures are not suitable for noisy or those with outliers. Non-parametric methods like Kendall and Spearman can do slightly better job than Pearson but not enough.&lt;br /&gt;&lt;br /&gt;The R package robust provides nice robust correlation methods, covRob:&lt;br /&gt;&lt;br /&gt;&lt;a href='http://cran.r-project.org/'&gt;R LINK&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Other robust methods can be found here:&lt;br /&gt;&lt;a href='http://cran.r-project.org/web/views/Robust.html'&gt;Robust Task View&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For outlier removal, you may refer to outliers package. Honestly, it's not doing a good job at all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-6052162006594595305?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/6052162006594595305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=6052162006594595305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/6052162006594595305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/6052162006594595305'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/04/robust-correlations.html' title='Robust correlations'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-1588843177776178567</id><published>2009-03-31T19:15:00.000-07:00</published><updated>2009-03-31T19:17:27.780-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>Heatmaps</title><content type='html'>There are several functions you may employ to get heatmaps:&lt;br /&gt;default heatmap, image&lt;br /&gt;&lt;br /&gt;heatmap.2 in gplots package&lt;br /&gt;heatplot in made4 Bioconductor package&lt;br /&gt;heatmap_2, heatmap_plus in Heatplus Bioconductor package&lt;br /&gt;&lt;br /&gt;So far heatmap.2 in gplots works best. If you want to plot some covariates use heatmap_plus&lt;br /&gt;&lt;br /&gt;The easiest way to define a custom colorPalette is &lt;br /&gt;&lt;br /&gt;colorRamPalette(colors)(num_of_interpretation)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-1588843177776178567?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/1588843177776178567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=1588843177776178567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/1588843177776178567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/1588843177776178567'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/03/heatmaps.html' title='Heatmaps'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-1102171474315398459</id><published>2009-03-30T13:13:00.001-07:00</published><updated>2009-03-30T21:14:15.170-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>Granger Test of Causality</title><content type='html'>Test whether one time series can predict another&lt;br /&gt;Here's the R link:&lt;br /&gt;&lt;br /&gt;&lt;a href='http://rss.acs.unt.edu/Rdoc/library/MSBVAR/html/granger.test.html'&gt;R Link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;P.S.&lt;br /&gt;notes: sometimes i hate the nomenclature differences in different programming languages:&lt;br /&gt;&lt;br /&gt;in R, converting a form into string is the function as.character(), i was looking for a function like toString, string... blah, never got any luck. This reminds me of a simple function of getting the length of an array:&lt;br /&gt;&lt;br /&gt;Java: arrayObject.length&lt;br /&gt;Javascript: arrayObject.length&lt;br /&gt;R: length(arrayObject)&lt;br /&gt;Perl: scalar arrayObject&lt;br /&gt;PHP: sizeof(arrayObject)&lt;br /&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-1102171474315398459?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/1102171474315398459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=1102171474315398459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/1102171474315398459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/1102171474315398459'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/03/granger-test-of-causality.html' title='Granger Test of Causality'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-2550860269113017934</id><published>2009-03-29T18:02:00.001-07:00</published><updated>2009-03-29T18:02:54.250-07:00</updated><title type='text'>Dr J's presentation on biology</title><content type='html'>&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2ZRYp5kRFfI&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/2ZRYp5kRFfI&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Dr J is my career idol.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-2550860269113017934?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/2550860269113017934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=2550860269113017934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/2550860269113017934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/2550860269113017934'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/03/dr-js-presentation-on-biology.html' title='Dr J&apos;s presentation on biology'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-3317808705428990650</id><published>2009-03-26T12:29:00.000-07:00</published><updated>2009-03-26T12:32:46.329-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogspot'/><title type='text'>Adding Counter to your blog</title><content type='html'>Blogspot doesn't support page counter, so it's still pretty hard to track how many people have read your blog. However, yo can track with the 3rd party scripts. &lt;br /&gt;&lt;br /&gt;Here's a tutorial, but it's not very detailed. What you can to do is here:&lt;br /&gt;&lt;br /&gt;&lt;a href='http://bloggerstatusforrealbeta.blogspot.com/2006/08/know-your-visitors-beta.html'&gt;Link to tutorial&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But before you get started, you need to register a free account on sitemeter:&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.sitemeter.com/?a=home'&gt;&lt;br /&gt;&lt;img height="44" width="226" border="0" style="margin-bottom: 10px;" alt="sitemeter" src="http://www.sitemeter.com/images/sitemeter_logo.gif"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then you will have your own page counter! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-3317808705428990650?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/3317808705428990650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=3317808705428990650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/3317808705428990650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/3317808705428990650'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/03/adding-counter-to-your-blog.html' title='Adding Counter to your blog'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-336684695037217102</id><published>2009-03-26T08:39:00.000-07:00</published><updated>2009-03-26T08:45:02.431-07:00</updated><title type='text'>Google web visualization api</title><content type='html'>If you have a small dataset and you want to put it into visualization and shared on the web, the most handy way is the Google chart api. Although the data requests are via http get so you probably can't visualize thousands of data points, but it's very handy to make simple plots to work, in a realtime manner. &lt;br /&gt;&lt;br /&gt;And everyone can make up to 250,000 calls per day! Wow! Which means you can do some really cool web data services. This is not entirely new, actually some libs like Ext they do have extension gadgets specifically aimed at Google Charts.&lt;br /&gt;&lt;br /&gt;Nevertheless, it took me like only 40 min to read the API and added a little working hours tracking gadget on this blog. It's actually dynamic; i will add some navigation buttons later. It's just another incentive to keep reminding myself do not waste time on forums, and concentrate on the work =) &lt;br /&gt;&lt;br /&gt;&lt;a href='http://code.google.com/apis/chart/'&gt;Google Chart Link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-336684695037217102?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/336684695037217102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=336684695037217102' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/336684695037217102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/336684695037217102'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/03/google-web-visualization-api.html' title='Google web visualization api'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-7994989113591735317</id><published>2009-03-24T12:10:00.000-07:00</published><updated>2009-03-24T12:48:37.272-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>R libraries [Clustering, Classification, LM]</title><content type='html'>Nice functions to quickly manipulate Rmetrics: fUtilities package&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Basic libs:&lt;br /&gt;&lt;br /&gt;cluster&lt;br /&gt;class&lt;br /&gt;stat&lt;br /&gt;&lt;br /&gt;Model based:&lt;br /&gt;mclust&lt;br /&gt;&lt;br /&gt;Linear Models:&lt;br /&gt;MASS&lt;br /&gt;lmtest&lt;br /&gt;car&lt;br /&gt;&lt;br /&gt;This post will be updated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-7994989113591735317?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/7994989113591735317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=7994989113591735317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/7994989113591735317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/7994989113591735317'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/03/r-libraries-clustering-classification.html' title='R libraries [Clustering, Classification, LM]'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-1795200331075530679</id><published>2009-03-23T13:43:00.000-07:00</published><updated>2009-03-24T12:10:14.581-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>WGCNA Package</title><content type='html'>A package for weighted correlation network analysis. It would be interesting to look at how this method can do for network analysis.&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.genetics.ucla.edu/labs/horvath/CoexpressionNetwork/Rpackages/WGCNA/'&gt;Resource Link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.biomedcentral.com/1472-2105/9/559/abstract'&gt;Paper Link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-1795200331075530679?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/1795200331075530679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=1795200331075530679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/1795200331075530679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/1795200331075530679'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/03/wgcna-package.html' title='WGCNA Package'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-3080166936873079126</id><published>2009-03-23T12:22:00.000-07:00</published><updated>2009-03-23T12:35:08.014-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>GeneNet Package</title><content type='html'>To do data transformations, there's a package named GeneNet; designed to analyze gene expression (time series) with the focus on gene networks.&lt;br /&gt;&lt;br /&gt;they have handy transformation functions:&lt;br /&gt;&lt;br /&gt;z.transform and hotelling.transform.&lt;br /&gt;&lt;br /&gt;Note that these two transformations only work on correlation coefficients, with the range from -1 to 1.&lt;br /&gt;&lt;br /&gt;&lt;a href='http://strimmerlab.org/software/genenet/html/z.transform.html'&gt;Link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-3080166936873079126?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/3080166936873079126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=3080166936873079126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/3080166936873079126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/3080166936873079126'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/03/genenet-package.html' title='GeneNet Package'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-1437331420092699471</id><published>2009-03-22T08:15:00.000-07:00</published><updated>2009-03-22T08:22:49.390-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>Bagged Clustering</title><content type='html'>A given partitioning clustering algorithm is run repeatedly on bootstrapped data, the cluster centers then merged by hierarchical cluster algorithm. This is good for noisy data / small sample size.&lt;br /&gt;&lt;br /&gt;From R library e1071, function bclust&lt;br /&gt;&lt;br /&gt;&lt;a href='http://bm2.genes.nig.ac.jp/RGM2/R_current/library/e1071/man/bclust.html'&gt;R Doc Link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also here's an online powerpoint that demonstrates the application on simulated metabolomics data:&lt;br /&gt;&lt;br /&gt;&lt;a href='www.nbic.nl/content/documents/office/ELSYS_Hagema.ppt'&gt;Bagged K-means Metabolomics PPT&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-1437331420092699471?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/1437331420092699471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=1437331420092699471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/1437331420092699471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/1437331420092699471'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/03/bagged-clustering.html' title='Bagged Clustering'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-7540133092384063804</id><published>2009-02-10T08:10:00.000-08:00</published><updated>2009-02-10T08:27:56.297-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pathway'/><title type='text'>Pathway.Enrichment Analysis Tools</title><content type='html'>&lt;a href='http://www.broud.mit.edu/gsea/'&gt;GSEA&lt;/a&gt;&lt;br /&gt;&lt;a href='http://www.DAVID.niaid.nih.gov'&gt;DAVID&lt;/a&gt;&lt;br /&gt;&lt;a href='http://discover.nci.nih.gov/gominer'&gt;GOMiner&lt;/a&gt;&lt;br /&gt;&lt;a href='http://www.babelomics.org'&gt;Babelomics&lt;/a&gt;&lt;br /&gt;&lt;a href='http://www.GenMAPP.org'&gt;MAPPFinder&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://gostat.wehi.edu.au/'&gt;GOStats&lt;/a&gt;&lt;br /&gt;&lt;a href='http://vortex.cs.wayne.edu/ontoexpress/'&gt;Ontotools&lt;/a&gt;&lt;br /&gt;&lt;a href='http://genereg.ornl.gov/gotm/'&gt;GOTM&lt;/a&gt;&lt;br /&gt;&lt;a href='http://funspec.med.utoronto.ca'&gt;FunSpec&lt;/a&gt;&lt;br /&gt;&lt;a href='http://www.oeb.harvard.edu/hartl/lab/publications/GeneMerge.html'&gt;GeneMerge&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://llama.med.harvard.edu/Software.html'&gt;FuncAssociate&lt;/a&gt;&lt;br /&gt;&lt;a href='http://gin.univ-mrs.fr/GOToolBox'&gt;GOToolBox&lt;/a&gt;&lt;br /&gt;&lt;a href='http://www.medinfopoli.polimi.it/GFINDer/'&gt;GFINDer&lt;/a&gt;&lt;br /&gt;&lt;a href='http://bioinfo.vanderbilt.edu/webgestalt/'&gt;WebGestalt&lt;/a&gt;&lt;br /&gt;&lt;a href='http://microarraysunife.it'&gt;GOAL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://pathwayexplorer.genome.tugraz.at'&gt;Pathway Explorer&lt;/a&gt;&lt;br /&gt;&lt;a href='http://dulci.biostat.duke.edu/pathways/'&gt;PLAGE&lt;/a&gt;&lt;br /&gt;&lt;a href='http://www.t-profiler.org/'&gt;t-profiler&lt;/a&gt;&lt;br /&gt;&lt;a href='http://blasto.iq.usp.br/~tkoide/BayGO/'&gt;WebBayGO&lt;/a&gt;&lt;br /&gt;&lt;a href='http://www.jprogo.de/'&gt;JProGO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://array.kobic.re.kr/ADGO'&gt;ADGO&lt;/a&gt;&lt;br /&gt;&lt;a href='http://genetrail.bioinf.uni-sb.de/'&gt;GeneTrail&lt;/a&gt;&lt;br /&gt;&lt;a href='http://integromics.kobic.re.kr/GAzer/index.faces'&gt;GAZER&lt;/a&gt;&lt;br /&gt;&lt;a href='http://bioinfoserver.rsbs.anu.edu.au/utils/PathExpress'&gt;PathExpress&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Original Source from Al-Shahrour et. al, May 31 2008&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-7540133092384063804?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/7540133092384063804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=7540133092384063804' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/7540133092384063804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/7540133092384063804'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/02/pathwayenrichment-analysis-tools.html' title='Pathway.Enrichment Analysis Tools'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-977505453228528486</id><published>2009-01-08T22:45:00.000-08:00</published><updated>2009-01-08T22:59:37.844-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Vista'/><title type='text'>Vista 64 = Messy Awesomeness</title><content type='html'>It took me a whole day to back up and install windows vista 64. Finally i can access my 8G of ram. Some softwares are heavily ram chewers (The gigantic adobe bundles) so even 3.25G ram is kinda skinny now.&lt;br /&gt;&lt;br /&gt;Here are some of the issues:&lt;br /&gt;1. Some OEM vista cdkeys are interchanageable for 32 bit and 64 bit versions. I have tried my ultimate 32 bit vista key and it works gracefully with the 64 bit DVD.&lt;br /&gt;&lt;br /&gt;2. Cheap stuff = bad compatibility. The wireless dongle i bought for 15 bucks now shows the weakness over a pci wireless card: no driver for vista 64. I have to hook up two 3 meter cable to reach the router, and i still have the plastic connector back 3 years ago. And it rocks!&lt;br /&gt;&lt;br /&gt;3. Weird file protection issues. Ok, here's what it is. Some softwares like acrobat reader will create some protection over certain files even admin can't delete in the first few tries. You need to 'takeover' the file ownership then 'grant' it to new administrators. Luckily these commands supports *.* batches...otherwise i have to manually deal with hundreds of files.&lt;br /&gt;&lt;br /&gt;If you got access denied:&lt;br /&gt;takeown /f file_name&lt;br /&gt;icacls file_name /grant administrators:F&lt;br /&gt;&lt;br /&gt;Then you may delete all the files.&lt;br /&gt;There may be a hidden manual that can turn the entire vista into commandline?&lt;br /&gt;&lt;br /&gt;4. There was a weird *.mov file on my computer in vista 32 that i could not remove before. First i thought it was related to hardware failure (NOOOO!) Chkdsk was totally green. I can play this file, it was fine, but any other operations, like rename, cut, delete, even right click on properties will freeze the explorer. I turned off OAS still no luck. Some googling showed that ppl have encountered similar issues, but no clear solutions were provided. Besides, this was not related to privileges.&lt;br /&gt;&lt;br /&gt;Now i will see how vista works with my 8G of ram.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-977505453228528486?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/977505453228528486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=977505453228528486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/977505453228528486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/977505453228528486'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2009/01/vista-64-messy-awesomeness.html' title='Vista 64 = Messy Awesomeness'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-312412619990782750</id><published>2008-10-24T00:08:00.001-07:00</published><updated>2008-10-24T00:09:55.211-07:00</updated><title type='text'>MV</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/U3mu5GCjdyo&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/U3mu5GCjdyo&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;1 nites work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-312412619990782750?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/312412619990782750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=312412619990782750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/312412619990782750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/312412619990782750'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/10/mv.html' title='MV'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-9019415310622269756</id><published>2008-10-12T12:21:00.000-07:00</published><updated>2008-10-12T12:47:22.702-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ExtJS'/><title type='text'>ExtJS learning notes</title><content type='html'>Useful tips.&lt;br /&gt;1. 'mousewheel' event indeed can be removed. Something is messed up in my code. Need to figure out a way to avoid functions registered twice.&lt;br /&gt;2. Ext.apply, Ext.applyIf, can quickly apply options to a given object;&lt;br /&gt;3. function.call(this), execute the function under a specific scope.&lt;br /&gt;4. Ext.reg(), register custom xtypes&lt;br /&gt;5. EventManger.onWindowResize(), add custom window resize functions, which are performed right AFTER the viewport sync functions.&lt;br /&gt;6. Function.createSequence can create a function that call same params with the original&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Btw, !important in CSS means immutable..and non-overidable D:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-9019415310622269756?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/9019415310622269756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=9019415310622269756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/9019415310622269756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/9019415310622269756'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/10/extjs-learning-notes.html' title='ExtJS learning notes'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-5068042345308882702</id><published>2008-10-10T15:32:00.000-07:00</published><updated>2008-10-10T15:35:46.145-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cBrowser'/><title type='text'>Updates</title><content type='html'>&lt;iframe src="http://dgb.ncibi.org/cBrowser/0.1" width="600" height="450" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Updates:&lt;br /&gt;1. Added column names and rownames into index, remote loading data.&lt;br /&gt;2. Added the mini map...no click &amp; go functions yet&lt;br /&gt;3. Mousewheel in/out&lt;br /&gt;&lt;br /&gt;Weird ext bugs:&lt;br /&gt;1. mousewheel event can't be removed! annoying.&lt;br /&gt;2. same function if registered twice will be performed twice. Trying to sort this out.&lt;br /&gt;3. Weird behavior of selection models. I will get back to this when i have more time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-5068042345308882702?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/5068042345308882702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=5068042345308882702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/5068042345308882702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/5068042345308882702'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/10/updates.html' title='Updates'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-4041450800907803549</id><published>2008-10-08T17:02:00.001-07:00</published><updated>2008-10-08T17:03:50.326-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Feelings'/><title type='text'>Time Stamp</title><content type='html'>偶然在Google的右下角看到一个链接:&lt;br /&gt;'try a search from our early days.'&lt;br /&gt;&lt;br /&gt;点击进入了2001年的Google。那个时候，我不上百合，也几乎不知网络为何物。&lt;br /&gt;好奇心驱使下，在搜索栏里填入了自己的名字和南京大学。第一个hit，也是&lt;br /&gt;唯一一个和我有关的hit，却打开了我记忆的盒子。&lt;br /&gt;&lt;br /&gt;原始的网站早已404了；一个在我活跃在浦口的时代的网站，也许它的一生也不到4位数的&lt;br /&gt;访问量。它默默消失之后，在Google的故纸堆里，如此期待之外的出现。这里面有的人，&lt;br /&gt;早已天各一方；有的人，若干年后在美国偶遇；有些人，也许大家早已互相忘记，只是看&lt;br /&gt;到这个名字，脑海中浮现出一个模糊的影子，然后一瞬间这些画面就清晰了起来。8年前青&lt;br /&gt;涩而充满激情的校园生活，和那其间的我，现在完全feels like a dream.&lt;br /&gt;&lt;br /&gt;What has been lost, should not be forgotten. &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NwBStxu5YHo/SO1KMwzGFcI/AAAAAAAAAHM/_1F_dnh11BM/s1600-h/englishRadio.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_NwBStxu5YHo/SO1KMwzGFcI/AAAAAAAAAHM/_1F_dnh11BM/s320/englishRadio.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5254937923329332674" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-4041450800907803549?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/4041450800907803549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=4041450800907803549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/4041450800907803549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/4041450800907803549'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/10/time-stamp.html' title='Time Stamp'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NwBStxu5YHo/SO1KMwzGFcI/AAAAAAAAAHM/_1F_dnh11BM/s72-c/englishRadio.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-2999511413620514378</id><published>2008-10-07T14:30:00.000-07:00</published><updated>2008-10-07T14:37:43.136-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cBrowser'/><title type='text'>Quick Chip viewer</title><content type='html'>Around 6-7 hrs of dev time including debugging and fine tuning.&lt;br /&gt;&lt;iframe frameborder='no' src='http://dgb.ncibi.org/cBrowser' width='600' height='450'&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Some new experiences with Ext:&lt;br /&gt;The hidden Ext.lib.Dom provides some handy functions like to calculate the size of the browser window, thanks Jack, it's not in the documentation but i was able to dig it out :)&lt;br /&gt;&lt;br /&gt;Viewport is neat but it may take a while to get it work properly; everytime add/remove elements don't forget to call viewport.doLayout()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-2999511413620514378?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/2999511413620514378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=2999511413620514378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/2999511413620514378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/2999511413620514378'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/10/quick-chip-viewer.html' title='Quick Chip viewer'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-3205597949460577670</id><published>2008-09-16T14:00:00.000-07:00</published><updated>2008-09-16T14:04:11.971-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogspot'/><title type='text'>Adding Javascript Libs to Blogspot</title><content type='html'>In the html/javascript widget, don't paste in all your source libs. If you have a static place to host these libs. Then simply:&lt;br /&gt;[script type="text/javascript" src=".."][script] xml not hapy with greater than and less than. :S&lt;br /&gt;&lt;br /&gt;It works! =D Now i can add tons of custom functions to Blogspot. The code-ability of this hosting is unbeatable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-3205597949460577670?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/3205597949460577670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=3205597949460577670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/3205597949460577670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/3205597949460577670'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/09/adding-javascript-libs-to-blogspot.html' title='Adding Javascript Libs to Blogspot'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-3787916133570818773</id><published>2008-09-16T11:48:00.000-07:00</published><updated>2008-09-16T11:55:59.510-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'>Home Theater + PC Gaming System</title><content type='html'>To build this whole system requires a lot of PhD research. :)&lt;br /&gt;&lt;br /&gt;Display Panels:&lt;br /&gt;Samsung 50" 720p Plasma.&lt;br /&gt;Samsung 22" 1050p LCD.&lt;br /&gt;&lt;br /&gt;Power house 1:&lt;br /&gt;Core Duo 2 E8500 3.16GHz&lt;br /&gt;Radeon 4870 HD 512Mb&lt;br /&gt;650G HDD&lt;br /&gt;Eclipse Keyboard + MX518 mouse&lt;br /&gt;&lt;br /&gt;Power house 2:&lt;br /&gt;Xbox 360, Playstation 2&lt;br /&gt;&lt;br /&gt;Audio: Logitech/Creative 5.1 + 2.1&lt;br /&gt;&lt;br /&gt;Controllers:&lt;br /&gt;Key+mouse * 2 sets, PS2 controllers * 2, Logitech Dual Shock * 1, Driving Force * 1, XB360 Controllers * 2, Guitar * 1.&lt;br /&gt;&lt;br /&gt;I &lt;3 my den!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-3787916133570818773?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/3787916133570818773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=3787916133570818773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/3787916133570818773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/3787916133570818773'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/09/home-theater-pc-gaming-system.html' title='Home Theater + PC Gaming System'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-3165476101917483385</id><published>2008-09-16T11:38:00.000-07:00</published><updated>2008-09-16T11:46:49.089-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GLay'/><title type='text'>Google Summer of Code Summary</title><content type='html'>Project: code name GLay, Cytoscape plugin for community structure detection.&lt;br /&gt;&lt;br /&gt;Source code is here:&lt;br /&gt;&lt;a href="http://code.google.com/p/google-summer-of-code-2008-genmapp/downloads/list"&gt;GenMAPP Repository&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Video Tutorials:&lt;br /&gt;Part 1.&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/W79Kb28348g&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/W79Kb28348g&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Part 2.&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OD3fUF62Gd8&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/OD3fUF62Gd8&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Other presentation materials, slides, recipes:&lt;br /&gt;&lt;a href="http://www.cytoscape.org/cgi-bin/moin.cgi/CommunityStructureLayoutRecipe"&gt;Demo Materials for ICSB(International Conference on Systems Biology, 2008)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NwBStxu5YHo/SM_-8S4ny9I/AAAAAAAAAGM/jYfnR8ROldY/s1600-h/teaserLogos.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_NwBStxu5YHo/SM_-8S4ny9I/AAAAAAAAAGM/jYfnR8ROldY/s320/teaserLogos.png" alt="" id="BLOGGER_PHOTO_ID_5246692402724850642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Details will be updated later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-3165476101917483385?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/3165476101917483385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=3165476101917483385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/3165476101917483385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/3165476101917483385'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/09/google-summer-of-code-summary.html' title='Google Summer of Code Summary'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NwBStxu5YHo/SM_-8S4ny9I/AAAAAAAAAGM/jYfnR8ROldY/s72-c/teaserLogos.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-7272473947671643890</id><published>2008-09-16T11:20:00.000-07:00</published><updated>2008-09-16T11:38:34.785-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dgb'/><title type='text'>Dgb Log: Sep.11, 2008</title><content type='html'>Buttons, buttons!&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Added more buttons to the track controls.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fixed bugs when refreshing tracks, missed one multiplicity factor [my bad].&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Other bugs.. i need a more powerful pesticide&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Various bug fixes. It seems that the optimal running environment of this browser is: Google chrom! Their svg efficiency is just plain awesome. Maybe i should try opera as well, they are leading the SVG benchmark now.&lt;br /&gt;&lt;br /&gt;Attached a latest screenshot.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NwBStxu5YHo/SM_7e8cY2OI/AAAAAAAAAGE/7hZoekgTasE/s1600-h/Dgb2+Screen.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_NwBStxu5YHo/SM_7e8cY2OI/AAAAAAAAAGE/7hZoekgTasE/s320/Dgb2+Screen.jpg" alt="" id="BLOGGER_PHOTO_ID_5246688599949760738" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-7272473947671643890?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/7272473947671643890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=7272473947671643890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/7272473947671643890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/7272473947671643890'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/09/dgb-log-sep11-2008.html' title='Dgb Log: Sep.11, 2008'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NwBStxu5YHo/SM_7e8cY2OI/AAAAAAAAAGE/7hZoekgTasE/s72-c/Dgb2+Screen.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-4433403679344445350</id><published>2008-09-16T11:11:00.000-07:00</published><updated>2008-09-16T11:38:34.786-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dgb'/><title type='text'>Dgb Log: Sep.10, 2008</title><content type='html'>Major updates:&lt;br /&gt;&lt;br /&gt;:D&lt;br /&gt;&lt;br /&gt;1. Fixed zoom-in/out bugs, fixed the caching&lt;br /&gt;&lt;br /&gt;2. Added zooming masks, updated button logos&lt;br /&gt;&lt;br /&gt;3. Keep the slider further away to avoid mouse event failures. The default Ext slider did not register 'onmouseout' events, so what happens is if you hold your mouse down and move it out of the thumb, then let it up, it will go crazy, because the 'onmouseup' event was registered for the thumb, now mouse is out of the thumb. A fix is dynamically bind the 'onmouseout' event with 'onmousedown', and unregister this event in 'onmouseup' to avoid regular mouse in/out triggers. &lt;br /&gt;This has been added to my new track meachnism.&lt;br /&gt; &lt;br /&gt;4. Still seem to have bugs in the proxy dragging :S&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-4433403679344445350?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/4433403679344445350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=4433403679344445350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/4433403679344445350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/4433403679344445350'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/09/dgb-log-sep10-2008.html' title='Dgb Log: Sep.10, 2008'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-6351139368164516384</id><published>2008-09-16T10:49:00.000-07:00</published><updated>2008-09-16T11:38:34.786-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dgb'/><title type='text'>Dgb Log: Sep.8, 2008</title><content type='html'>To save the poky.&lt;br /&gt;&lt;br /&gt;The SVG version of the genome browser now actually works. But in order to provide dynamic zooming i have to put all annotations into the tile, which makes the xml tile data quite large. I think it's the render model needs to be improved: in the png implementation I put lots of image map data in the tile too. It can be smaller because if at a certain zooming level, if the track figure width is smaller than 1 pixel, that annotation will not be incorporated into the tile. In this case I will have to make each tile covers smaller regions, the desired length for now is 200kb. So in order to display 1MB i will need 5 tiles, and they could be very poky. The hybrid design says that I use png tiles instead of svg tile when you want to look at very dense annotations globally. The question is: will this actually be necessary? I probably will just forget the performance tuning for now.&lt;br /&gt;&lt;br /&gt;Summary&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Performance issues. When svgs are rendered, the tile size determines performance. If tile is too large it can be poky.The solution is to introduce a proxy mechanism. Setting opacity to 1 won't help, the svg has to be removed entirely from the svg dom tree. There are still some issues with the 'updateTile Height mechanism, enabling proxy can set the track height to 0 when updating'. Remove the tile while dragging, add it back when dragging is done.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;The solution works. Use proxy to hide tiles when dragging.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Add expand/collapse functions to dynamically show/hide annotation names. One funny story: I can't find the text bounding box measure property in SVG! Even it calculates the character/letter width internally can i can get the text bounding box width programmatically. The work around is to pre calculate the letter width of tahoma letters at size 10, then initialize them into the array to calculate display text bounding box width, which is critical when show/hide ids. For those on the boundaries, some off-screen portions will be rendered to maintain consistency.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;must expand/collapse accordingly with new tiles moving in [jumpTo, scrolling functions]&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Height Synchrononization accomplished, however, a case can happen is tile is updated after mouse is released.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;this case, height need to be synced. Otherwise, height will be synced after.&lt;br /&gt;As this function is pretty fast, can call it whenever. Ok, that was my rant when kept the original blog. The new browser sync track height precisely, no need to manually fine-tune track heights&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;toggle buttons added, add icons later. To show/hide masks, expand/collapse, use proxy, refresh track... lots of button controls&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Damn i worked on this for around 1 year already. There were lots of side-kick projects and my prelim in between, which slowed things down quite a bit.&lt;br /&gt;&lt;br /&gt;Technology has evolved a lot too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-6351139368164516384?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/6351139368164516384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=6351139368164516384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/6351139368164516384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/6351139368164516384'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/09/dgb-log-sep8-2008.html' title='Dgb Log: Sep.8, 2008'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-8651861260494882699</id><published>2008-09-16T10:42:00.000-07:00</published><updated>2008-09-16T11:38:34.786-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dgb'/><title type='text'>Dgb Log: Sep.7, 2008</title><content type='html'>Just two major improvements.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Finished the new zooming model. It turned out that the rounding error of few pixels resulted merely from missing one-line of code. It was a very subtle bug and totally ruined my weekend.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add a cache to store the tiles: a queue of predefiend size. When the limit of cache is reached, the first cached tile will be removed. This avoids repeated go the server to fetch the same tiles.[Even the browser may cache tile data too, but as this is not raw image material, better cache them on the fly.]&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I guess only me could make sense of these work logs. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-8651861260494882699?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/8651861260494882699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=8651861260494882699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/8651861260494882699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/8651861260494882699'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/09/dgb-log-sep7-2008.html' title='Dgb Log: Sep.7, 2008'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-8561175964838959908</id><published>2008-09-16T10:21:00.000-07:00</published><updated>2008-09-16T11:38:34.786-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dgb'/><title type='text'>Dgb Log: Sep.5, 2008</title><content type='html'>I spend the whole day on revising a zooming in/out model. The current google map model is to use fixed size tiles but rendered at different levels. However, google map doesn't have the issue of Multiple Track Scrolling Synchronization (MTSS, oh yeah, i just coined a term) issues.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;The new model design is to fully use the advantage of SVG:&lt;br /&gt;&lt;li&gt;1. Tiles will only be rendered at 1 zooming level. The scaling is done by scaling tiles rather than continuously fetching data from the server.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;2. Buffer tiles are added automatically to the left and right of the track when scrolling and changing zooms.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;3. Rounding errors. If the user drag on the zoomed in tracks, this could cause the tracks with high zooming with 0 pixel movement. This should be corrected, as the cumulative errors could be significant for alignment.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;4. JumpTo: if adding 1 track buffer won't help, the entire track will fetch new data by jumpTo the desired locus directly. However, the ajax calls should be buffered and delayed, as the user may crazily click on 'jumpTo', could result in the effect that when the tiles data are retrieved, they have been removed from DOM already.&lt;br /&gt;&lt;/li&gt; &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;1,2,3 have been implemented so far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-8561175964838959908?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/8561175964838959908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=8561175964838959908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/8561175964838959908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/8561175964838959908'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/09/dgb-log-sep5-2008.html' title='Dgb Log: Sep.5, 2008'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-4527097010176568584</id><published>2008-09-16T10:10:00.001-07:00</published><updated>2008-09-16T11:38:34.786-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dgb'/><title type='text'>Dgb Log: Sep.3, 2008</title><content type='html'>1. Tried foreignObject tag in inline svg, it seems it's not working. It is working in referred svg tho. The original post was on Ajaxian: &lt;a href='http://ajaxian.com/archives/foreignobject-hey-youve-got-html-in-my-svg'&gt;Link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The only advantage to use foreignObject is considering text wraps. SVG has great graphic scalability but relatively poor in text display. FF 3.1 ...&lt;br /&gt;&lt;br /&gt;2. Decided to give the Dgb a version number 2.0. Well, it's just too much.&lt;br /&gt;A sneak peek of version 1.0 Dynamic Genome Browser with the png implementation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src='http://dgb.ncibi.org/dgb' width='600' height='450'&gt;Ur browser is not happy with iframe :)p &lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-4527097010176568584?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/4527097010176568584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=4527097010176568584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/4527097010176568584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/4527097010176568584'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/09/dgb-log-sep3-2008.html' title='Dgb Log: Sep.3, 2008'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-7061979692211389196</id><published>2008-09-16T09:55:00.000-07:00</published><updated>2008-09-16T11:38:34.787-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dgb'/><title type='text'>Dgb Log: Sep.2, 2008</title><content type='html'>Issues:&lt;br /&gt;1. For some reason the dom query doesn't work for svg tags with class attributes using ExtJS.[This is due to the html parser, as inline svg document is not part of xhtml; the 'class' attribute is therefore not appended. Solution: use custom attribute names, or use the prototype dom query, which works very well.]&lt;br /&gt; &lt;br /&gt;2. Drag and Drop completed, use the Ext sortable implementation. It's not perfect but it works. Have to use the Ext.ux.Sortables, but it's still not as good as the scriptaculous implementation.&lt;br /&gt;&lt;br /&gt;The issue with Scriptaculous with xhtml is the default loader is not compliant. &lt;a href='http://dev.rubyonrails.org/ticket/5827'&gt;Bug Link&lt;/a&gt;. The solution is to load scripts separately, but care the loading order. Both solved, still prefer scriptaculous implementation of Sortable.&lt;br /&gt;&lt;br /&gt;Note the Sortable handle issue: if there are multiple elements all assigned the handle class, it seems that only the first in the dom is effective. Haven't done more research yet but should take extra care.&lt;br /&gt;&lt;br /&gt;3. SVG file size may be too big, try to bring the file size down; this is the downside of the verbosity of XML. Also, the dragging is very inefficient when tile size is big (~200kb) in the genome browser. After discussed with Scooter this is because it's very inefficient to drag the huge chunk of XML...&lt;br /&gt;&lt;br /&gt;So png and svg both have their edges though. I was thinking about a hybrid design but that could just be too much for now. (Need one day to think about it).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-7061979692211389196?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/7061979692211389196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=7061979692211389196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/7061979692211389196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/7061979692211389196'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/09/dgb-log-sep2-2008.html' title='Dgb Log: Sep.2, 2008'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4381400018851945158.post-4443056051860950142</id><published>2008-09-16T09:48:00.000-07:00</published><updated>2008-09-16T11:38:34.787-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dgb'/><title type='text'>Haul-in</title><content type='html'>This will be my official blog. Begin to move in!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4381400018851945158-4443056051860950142?l=geekmi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekmi.blogspot.com/feeds/4443056051860950142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4381400018851945158&amp;postID=4443056051860950142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/4443056051860950142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4381400018851945158/posts/default/4443056051860950142'/><link rel='alternate' type='text/html' href='http://geekmi.blogspot.com/2008/09/haul-in.html' title='Haul-in'/><author><name>P.J.</name><uri>http://www.blogger.com/profile/07778470950706098965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
