Wednesday, July 29, 2009

Nice mac-style menu (PyrusMalus )

I ran across this website while looking for some icons. Really cool mac-style javascript menu. Nifty!!!!

PyrusMalus
http://www.pyrusmalus.com





Tuesday, July 28, 2009

Why I am excited about the Azure Platform's .Net Service Bus

Basically, the following statement:

"...Full-duplex, connection-oriented peer-to-peer sessions with network-boundary traversal create direct end-to-end connectivity through NAT"

That's awesome... because any developer that has ever tried to create a real-time, Peer-to-Peer application, he/she knows what hell it is to penetrate firewalls specially Symmetric NATs. Click here to learn about NATs

The Service Bus enables secure, loosely-coupled connectivity between services and applications to navigate firewalls or network boundaries, using a variety of communication patterns. The Access Control service provides an enterprise-class mechanism for federated authorization across organizations and protocols.

In the same way that Microsoft® .NET Framework provides higher-level libraries to make developers more productive, .NET Services help developers focus on their application logic rather than deploying and managing their own cloud-based infrastructure."

Azure's .Net Service Bus enables developers to build applications for the cloud and offers a scalable hosted infrastructure for deploying and managing these applications and their data stores combined with a workflow engine and a security infrastructure. The Azure Service platform is the new OS for internet scaled applications.

Lower Barriers to Building Composite Applications

Using the Service Bus, an application or service can expose and access endpoints that would otherwise be hard or impossible to reach. For example, the endpoints may be located behind network address translation (NAT) boundaries or bound to frequently changing, dynamically assigned IP addresses.
  • Exposes Service Endpoints Easily

    >> Users can access a global hierarchical namespace that is DNS- and transport- independent

    >> Services can be located through a stable, Internet-accessible URL, irrespective of location.

  • Offers Multiple Connection Options

    >> One-way messaging between sender and listener supports unicast and multicast datagram distribution

    >> Full-duplex connection-oriented sessions between sender and listener support bi-directional communication

    >> Full-duplex, connection-oriented peer-to-peer sessions with network-boundary traversal create direct end-to-end connectivity through NAT

  • Supports Publish and Subscribe for Multicasting

    The simple publish/subscribe model lets multiple publishers and multiple subscribers simultaneously use the service’s topic management and event distribution system



More on Azure .Net Service Bus

According to recent traffic studies, the BitTorrent protocol is now responsible for roughly half of all Internet traffic. That's a lot of sharing of personal photos, self-sung songs, and home videos. Half! Next to text messaging, Instant Messaging applications are the social lifeline for our teenagers these days – so much that the text messaging and IM lingo is starting to become a natural part of the colloquial vocabulary everywhere. Apple's TV, Microsoft's Xbox 360, and Netflix are shaking up the video rental market by delivering streamed or downloadable high-quality video and streams on YouTube have become the new window on the world. Gamers from around the world are meeting in photorealistic virtual online worlds to compete in races, rake in all the gold, or blast their respective Avatars into tiny little pieces.

What does all of that have to do with Web 2.0? Very little. While it's indisputable that the Web provides the glue between many of those experiences, the majority of all Internet traffic and very many of the most interesting Internet applications depend on bi-directional, peer-to-peer connectivity.

These familiar consumer examples have even more interesting counterparts in the business and industrial space. Industrial machinery has ever increasing remote management capabilities that allow complete remote automation, reprogramming, and reconfiguration. Security and environment surveillance systems depend on thousands of widely distributed, remotely controlled cameras and other sensors that sit on street poles, high up on building walls, or somewhere in the middle of a forest. Terrestrial and satellite-based mobile wireless technologies make it possible to provide some form of digital connectivity to almost any place on Earth, but making an array of devices addressable and reachable so that they can be integrated into and controlled by a federated, distributed business solution that can leverage Internet scale and reach remains incredibly difficult.

The primary obstacle to creating pervasive connectivity is that we have run out of IPv4 addresses. There is no mere threat of running out, we're already done. The IPv4 space is practically saturated and it's really only network address translation (NAT) that permits the Internet to grow any further. The shortage is already causing numerous ISPs to move customers behind NATs and not to provide them with public IP address leases any longer. Getting a static public IP address (let alone a range) is getting really difficult. IPv6 holds the promise of making each device (or even every general-purpose computer) uniquely addressable again, but pervasive IPv6 adoption that doesn't require the use of transitional (and constraining) tunneling protocols will still take many years.

The second major obstacle is security. Since the open network is a fairly dangerous place these days and corporate network environments are often und unfortunately not much better, the use of Firewalls has become ubiquitous and almost all incoming traffic is blocked by default on the majority of computers these days. That's great for keeping the bad guys out, but not so great for everything else – especially not for applications requiring bi-directional connectivity between peers.

Since these constraints are obviously well-known and understood there is a range of workarounds. In home networking environments the firewall and NAT issues are often dealt with by selectively allowing applications to open inbound ports on the local and network router firewalls using technologies like UPnP or by opening and forwarding port by ways of manual configuration. Dynamic DNS services help with making particular machines discoverable even if the assigned IP address keeps changing. The problem with those workarounds is that they realistically only ever work for the simplest home networking scenarios and, if they do work, the resulting security threat situation is quite scary. The reality is that the broadly deployed Internet infrastructure is optimized for the Web: clients make outbound requests, publicly discoverable and reachable servers respond.

If your application requires bi-directional connectivity you effectively have two choices: Either you bet on the available workarounds and live with the consequences (as BitTorrent does) or you build and operate some form of Relay service for your application. A Relay service accepts and maintains connections from firewalled and/or NAT-ed clients and routes messages between them. Practically all chat, instant messaging, video conferencing, VoIP, and multiplayer gaming applications and many other popular Internet applications depend on some form of Relay service.

The challenge with Relay services is that they are incredibly hard to build in a fashion that they can provide Internet scale where they need to route between thousands or even millions of connections as the large Instant Messaging networks do. And once you have a Relay that can support such scale it is incredibly expensive to operate. So expensive in fact that the required investments and the resulting operational costs are entirely out of reach for the vast majority of software companies. The connectivity challenge is a real innovation blocker and represents a significant entry barrier.

The good news is that Microsoft .NET Service Bus provides a range of bidirectional, peer-to-peer connectivity options including relayed communication. You don't have to build your own or run your own; you can use this Building Block instead. The .NET Service Bus covers four logical feature areas: Naming, Registry, Connectivity, and Eventing.

Naming

The Internet's Domain Name System (DNS) is a naming system primarily optimized for assigning names and roles to hosts. The registration records either provide a simple association of names and IP addresses or a more granular association of particular protocol roles (such as identifying domain's mail server) with an IP address. In either case, the resolution of the DNS model occurs at the IP address level and that is very coarse grained. Since it is IP address centric, a DNS registration requires a public IP address. Systems behind NAT can't play. Even though Dynamic DNS services can provide names to systems that do have a public IP address, relying on DNS means for most ISP customers that the entire business site or home is identified by a single DNS host entry with dozens or hundreds of hosts sitting behind the NAT device.

If you want to uniquely name individual hosts behind NATs, differentiate between individual services on hosts, or want to name services based on host-independent criteria such as the name of a user or tenant, the DNS system isn't an ideal fit.

The .NET Service Bus Naming system is a forest of (theoretically) infinite-depth, federated naming trees. The Naming system maintains an independent naming tree for each tenant's solution scope and it's up to the application how it wants to shape its tree. 'Solution' is a broad term in this context meant to describe a .NET Service Bus tenant – on the customer side, a Service Bus application scope may map to dozens of different on-site applications and hundreds of application instances.

Any path through the naming tree has a projection that directly maps to a URI.

Let's construct an example to illustrate this: You design a logistics system for a trucking company where you need to route information to service instances at particular sites. The application scope is owned by your client, 'ContosoTrucks' which has a number of logistics centers where they want to deploy the application. Your application is called 'Shipping' and the endpoints through which the shipping orders are received at the individual sites are named 'OrderManagement'. The canonical URI projection of the mapping of New York's order management application endpoint instance into the ServiceBus Naming system is
http://servicebus.windows.net/services/contoso/NewYork/Shipping/OrderManagement/

The significant difference from DNS naming is that the identification of services and endpoints moves from the host portion of the URI to the path portion and becomes entirely host-agnostic. The DNS name identifies the scope and the entry point for accessing the naming tree. That also means that the path portion of the URI represent a potentially broadly distributed federation of services in the Naming service, while the path portion of a 'normal' URI typically designates a collocated set of resources.

There is no immediate access API for the Naming system itself. Instead, access to the Naming system is provided through the overlaid Service Registry.

Service Registry

The Service Registry allows publishing service endpoint references (URIs or WS-Addressing EPRs) into the Naming system and to discover services that have been registered.

The primary access mechanism for the Service Registry is based on the Atom Publishing Protocol (APP) allowing clients to publish URIs or EPRs by sending a simple HTTP PUT request with an Atom 1.0 'item' to any name in the naming tree. It's removed by sending an HTTP DELETE request to the same name. There is no need to explicitly manage names – names are automatically created and deleted as you create or delete service registry entries.

Service discovery is done by navigating the naming hierarchy, which is accessible through a nested tree of Atom 1.0 feeds whose master-feed is located at http://servicebus.windows.net/services/[solution]/. Any publicly registered service is accessible through the feed at the respective location.

In addition to the Atom Publishing Protocol, the Service Registry also supports publishing, accessing, and removing endpoint references using WS-Transfer and the Relay service will automatically manage its endpoints in the Service Registry without requiring any additional steps.

The Service Registry is an area that will see quite significant further additions over the next few milestones including support for service categorization, search across the hierarchy, and support for additional high-fidelity discovery protocols.

Connectivity

The core of the connectivity feature area of the .NET Service Bus is a scalable, general-purpose Relay service. The Relay's communication fabric supports unicast and multicast datagram distribution, connection-oriented bi-directional socket communication and request-response messaging.

Towards listening services the Relay takes on the same role as operating-system provided listeners such as Windows' HTTP.SYS. Instead of listening for HTTP requests locally, a relayed HTTP service establishes an HTTP listener endpoint inside the cloud-based Relay and clients send requests to that cloud-based listener from where they are forwarded to the listening service.

The connection between the listener and the Relay is always initiated from the listener side. In most connection modes (there are some exceptions that we'll get to) the listener initiates a secured outbound TCP socket connection into the Relay, authenticates, and then tells the Relay at which place in the naming tree it wants to start listening and what type of listener should be established.

Since a number of tightly managed networking environments block outbound socket connections and only permit outbound HTTP traffic, the socket based listeners are complemented by an HTTP-based multiplexing polling mechanism that builds on a cloud-based message buffer. In the PDC release the HTTP-based listeners only support the unicast and multicast datagram communication, but bidirectional connectivity is quite easily achievable by pairing two unicast connections with mutually reversed client and listener roles.

A special variation of the bi-directional socket communication mode is 'Direct Connect'. The 'Direct Connect' NAT traversal technology is capable of negotiating direct end-to-end socket connections between arbitrary endpoints even if both endpoints are located behind NAT devices and Firewalls. Using Direct Connect you can start connections through the Relay and 'Direct Connect' will negotiate the most direct possible connectivity route between the two parties and once the route is established the connection will be upgraded to the direct connection – without information loss.

With these connectivity options, the Relay can provide public, bi-directional connectivity to mostly any service irrespective of whether the hosting machine is located behind a NAT or whether the Firewalls layered up towards the public network don't allow inbound traffic. The automatic mapping into the Naming system means that the service also gains a public address and the service can, on demand, be automatically published into the Service Registry to make the service discoverable.

In addition to providing NAT and Firewall traversal and discoverability the delegation of the public network endpoint into the Relay provides a service with a number of additional key advantages that are beneficial even if NAT traversal or discoverability are not a problem you need to solve:
  • The Relay functions as a "demilitarized zone" that is isolated from the service's environment and takes on all external network traffic, filtering out unwanted traffic.

  • The Relay anonymizes the listener and therefore effectively hides all details about the network location of the listener thus reducing the potential attack surface of the listening service to a minimum.

  • The Relay is integrated with the Access Control Service and can require clients to authenticate and be authorized at the Relay before they can connect through to the listening service. This authorization gate is enabled by default for all connections and can be selectively turned off if the application wants to perform its own authentication and authorization.

These points are important to consider in case you are worried about the fact that the Relay service provides Firewall traversal. Firewalls are a means to prevent undesired foreign access to networked resources – the Relay provides a very similar function but does so on an endpoint-by-endpoint basis and provides an authentication and authorization mechanism on the network path as well.

If your applications are already built on the .NET Framework and your services are built using the Windows Communication Foundation (WCF) it's often just a matter of changing your application's configuration settings to have your services listen on the Relay instead on the local machine.

The Microsoft.ServiceBus client framework provides a set of WCF bindings that are very closely aligned with the WCF bindings available in the .NET Framework 3.5. If you are using the NetTcpBinding in your application you switch to the NetTcpRelayBinding, the BasicHttpBinding maps to the BasicHttpRelayBinding, and the WebHttpBinding has its equivalent in the WebHttpRelayBinding. The key difference between the standards WCF bindings and their Relay counterparts is that they establish a listener in the cloud instead of listening locally.

All WS-Security and WS-ReliableMessaging scenarios that are supported by the standard bindings are fully supported through the Relay. Transport-level message protection using HTTPS or SSL-protected TCP connections is supported as well.

If the listener chooses to rely on WS-Security to perform its own authentication and authorization instead of using the security gate built into the Relay, the HTTP-based Relay bindings' policy projection is indeed identical to their respective standard binding counterparts which means that client components can readily use the standard .NET Framework 3.5 bindings (and other WS-* stacks such as Sun Microsystems' Metro Extensions for the Java JAX-WS framework).

If you prefer RESTful services over SOAP services, you can build them on the WebHttpRelayBinding using the WCF Web programming model introduced in the .NET Framework 3.5. The Relay knows how to route SOAP 1.1, SOAP 1.2 messages and arbitrary HTTP requests transparently.

The NetEventRelayBinding doesn't have an exact counterpart in the standard bindings. This binding provides access to the multicast publish/subscribe capability in the Relay. Using this binding, clients act as event publishers and listeners act as subscribers. An event-topic is represented by an agreed-upon name in the naming system. There can be any number of publishers and any number of subscribers that use the respective named rendezvous point in the Relay. Listeners can subscribe independent of whether a publisher currently maintains an open connection and publishers can publish messages irrespective of how many listeners are currently active – including zero. The result is a very easy to use lightweight one-way publish/subscribe event distribution mechanism that doesn't require any particular setup or management.

The discussion of the close alignment between the Relay's .NET programming experience and the standard .NET Framework shouldn't imply that the Relay requires the use of the .NET Framework. Microsoft is working with community partners to provide immediate and native Relay support for the Java and Ruby platforms of which initial releases will be available at or shortly after PDC with more language and platform support lined up in the pipeline.

The Relay provides connectivity options that allow you build bidirectional communication links for peer-to-peer communication, allows making select endpoints securely and publicly reachable without having to open up the Firewall floodgates, and provides a cloud-based pub/sub event bus that permits your application to distribute events at Internet scale. I could start enumerating scenarios at this point, but it seems like a safe bet that you can already think of some.

Find out more here:
http://www.microsoft.com/azure/default.mspx
http://www.microsoft.com/azure/servicebus.mspx

Monday, July 27, 2009

Book: Weird Ideas That Work: 11 1/2 Practices for Promoting, Managing, and Sustaining Innovation

I came across this interesting book by Robert I. Sutton, consultant and professor at the Stanford Engineering School.

Weird Ideas That Work: 11 1/2 Practices for Promoting, Managing, and Sustaining Innovation

In this book, Sutton, consultant and professor at the Stanford Engineering School, advocates taking a nontraditional approach to innovation and management in this quirky business manual.


He advises taking unorthodox actions, suggesting managers should forget the past, especially successes; hire people who make them uncomfortable and hire slow learners. According to Sutton, these unconventional steps are particularly important when companies are dealing with unusual problems or stuck in a rut. Standard management policy may work for routine work matters, but weird ideas are far more effective when employees are trying to use innovative techniques.

Sutton uses many real-life examples, like Tetley's pioneering round teabags, to show readers how his suggestions can work. But he observes that even companies such as IBM, Lucent and GE, which have been praised for their innovation, devote only a small percentage of their annual budgets to testing new products and services. Sutton's writing is clear and persuasive, and his book takes an insightful look at innovation.

Awesome read!!!!

Saturday, July 25, 2009

Open Source VoIP

I have been looking for a decent open source VoIP project. Here are some good ones I have found so far:


  1. wxCommunicator

    wxCommunicator is a cross platform open source SIP softphone enabling users to make multiple calls, use several accounts, chat and create conferences. It is very configurable and should work with any VoIP provider. It is based on customized sipXtapi client library and wxWidgets 2.8.x GUI library and distributed under GNU GPL version 2 licence.

    More Info

  2. VMukti

    VMukti is leading Asterisk/ Yate enabled p2p Video IP Communications Suite for Web / PSTN. These serverless broadband ready platform enable OS community to save 90% on capital & operating costs over proprietary software for conferencing & Call Center.

    More Info

  3. GibPhone

    GibPhone is a highly extensible VoIP/IM client for the .NET framework that uses a powerful plugin engine to allow for UI extensions and any call control stack / media payload / transport protocol combination.

    More Info

  4. Ekiga

    Ekiga (formely known as GnomeMeeting) is an open source VoIP and video conferencing application for GNOME. Ekiga uses both the H.323 and SIP protocols. It supports many audio and video codecs, and is interoperable with other SIP compliant software and also with Microsoft NetMeeting.

    More Info

  5. TStone

    TStone is a p2p voip system.It can run on windows or linux. It supports h.323 and sip signaling.It is writed by c/c++ code

    More Info

  6. Landell Voip Application

    A Voip GUI write in C#, based in Tapioca-Voip framework, 100% compatible with Gtalk.

    More Info

  7. Peer to Peer Chat in C#

    Using Microsoft's Peer-to-Peer technology and Adrian Moore's encapsulation, to create an easy to use library for chatting.

    More Info

  8. SIP Stack with SIP Proxy

    C# implementation of SIP

    More Info

  9. Sipek SDK

    SipekSDK is a small VoIP Software Development Kit written in C#. The goal of SipekSDK is to offer simple and easy to use API for VoIP developers.

    More Info

  10. My SIP Switch

    A SIP signalling consolidation tool that allows multi-user management of diverse SIP providers and allows central management of any SIP based VoIP service. Included in this project are a SIP Stack, SIP Registrar, SIP Registration UAC, SIP Stateful Proxy, STUN Server and more. The components are all written in C#.

    More Info

Thursday, July 23, 2009

WCF Hosting

Windows Communication Foundation (WCF) Services can be hosted with Internet Information Services (IIS); with the new Windows Activation Service (WAS) installed with IIS 7.0; or with any managed application process including console, Windows Forms, Windows Presentation Foundation (WPF), or managed Windows service applications.

Selecting the right hosting environment for your services is a choice driven largely by deployment requirements related to transport protocol and operating platform.

A summary of hosting options and supported features:

FeatureSelf-HostingIIS HostingWAS Hosting
Executable Process/ App DomainYesYesYes
ConfigurationApp.configWeb.configWeb.config
ActivationManual at startupMessage-basedMessage-based
Idle-Time ManagementNoYesYes
Health MonitoringNoYesYes
Process RecyclingNoYesYes
Management ToolsNoYesYes



A summary of hosting options based on operating platform and communication protocol:

Operating PlatformProtocolHosting Options
Windows XP/SP2HTTPIIS 5.1 or self-host
Named Pipes, TCP, MSMQSelf-host
Windows VistaHTTP, Named Pipes, TCP, MSMQWAS or self-host
Windows Server 2003HTTPIIS 6.0
Named Pipes, TCP, MSMQSelf-host
Windows Longhorn ServerHTTP, Named Pipes, TCP, MSMQIIS 7.0/WAS or self-host





What is Google Latitude?


Google Latitude is Google’s free software program, a new service that helps you to locate your family member or friends through a mobile phone or the Internet. It was released by Google, on Wednesday, Feb 04, 2009.

Google Latitude uses Global Positioning System, WiFi, and cell tower location data to find/ track/ locate people. The extension of Google Maps, the service also uses Google's mapping software for mobile phones.

Google Latitude lets users to manually turn on and off the tracking software; thus it gives users choice when they should be or should not be seen. It also lets users to choose the people who should be able to locate them. For using Google Latitude, the users are required to sign up for the service,

In its blog, Google said, "Fun aside, we recognize the sensitivity of location data, so we've built fine-grained privacy controls right into the application. You not only control exactly who gets to see your location, but you also decide the location that they see."

Steve Lee, product manager for Google Latitude, reported that Google Latitude is currently available to the users in 27 countries. Initially, it will work on most color-screen BlackBerry phones, most phones with Windows Mobile 5.0 or later, most Symbian-based devices such as Nokia smartphones, and G1 phones with updated Android operating system. Eventually, the service will run on Apple's iPhone and iTouch and many Sony Ericsson devices.

Sign up for Google Latitude Service


MSMQ, WCF and IIS: Getting them to play nice

I was doing some research on Hosting my WCF Service in IIS 6. My service supports both synchronous and asynchronous behavior (using msmq).

Below is a summary of hosting options based on operating system platform and communucation protocol:

Operating Platform Protocol Hosting OptionsWindows XP/SP2 HTTP IIS 5.1 or self-host Named Pipes, TCP, MSMQ Self-hostWindows Vista HTTP, Named Pipes, TCP, MSMQ WAS or self-hostWindows Server 2003 HTTP IIS 6.0 Named Pipes, TCP, MSMQ Self-hostWindows “Longhorn” Server HTTP, Named Pipes, TCP, MSMQ IIS 7.0/WAS or self-host


MSMQ, WCF and IIS 7
I found this article that contains very good information on getting MSMQ, WCF and IIS 7 (WAS) to play nice.


Also Read:

Wednesday, July 22, 2009

Facebook and Flex: ROCK ON!!!!

I've been incredibly motivated and enthusiastic about Flex since I first started working with it back in late 2007. I have created Flex based interfaces for desktop apps (C++ container) and medium and large web-based apps. I have always loved Flex for the ease of use and the power it gives to developers.

Flex is, hands down, the best RIA technology available today. Flex is fast becoming the primary technology for building Rich Internet Applications.

Facebook, on the other hand, is the best, most powerful and the fastest growing social networking platform. The real power of facebook is not because of "social" (there's LinkedIn and other websites for that!)... the power is in the "platform". If you don't agree with me, just look at what Apple did with its Application platform! It's making much more money after it opened its platform to developers. Facebook would be nothing but a better and clearner looking LinkedIn, if it wasn't for the applicaiton platform.

Most of my friends use Facebook for the applications. They probably spend 10-20% of their time managing their profile and friends (social graph) and the rest on apps like iLike, Zombies, Mafia War etc etc. Good or bad, these apps have an audience - A global, over 200 million large audience. So, if you have an apps, that costs, say $1, and appeals to only 1% of the audience - you have the potential to make $2 million!!!! THAT'S THE POWER!!!!!

Facebook's Ad Platform is not as good as Google's AdSense, but that is another area that can generate a lot of money for not just Facebook, but the application developers.

So, if you combine the best RIA technology (FLEX) with the best Social, Application platform (FACEBOOK), you can make a killing!!!
You can deliver rich, social experiences on the web. This is what Adobe Developer Connection website has to say:

The Adobe Flash Platform and Facebook Platform provide the ideal solution for building rich, social experiences on the web. Flash is available on more than 98% of Internet-connected PCs, so people can immediately access the applications, content, and video that enable social interactions. The Facebook Platform is used by millions of people everyday to connect and share with the people in their lives. Together, both platforms allow you to:

  • Share: Create rich interactions for users to share with friends.
  • Have fun: Make games social; let users compete against their friends.
  • Connect: Let users connect to your RIAs with Facebook Connect.
  • Solve problems: Build RIAs that harness the power of community.
  • Reach people: Reach millions of Facebook users through social distribution.

The new ActionScript 3.0 Client Library for Facebook Platform API, fully supported by Facebook and Adobe, makes it easy to build applications that combine the strengths of the Flash Platform and Facebook Platform.

Below are some links that will help you get started with writing Facebook apps using Flex. (This list is going to grow as I find new articles and create new apps)


Flex + Facebook

Create your first Facebook application with Flex

Deploy your first Flex application on Facebook

Facebook

Create a 3D Sliding Puzzle Game in Flex with ActionScript 3.0 and Away3D

Sunday, July 19, 2009

Healthy food hot list: The Healthiest Foods on the Planet

The following is a "healthy food hot list" consisting of the 28 food that will give you the biggest nutritional bang for you caloric buck, as well as decrease your risk for deadly illnesses like cancer, diabetes and heart disease. Along with each description is a suggestion as to how to incorporate these power-foods into your diet.

Fruits

01. Apricots

The Power: Beta-carotene, which helps prevent free-radical damage and protect the eyes. The body also turns beta-carotene into vitamin A, which may help ward off some cancers, especially of the skin. One apricot has 17 calories, 0 fat, 1 gram of fiber. Snacks on them dried, or if you prefer fresh, buy when still firm; once they soften, they lose nutrients.

02. Avocados

The Power: Oleic acid, an unsaturated fat that helps lower overall cholesterol and raise levels of HDL, plus a good dose of fiber. One slice has 81 calories, 8 grams of fat and 3 grams of fiber. Try a few slices instead of mayonnaise to dress up your next burger.

03. Raspberries

The Power: Ellagic acid, which helps stall cancer-cell growth. These berries are also packed with vitamin C and are high in fiber, which helps prevent high cholesterol and heart disease. A cup has only 60 calories, 1 gram of fat and 8 grams of fiber. Top plain low-fat yogurt or oatmeal (another high fiber food) with fresh berries.

04. Cantaloupe

The Power: Vitamin C (117mg in half a melon, almost twice the recommended daily dose) and beta-carotene - both powerful antioxidants that help protect cells from free-radical damage. Plus, half a melon has 853mg of potassium - almost twice as much as a banana, which helps lower blood pressure. Half a melon has 97 calories, 1 gram of fat and 2 grams of fiber. Cut into cubes and freeze, then blend into an icy smoothie.

05. Cranberry Juice

The Power: Helps fight bladder infections by preventing harmful bacteria from growing. A cup has 144 calories, 0 grams of fat and 0 fiber. Buy 100 percent juice concentrate and use it to spice up your daily H20 without adding sugar.

06. Tomato

The Power: Lycopene, one of the strongest carotenoids, acts as an antioxidant. Research shows that tomatoes may cut the risk of bladder, stomach and colon cancers in half if eaten daily. A tomato has 26 calories, 0 fat and 1 gram of fiber. Drizzle fresh slices with olive oil, because lycopene is best absorbed when eaten with a little fat.

07. Raisins

The Power: These little gems are a great source of iron, which helps the blood transport oxygen and which many women are short on. A half-cup has 218 calories, 0 fat and 3 grams of fiber. Sprinkle raisins on your morning oatmeal or bran cereal - women, consider this especially during your period.

08. Figs

The Power: A good source of potassium and fiber, figs also contain vitamin B6, which is responsible for producing mood-boosting serotonin, lowering cholesterol and preventing water retention. The Pill depletes B6, so if you use this method of birth control, make sure to get extra B6 in your diet. One fig has 37 to 48 calories, 0 fat and 2 grams of fiber. (Cookie lovers - fig bars have around 56 calories, 1 gram of fat and 1 gram of fiber per cookie). Fresh figs are delicious simmered alongside a pork tenderloin and the dried variety make a great portable gym snack.

09. Lemons/Limes

The Power: Limonene, furocoumarins and vitamin C, all of which help prevent cancer. A wedge has 2 calories, 0 fat and 0 fiber. Buy a few of each and squeeze over salads, fish, beans and vegetables for fat free flavor. See also: Beneficial Bytes: Lemons and Limes.

Vegetables

10. Onions

The Power: Quercetin is one of the most powerful flavonoids (natural plant antioxidants). Studies show it helps protect against cancer. A cup (chopped) has 61 calories, 0 fat and 3 grams of fiber. Chop onions for the maximum phytonutrient boost, or if you hate to cry, roast them with a little olive oil and serve with rice or other vegetables.

11. Artichokes

The Power: These odd-looking vegetables contain silymarin, an antioxidant that helps prevent skin cancer, plus fiber to help control cholesterol. One medium artichoke has 60 calories, 0 fat and 7 grams of fiber. Steam over boiling water for 30 to 40 minutes. Squeeze lemon juice on top, then pluck the leaves off with your fingers and use your teeth to scrape off the rich-tasting skin. When you get to the heart, you have found the best part!

12. Ginger

The Power: Gingerols may help reduce queasiness; other compounds may help ward off migraines and arthritis pain by blocking inflammation-causing prostaglandins. A teaspoon of fresh gingerroot has only 1 calorie, 0 fat and 0 fiber. Peel the tough brown skin and slice or grate into a stir-fry.

13. Broccoli

The Power: Indole-3-carbinol and sulforaphane, which help protect against breast cancer. Broccoli also has lots of vitamin C and beta-carotene. One cup (chopped) has 25 calories, 0 fat and 3 grams of fiber. Don't overcook broccoli - instead, microwave or steam lightly to preserve phytonutrients. Squeeze fresh lemon on top for a zesty and taste, added nutrients and some vitamin C.

14. Spinach

The Power: Lutein and zeaxanthin, carotenoids that help fend off macular degeneration, a major cause of blindness in older people. Plus, studies show this green fountain of youth may help reverse some signs of aging. One cup has 7 calories, 0 fat and 1 gram of fiber. Add raw leaves to a salad or sauté with a little olive oil and garlic.

15. Bok Choy (Chinese cabbage)

The Power: Brassinin, which some research suggests may help prevent breast tumors, plus indoles and isothiocyanates, which lower levels of estrogen, make this vegetable a double-barreled weapon against breast cancer. A cup will also give you 158mg of calcium (16 percent of your daily recommended requirement) to help beat osteoporosis. A cup (cooked) has 20 calories, 0 fat and 3 grams of fiber. Find it in your grocer's produce section or an Asian market. Slice the greens and juicy white stalks, then saute like spinach or toss into a stir-fry just before serving.

16. Squash (Butternut, Pumpkin, Acorn)

The Power: Winter squash has huge amounts of vitamin C and beta-carotene, which may help protect against endometrial cancer. One cup (cooked) has 80 calories, 1 gram of fat and 6 grams of fiber. Cut on in half, scoop out the seeds and bake or microwave until soft, then dust with cinnamon.

17. Watercress and Arugula

The Power: Phenethyl isothiocyanate, which, along with beta-carotene and vitamins C and E, may help keep cancer cells at bay. One cup has around 4 calories, 0 fat and 1 gram of fiber. Do not cook these leafy greens; instead, use them to garnish a sandwich or add a pungent, peppery taste to salad.

18. Garlic

The Power: The sulfur compounds that give garlic its pungent flavor can also lower LDL ("bad") cholesterol, lower blood pressure and even reduce your risk of stomach and colon cancer. A clove has 4 calories, 0 fat and 0 fiber. Bake a whole head for 15 to 20 minutes, until soft and sweet and spread on bread instead of butter.

Grains, Beans and Nuts

19. Quinoa

The Power: A half cup of cooked quinoa has 5 grams of protein, more than any other grain, plus iron, riboflavin and magnesium. A half-cup has 318 calories, 5 grams of fat and 5 grams of fiber. Add to soup for a protein boost. Rinse first, or it will taste bitter.

20. Wheat Germ

The Power: A tablespoon gives you about 7 percent of your daily magnesium, which helps prevent muscle cramps; it is also a good source of vitamin E. One tablespoon has 27 calories, 1 gram of fat and 1 gram of fiber. Sprinkle some over yogurt, fruit or cereal.

21. Lentils

The Power: Isoflavones, which may inhibit estrogen-promoted breast cancers, plus fiber for heart health and an impressive 9 grams of protein per half cup. A half-cup (cooked) has 115 calories, 0 fat and 8 grams of fiber. Isoflavones hold up through processing, so buy lentils canned, dried or already in soup. Take them to work, and you will have a protein packed lunch.

22. Peanuts

The Power: Studies show that peanuts or other nuts (which contain mostly unsaturated "good" fat) can lower your heart-disease risk by over 20 percent. One ounce has 166 calories, 14 grams of fat and 2 grams of fiber. Keep a packet in your briefcase, gym bag or purse for a protein-packed post-workout nosh or an afternoon pick me up that will satisfy you until supper, or chop a few into a stir-fry for a Thai accent. See also: The Nut Case

23. Pinto Beans

The Power: A half cup has more than 25 percent of your daily requirement of folate, which helps protect against heart disease and reduces the risk of birth defects. A half-cup (canned) has 103 calories, 1 gram of fat and 6 grams of fiber. Drain a can, rinse and toss into a pot of vegetarian chili.

24. Yogurt

The Power: Bacteria in active-culture yogurt helps prevent yeast infections; calcium strengthens bones. A cup has 155 calories, 4 grams of fat, 0 grams of fiber. Get the plain kind and mix in your own fruit to keep calories and sugar down. If you are lactose intolerant, never fear -- yogurt should not bother your tummy.

25. Skim Milk

The Power: Riboflavin (a.k.a. vitamin B2) is important for good vision and along with vitamin A might help improve eczema and allergies. Plus, you get calcium and vitamin D, too. One cup has 86 calories, 0 fat and 0 fiber. If you are used to high fat milk, don't go cold turkey; instead, mix the two together at first. Trust this fact: In a week or two you won't miss it!

Seafood

26. Shellfish (Clams, Mussels)

The Power: Vitamin B12 to support nerve and brain function, plus iron and hard-to-get minerals like magnesium and potassium. Three ounces has 126 to 146 calories, 2 to 4 grams of fat and 0 fiber. Try a bowl of tomato-based (and low fat) Manhattan clam chowder.

27. Salmon

The Power: Cold-water fish like salmon, mackerel and tuna are the best sources of omega-3 fatty acids, which help reduce the risk of cardiac disease. A 3-ounce portion (cooked) has 127 calories, 4 grams of fat, 0 fiber. Brush fillets with ginger-soy marinade and grill or broil until fish flakes easily with a fork.

28. Crab

The Power: A great source of vitamin B12 and immunity-boosting zinc. A 3-ounce portion has 84 calories, 1 gram of fat, 0 fiber. The "crab" in sushi is usually made from fish; buy it canned instead and make your own crab cakes. See also: Fish and Seafood Recipes


Also worth reading:

12 Healthiest Foods On Earth
The 100 Healthiest Foods
Nutrition and Eating Well
20 Unhealthy Foods That You Think Are Healthy But Are Actually Killing You Slowly
11 Ways To Boost Your Energy
Foods You Should Be Eating, But Aren't
Why You Should Be Getting More Sun

11 essential loan-modification tips

If you’re considering ways to lower your monthly mortgage payments, here’s what you need to know to get the help you need and avoid scammers
http://realestate.msn.com/article.aspx?cp-documentid=20589023&GT1=35000