Top Stories Photos on Yahoo! News Photos

This egg looking sleeping bench makes me think about the mass production chicken farm seen in the Science Channel where all kinds of method are utilized to make the chicken more productive from hatching eggs, growing chicks, egg producing, and so on. I’m think of a high tech bench for IT workers where you can can lay down in a really less stressful pose from neck to feet. No waist pain or back pain any more. Eyes are covered by a VR mask with magnifiers so you will have minimum eye fatigue. Eye tracking system will move the picture you see to reduce your eye’s work to move your focus. You then basically have a huge virtual screen with pixel size of 10 times that of the traditional computer monitor, so you can look at much longer code blocks. The bench can do massage at the same time. When you feel tired, play some 3D game or MTV and you can get back to work again. It’s like living in the Matrix inside the Matrix. People need life!
Bookmarking a website and bookmarking an article are different usage of the bookmarking tools. You may want to have a clean collection of all your favorite websites and on the other hand you may want to bookmark multiple good articles from the same website. This way your bookmark collection is a mixture of both. This is my little frustration of using sites like http://del.icio.us/. It’s great in collect articles and links, but not so great to keep a clean list of my favorite websites. Although I can use a different bookmarking tool (e.g., http://favorites.live.com/, which could sync with IE bookmarks) to collect just sites, it’d be nice if I could keep them in one place. So I developed a custom web control that could be put on your website to display all the websites of a list of http://del.icio.us/ RSS feeds in the order of popularity. Multiple articles of each websites are collapsed into one entry shown for that website, and the number of the articles bookmarked from that site is used as the indicator of the popularity of that site within the RSS feeds. So the more articles of a website that are bookmarked, the more popular the website is. In my example of using this web control, I put my bookmark feeds and the del.icios.us homepage hotlist feeds in so that I will get a list of all the websites either I bookmarked or on the hostlist.
The "Url" property of the control specifies a list of RSS feeds to extract from. The delimiter is ";".
RSS.NET library is used to parse the RSS feed. The website part (domain) of the URL is extracted and used as the collapsing key.
|
protected override void RenderContents(HtmlTextWriter output)
{
// Get each individual RSS feed
char[] delimiters = { ‘;’ };
string[] feeds = Url.Split(delimiters);
// Get all websites
SortedDictionary<string, int> sites =
new SortedDictionary<string, int>();
foreach (string feedUrl in feeds)
{
RssFeed feed = RssFeed.Read(feedUrl);
foreach (RssChannel channel in feed.Channels)
{
foreach (RssItem item in channel.Items)
{
string link = item.Link.Scheme + "://" +
item.Link.Host;
if (sites.ContainsKey(link))
{
sites[link]++;
}
else
{
sites[link] = 1;
}
}
}
}
// Reorder it on the number of occurrence (thus popularity)
KeyValuePair<string, int>[] popSites =
new KeyValuePair<string,int>[sites.Count];
sites.CopyTo(popSites, 0);
Array.Sort(popSites, new SitePopularityComparer());
foreach (KeyValuePair<string, int> s in popSites)
{
output.Write("( " + s.Value + " ) <a href=\"" +
s.Key + "\">"+ s.Key + "</a><br />");
}
}
public class SitePopularityComparer : IComparer
{
int IComparer.Compare(object x, object y)
{
return ((KeyValuePair<string, int>)y).Value -
((KeyValuePair<string, int>)x).Value;
}
}
|
The web control looks like the following:

Furthermore, it would be cooler to be able to sync this website list into the browser bookmark so that you can use them as your reading list even more conveniently.
The prototype source code can be downloaded here: MyFavoriteWebSites.zip.
MercuryNews.com | 02/17/2007 | Search for pioneering computer scientist called off
Per
Jim’s Search blog, the 3 week search is called off with no clue what happened to the database researcher. Thousands of volunteers helped searching Jim through spy planes, satellite maps, Amazon mTurk, etc. Jim is a Turing Award winner due to his distinguished contribution in database research. He also did a lot of interesting research of indexing the astronomy objects in the vast space. I still remember attending his talk on spatial indexing of the sky in the university and he is an extremely nice person to talk with. I wish him the best of luck. Hope miracle will happen.
Yahoo Pipes is a recently released new innovative product. The name explained itself. It's the web counterpart of UNIX Pipes. UNIX pipes help connecting multiple command line tools to produce a new customized tool, while Yahoo Pipes help connecting the countless web services and boost the power of those web services exponentially. By wiring up the web services on the web, you can create amazing new products of your own.
The pipe network consists of modules (doing processing like filtering, sorting, etc.) and pipes (directing the data flow). RSS and text flow through the pipes and produce the final result in the RSS format. Here is an easy example to show how it works. Let's build a video search that covers YouTube and Soapbox and sort the results based on the rating and play count.
We need 2 user input, keyword and minimum rating required. The Soapbox search is easier. Do a search on Soapbox and copy the RSS URL (notice the parameters on the URL). Create a URLBuilder in the Pipes, paste the URL in the Base, and it will automatically parse the parameters and fill them in below the Base. Then extract the result by a Fetch module and direct them into a filter on the ratings. Finally sort on the rating column and dump the result into Pipe Output module. YouTube is a little bit trickier, because they don't support parameters on the RSS URL. But have a tag based URL explained here. Fortunately Yahoo Pipes has a String Concatenate module, which could be used to connect the 3 pieces "feed://www.youtube.com/rss/tag/", user search keyword, and ".rss". Connect the resulting URL to the Fetcher too and we are done. One small problem though. Because YouTube feed doesn't supply the rating information, so the sorting is only effect on the result item from Soapbox. Now try this new video search here.
I suggest Yahoo Pipes to also include the following features:
- When several sources are Union'ed their items are listed in the order of the sources. So if the sources in the front has pages of items, it's very difficult to surface the items from the source at the end. It'd be helpful if a Shuffle module is provided so that when doing the Union, it can shuffle the items from multiple sources. Ideally some sort of weighting function can be specifid to differentiate the relative importance of each source.
- When clicking on an pipe, it highlight the 2 modules it connects.
- When clicking on an module, it's directly connected modules are hightlighted.
Publishing from Microsoft Office to blog sites is attractive because you can make use of the rich editing and formatting functionalities of Word, OneNote, etc. If you have multiple blogs, you could publish to all your blogs from one place conveniently.
Suppose you are working in OneNote and a good idea struck you and you want to blog about it and publish to one of your tech blogs implemented with Movable Type. Compose your blog in a new page in OneNote. "Menu" –> "File" –> "Send To" –> "Blog".
Edit the title, click the "Publish" button on the top left, choose "Register an account" (you only need to do this once and the blog manager will memorize it), choose blog type "Other", choose API "MetaWebLog", type in API URL "http://YOUR-DOMAIN/PATH-TO-MT/mt-xmlrpc.cgi", the user name is your blog account, but the password is NOT the one you use to login Movable Type due to security considerations. To set/get the password, login to your blog website, click your username on the top right corner, and at the bottom of the user information, you will see the "Web Services Password". You can set one that is different from your account password. "OK" and your blog is published.
Windows live search macros enable you to build your own customized search engines. You could share your macros in the public directories or put it on your own websites or blogs as a search box. For example, if you have multiple websites, including 2 technical blogs, 1 personal blog, 2 bookmarking feeds, and so on, you could build a federated search engine that covers all your sites and feeds. Put it on your personal website or blog so that your readers and fans can search just within all your sites and feeds. Isn’t that cool? You could also build your search engines to cover your favorite entertainment websites or technical reference sites, so on and so forth.
Here is an example how I created mine (which you could see on the right side bar of my blog), go to
http://search.live.com/macros, click “Get started”, Choose “Advanced”, then type in the following macro. Replace the following sample URLs with your own, otherwise you are sending traffic to me
|
(
site:stanblog.jojoyao.com OR
site:stanyrocks.spaces.live.com OR
site:clipmarks.com/clipper/stanyao/
)
OR
(
link:stanblog.jojoyao.com OR
link:stanyrocks.spaces.live.com
)
|
The above macro searches all your sites and other sites that link to yours (find out what others are discussing about your sites). Test search some keywords and verify your code. Then you could name (we will use later) and save this macro. Then go to
http://search.live.com/siteowner?mkt=en-us, click “Advanced Search Box – Get Started”, uncheck “Site search”, check “Search macro”, type in the name of the macro we did above and a more descriptive display name, and we are about done. After clicking “Next” you will see the search box code that you could add to your site.
It’s sometimes useful to generate JPEG thumbnails of office documents programmatically. With Office object library, it’s very convenient to do this in C#.NET. If it’s for a quick and dirty task, an easy way is to convert the office document into a webpage and then use a WebBrowser control to generate the thumbnail. For a more performance oriented task, customized controls subclassed from the Office classes could be written to dump the bitmaps directly into images. The following is a sample implementation of the first approach. Don’t forget to add the reference to COM object library "Microsoft PointPoint 12.0 Object Library".
Creating Thumbnails for PowerPoint Presentations
| using PowerPoint = Microsoft.Office.Interop.PowerPoint;
private void pptThumbnail(string sourceFile, string targetFile, int thumbW, int thumbH)
{
// Open the document and convert into HTML pages
PowerPoint.ApplicationClass oApp = new PowerPoint.ApplicationClass();
PowerPoint.Presentation oDoc = oApp.Presentations.Open(
sourceFile,
Microsoft.Office.Core.MsoTriState.msoTrue, // read only
Microsoft.Office.Core.MsoTriState.msoTrue, // untitled
Microsoft.Office.Core.MsoTriState.msoFalse); // with window
string tmpHtmlFile = System.IO.Path.GetTempFileName() + ".html";
oApp.Presentations[1].SaveCopyAs(
tmpHtmlFile,
PowerPoint.PpSaveAsFileType.ppSaveAsHTML, // format
Microsoft.Office.Core.MsoTriState.msoTrue); // embed true type font
// Create the thumbnail from the HTML pages
Size browserSize = new Size(800, 800);
WebBrowser browser = new WebBrowser();
browser.Size = browserSize;
browser.Navigate(tmpHtmlFile);
while (WebBrowserReadyState.Complete != browser.ReadyState)
{
Application.DoEvents();
}
Bitmap bm = new Bitmap(browserSize.Width, browserSize.Height);
browser.DrawToBitmap(bm,
new Rectangle(0, 0, browserSize.Width, browserSize.Height));
Bitmap thumbnail = new Bitmap(thumbW, thumbH);
Graphics g = Graphics.FromImage(thumbnail);
g.DrawImage(
bm,
new Rectangle(0, 0, thumbnail.Width, thumbnail.Height),
new Rectangle(0, 0, browserSize.Width, browserSize.Height),
GraphicsUnit.Pixel);
thumbnail.Save(targetFile);
}
|
After a while, the Start menu is filled with all sorts of applications so that it’s somethings hard to find a particular one that you want to open. One way of organizing them is to create sub-folders. But the downside is that you have to do multiple clicks to open an application. There is a helper if you don’t organize them in sub-folders though. Click "Start", then "All Programs", and then type the first letter of the application you want, if there is only one such application that matches, it will automatically load. If there are multiple matching ones, repeat typing that first letter and the highlight will jump through all matchings ones. This makes it easier for you to locate the program. Click it or hit "Enter" once you see the one you want.