Taking The Big Leap To Achieving Web Business Freedom


Picture in your mind a high, windswept cliff overlooking a deep canyon. From the top, it’s impossible to see into the seemingly bottomless abyss below.
At the top of the cliff, a small crowd has gathered. Minutes before, a solitary, simply dressed man had approached and gotten their attention. He is curiously carrying a large, red toolbox.
“In just a few minutes, I’ll be jumping off the edge of the cliff,” the man said.
A loud gasp rippled through the crowd. A voice shouted, “Are you crazy? You’ll get yourself killed!” Others chimed in:“Don’t do it!”“Hey, mister, whatever the problem is, there’s got to be another solution!”“You’re throwing your life away!”
The man raised a hand to speak, and the crowd grew silent.
“I know you think I am insane, and what I’m about to do probably is, to a degree,” he began. “But they’re a couple things you need to know.
“First, I’m not the first to jump off this cliff,” he continued. “In fact, it happens many, many times every day.” The crowd murmured, with some pressing a little closer and some taking a step back.
“Sometimes there are groups like this watching, and sometimes not,” the man said. “Some watching want and even hope the person will plunge and not make it. Yet others pray the person will somehow avoid certain disaster, and offer what encouragement they can.
“Second, whatever the reason that brings them to the edge, the people who take this leap share a few things in common,” he said. “They’re at a point in their lives when they feel they have no choice but to jump into the void. Life has driven them to the precipice, and they are eventually willing, despite all fear and doubt and despair, to take the plunge.
“Finally, each person stands at the edge with a toolbox, much like this,” the man said. He held up the shiny, red toolbox. “Inside each person’s box is a unique set of tools. No two sets are alike. But each literally holds the keys to their future—whether their leap ends dashed on the rocks, or whether they are able to build wings and fly.”
A woman from the crowd interrupted. “That is ridiculous!” she said. “Once you take a leap like that, no one can possibly use ‘tools’ to save themselves, much less ‘fly!’”
The man looked at the woman, and then around at the others, and smiled.
“Fortunately, this is not just any ordinary toolbox,” he said. “For the ‘tools’ represent all the talents and qualities that make up each person’s life—their attitude about success and failure, their willingness to let go, their belief in themselves, and so on. And even for people who seemingly lack any special knowledge or skills, often there is real magic that takes place, enabling them to save themselves and even others!”
The man was silent, and let his words sink in. Then, he picked up the box and turned to face the edge. Suddenly, and without looking back, he went over and was gone in a flash.
The people rushed to the edge, waiting and listening and wondering what fate would bring the crazy man with the red toolbox.

Ads, comments & social bookmarking, these are all things that website owners hope & wish that the visitors to their sites will click on.


There are some questions that seem to have no definitive answers bouncing around in my head. Ads, comments & social bookmarking, these are all things that website owners hope & wish that the visitors to their sites will click on or participate in. Lets discuss each of these three items and see if you can help answer some questions I & perhaps yourself have.
Ads
Do you click on ads when you like someone’s website? Is it inappropriate to click on an ad if you enjoy a site knowing it will just send two cents or a dollar into the owners ad account(s)? Are we as visitors adverse to doing this or do people just not know that it helps contribute to the designer of said site?
I know that there are many sites I have enjoyed over the years and on some I have never clicked on an ad. As I look back I wonder would it have been so bad to click an ad or two to show my appreciation. Lately I have been clicking on an ad if I actually enjoy someone’s site. In some cases I will even click an ad if the article I am reading just captures my attention so that I read it to the end.
Think of clicking on ad as paying for a newspaper or local news rag. The small amount that the owner receives should entice them to create more & more enjoyable content. Maybe in this way we can reward those who deserve it for their contribution. Perhaps by clicking on a skyscraper ad versus a smaller ad depending upon our enjoyment of the site or content would make us a true connoisseur of the content.
Comments
While I have less thoughts on this subject, more of a piece of advice really, here’s one question. Is it proper etiquette to leave a comment about an article if you enjoyed it? Have we as visitors really gotten to the point where we move too fast that this one minute would slow us down? I am myself also guilty of not leaving comments but am really putting forth an effort to do so lately.
My piece of advice is actually common sense but there are still some people out there, blog owners mostly, that do not have captcha or do not moderate the comments posted on their sites/blogs. This allows spam of the highest proportion to flood their blogs. Have you that moderate your sites comments seen some of the stuff that spammers try to get thru? I have seen comments that are like whole entire miniature websites of links try to get posted on this site.
Moderate your comments!
Social Bookmarking
With the advent of social bookmarking like Digg, StumbleUpon, Buzz & Technorati among others a whole new way of grading or reviewing websites & articles has opened up. Websites and blogs can now be graded by visitors Digging or Stumbling your content, this can either bring you yet more visitors if your content appeals to the masses or just leave you stuck on the sidelines if graded poorly.
My question is do you actually take the few seconds to socially bookmark a site or article? Clicking an ad would be more my style as it just seems quicker to me, I am lazy, but I am getting in the habit of socially bookmarking more & more. When an article of mine gets Dugg or Stumbled it brings in more & more traffic making me feel liking writing more often.
There is nothing more rewarding than going from 50 -60 visitors a day to 200-300 for a webmaster. To reach the front page of Digg or any of the other social bookmarking front runners out there is the pinnacle of achievement for a writer. While I have yet to obtain this lofty status I can aspire to one day climb that summit.
Afterword
I hope to receive some answers to my questions knowing that some of you out there have answers of your own. Clicking on an ad, making a comment or socially bookmarking will not hurt you in any way, shape or form. In fact it might make you start to reward those who do well in their endeavors. Some of you can explain if you feel that my opinions could be considered proper website or blog visitor etiquette.

Mule has the ability to notify you when certain key internal events occur.

Mule has the ability to notify you when certain key internal events occur. It can, for example, raise a notification when a transaction is successfully committed or when it has successfully completed loading. This facility is not very well known and I thought I would create a series of blog posts to talk about it and show how it can be used.
Let me first point out that these notifications are NOT Mule messages. The notification is NOT sent to an endpoint. It is NOT sent via a router. It has nothing to do with the messages that would be sent through a normal Mule application.
The only way you can receive these notifications is if you create a POJO that is registered to listen for them. There are (currently) 12 different types of notifications that Mule can raise:

Manager notifications are raised while the state of your Mule application changes, such as when it is initialising, starting or even stopping.
Model notifications, on the other hand, are raised when the state within a single Mule model (identified by the XML elements) changes. You will also receive notifications when individual components are being registered or unregistered.
Component notifications are specific to state changes for individual components. Whenever a component is started or stopped (or paused and resumed), a component notification is raised.
Connection notifications are related to transports and can tell you whether it was un/successful in connecting to the underlying resource or whether the resource was released.
Message notifications are fired when a MuleMessage is sent or received by the Mule application. While ideal for tracing, the performance impact when using these is tremendous and it is disabled by default for this reason alone. It is the only notification to be disabled by default.
Exception notifications indicate that an exception was thrown.
Transaction notifications show a change in the life cycle of a transaction and therefore shows whether a transaction was started, committed or rolled back.
Security notifications indicate that a request is denied security access.
Space Monitor notifications are related to space implementations such as JavaSpaces, when messages are sent into, or received from, a space.
Admin notifications are fired when requests are received by the Mule Admin agent, usually from the MuleClient through the RemoteDispatcher, which proxies calls to a remote server.
Custom notifications - can be used to raise notifications of your own.
Management notifications show that monitored resources are low ( but this has yet to be implemented)
By being able to monitor certain key events within a Mule application, you can react to changes by performing different tasks. For example, you could stop a service from processing any more messages from its inbound endpoint given certain criteria.
Over the next few blog posts, I am going to do the following:
Show how to create Java classes that can listen for these notifications and act upon them.
Show how to register these Java classes with Mule both through configuration and programmatically.
Demonstrate a typical use-case where system notifications can be used.

Google Chrome: A developer's perspective

I was as blindsided by Google Chrome as everyone else, but there's no denying that its release was a momentous occasion. Chrome is more than just a browser; it represents Google's latest entry in the ongoing discussion of standards and best practices for the Web as an application platform. As such, it may be the company's most important offering since Gears.

"From my perspective, Google Chrome and Gears are entering the Web from two directions," says Google's Adam Goodman in Scott McCloud's comic-strip introduction to Chrome. "The [Chrome] browser project is an effort to make the Web better for users. The Gears team wants to make the Web better for developers."

[ Check out InfoWorld's Special Report for all the news, reviews, and commentary on Google's open source Chrome browser. ]

Lucky for us, Google Chrome ships with all of the functionality of the Gears plug-in for Firefox and Internet Explorer already baked in. But I don't agree that users are the only beneficiaries of the other effort that's gone into Chrome. There's a lot going on beneath the hood of the new browser that should interest developers, too.

Roaring engines
For starters, Google's decision to use the WebKit HTML rendering engine may not be surprising, but it's still significant. WebKit, an improved version of the open source KHTML project, is the rendering engine used by Apple for its Safari browser. It's also the engine found in both Apple's iPhone and Google Android, arguably the two most important mobile Web platforms today.

That means Google Chrome isn't yet another browser to support, as my pal Paul Venezia suggests. Rather, it's one more vote in favor of making WebKit a primary target for new Web development projects. It only makes sense to test against the engine that's available on the widest range of platforms and devices.

And popularity isn't the only reason why WebKit was a good choice. Current WebKit builds are very fast. As a result, pages generally pop up more quickly in Chrome than in Firefox 3. More importantly, WebKit leads the pack in Web standards compliance (with Opera a close second). The more developers get on board with writing fully standards-compliant code, free of undocumented tricks and browser-specific hacks, the better it will be for everyone.

Chrome raises the bar in other ways, as well. Its V8 code execution engine beats Firefox's forthcoming TraceMonkey to the punch by offering a just-in-time native compilation engine for JavaScript. That means it runs Web applications at blazing speeds. But V8 is also a proper virtual machine environment; it's designed to handle multiple execution threads and memory management better than any other JavaScript implementation to date. For developers, these efforts further cement JavaScript's position as a legitimate application development platform, rather than a toy language for one-off scripting.

From specs to prototype
I wholeheartedly recommend reading the introductory comic strip for more insight into how Google rebuilt the browser from the ground up. Everything, from the browser security model to how plug-ins are managed, has been crafted with the utmost care. Google Chrome really is the next step in the ongoing project to create the ultimate client for the Web application platform.

To understand what I mean by that, think of the drafting of Web standards as the requirements-gathering phase of Web browser development. The various specifications describe the type of documents that the browser will be expected to parse and how it should deal with them when it receives them. With Chrome, Google has taken the next step. It has offered us its own vision of what a reference implementation of the browser should look like -- not just how it should render pages, but how each module of the application should operate and interoperate.

Mind you, we don't have to just take Google's word for it. For example, I still think this fixation on JavaScript might be a little bit unhealthy. But that's fine. Because Chrome is open source, we're free to take the ideas -- and even the code -- that we want, and leave the rest. Or we can add the parts that are missing: an ad blocker, for example.

Google doesn't need Chrome to be a "Firefox-killer," or to become the dominant browser on the market. The important thing is that Chrome will keep us talking -- and in so doing, as Google is so fond of saying, it will help to push the Web forward. It's high time that we developed new standards and practices for today's Web. In that discussion, Google now clearly sits at the head of the table.

Google Chrome and Lightstreamer

Chrome, the new Google browser, was released a couple of days ago as a beta version for Windows Vista/XP and officially entered the browser war, currently dominated by Microsoft Internet Explorer and Mozilla Firefox. Chrome offers many interesting features, aimed at making the browsing experience more robust, more secure, and faster. I was especially interested in the new V8 JavaScript engine, with its just-in-time compiler and a full-fledged garbage collector.

We tested Lightstreamer on Chrome soon after its release, and the results were amazing, as all the Comet demos worked seamlessly out of the box. I posted a quick

Some of the Lightstreamer online demos are shown in the video. I noticed a couple of Chrome features that should be particularly interesting to the Comet community:

Chrome offers a Task manager, under the Developer menu, which reports the memory footprint and the used bandwidth for each process (one of the most appealing features of Chrome is that it runs independent Web applications as different native processes, to increase the level of sandboxing; see below). This native bandwidth meter is probably gonna be an important tool for Comet developers.
Chrome decides whether to create a new tab as part of an existing process or in a new process based on the navigation path. I have noticed that if you open a new tab from an existing tab’s link, the new tab will live in the same process of the previous, instead of creating a new sandbox (the heuristic could probably be a bit more complex, but I won’t investigate this here). Opening multiple instances of a Comet application in the same tab space (process) or in different tab spaces affects the possibility of sharing resources. For example, Lightstreamer is able to share the Comet connection among different web applications (and different instances of the same applications) to minimize the HTTP connection pool exploitation. This happens if the applications share the same process, though based on different tabs. On the other hand, if the tabs live in different processes, they will create their own Comet connections. I consider this a wonderful trade-off. In other words, based on the level of affinity of applications, the Comet connection will be automatically shared or not.

Keyword Stuffing: Google vs. Yahoo’s Treatment of Keywords


Everyone on the internet this morning seems to be doing one of two things: googling for Sarah Palin or blogging about the new Google web browser, Chrome. So like any good SEO I start thinking about how I can capture a piece of this search engine traffic. My bright idea? Why not capture both markets by titling a blog post What Sarah Palin could do with the Chrome on a Trailer Hitch?

Of course, I won’t do that, because I’m all about ethical SEO, and that’s what my blog post will be about today - how to not engage in keyword stuffing. Not Sarah Palin, or the Republican National Convention, or the Google Chrome Browser. Seriously. No keyword stuffing here.


The term keyword stuffing is an old one which was probably first invented to describe the excessive use of the Meta Keywords Tag. But it has evolved to mean any site which either puts way too many keywords on a web page, or tries to hide the use of excessive keywords. I would hope most SEOs and web designers today realize that Google will penalize for it, but I still get plenty of requests from clients to either add lots of keywords in nonsensical places in their content, or to hide keywords in invisible sections of their code. Why?

One reason may be the fine line we do have to walk between keyword-stuffing, and simple keyword placement. Google has a number of factors which it takes into account for ranking pages, and believe it or not keywords in actual page body content are not really that high on the list — Google depends more on keywords in backlink anchor text. But other search engines, most notably, Yahoo, do place more importance on keywords in content. Whereas with Google you could probably get away with just placing your primary keywords in the page title and an H1 tag, Yahoo will look at keyword density, proximity, and page location of keywords (putting more prominent keywords in the beginning of the page’s content).

So how and when are keywords overused? You may have noticed I have probably already used the term “keywords” way too often in this post. Even I’m getting sick of it. If you read your website’s content to yourself and you get tired of reading the same word over and over again, then you’ve overused it. It’s pretty much that simple; write your site content for humans, not for search engines. As long as you’ve done a reasonably good job writing content for humans Google’s not going to penalize you. And if you hired someone to work on SEO for your site and they repeat your target keyword 100 times on a page, get out of that contract fast.

But wait, what about plural versions, misspellings, different verb conjugations, etc. - all those variations on keywords for which you want to capture the search traffic? It’s not really stuffing if you pepper in just a couple of those, but really, do not focus on it. Especially misspellings - you might capture the top search engine rank for a misspelled word, but everyone reading your content is going to think you can’t afford a good copy editor.

And before you criticize my blog for that, I’m not mispelling on purpose, it’s because I literally can’t afford a good copy editor. My copy editor is a middle-aged guy named Sal who splits his time between the men’s room and waxing nostalgic over the days of typewriters and white-out. But I digress.

I already mentioned the importance of anchor text in backlinks for Google, and it is true - that is arguably the most important determining factor in how Google ranks you. But you can overuse keywords there also. You don’t need 1,000 backlinks all with the exact same keyword (unless, of course, it is a highly competitive market you’re going after, in which case I’d suggest you look into long tail marketing). Instead, try varying popular keywords in the anchor text of links which point to your site, if you have control over them.

This will allow you to rank for a more varied number of queries, and will also allow you to get some better metrics on which keywords are working better for you by comparison. If you have 10 links with term “A” and 10 links with term “B”, but visitors coming to your site with term “B” are converting more (be it pages/visit or sales), than obviously you want to shift your linkbuilding efforts to focus on term “B”. Simple, I know, but a lot of people still don’t get it.

Google App Engine: Getting Data Out Ain't Simple. Yet.

Developers who adopt the Google App Engine for their cloud computing platform today may fear data lock-in, since the only way to import or export data is using a Python-based API. Google is working on a tool to improve data exchange to improve data portability.
The Google App Engine is intended to help developers build and scale applications to run on Google's infrastructure, says Peter Koomen, Google's product manager for App Engine. "It's still difficult to build Web apps," he notes.
Here's why in a nutshell: a Web developer who has a bright idea has a steep ramp to climb before she can really get underway. She has to set up an infrastructure stack—renting or buying servers, setting up a Web server, configuring a database engine—burning up both time and money. That's before a single line of code is written. Then, when her website gets popular (see, it was a bright idea), it can't handle the load. The site needs to scale, and to do it quickly. So the developer has to burn even more time and money (under pressure) to rent or provision more infrastructure, while figuring out how to split access across multiple Web servers. It isn't an easy job.
It's also a common issue. "You see this a lot with the newer social apps coming out," says Koomen. Certainly we can point to several such examples, including Twitter's scalability problems, but the need is similar for any cloud-based enterprise application. Business developers, too, need to worry about getting the right infrastructure in place and making it secure and scalable.
Google App Engine, says Koomen, fixes these problems. The application developer can focus on the application, because the App Engine takes care of the infrastructure. To quote Web technologist Niall Kennedy's blog post last April explaining the then just-announced runtime environment: "Google App Engine lets any Python developer execute CGI-driven Web applications, store its results and serve static content from a fault-tolerant geo-distributed computing grid built exclusively for modern Web applications."
Sounds cool. So what's the problem?
Data Lock-In—or Nervous Nellie?
The Google App Engine uses a data store that is... different. It's not precisely SQL, says Koomen, because the data store is built to run across multiple servers. While most developers who are familiar with SQL databases (from Microsoft SQL Server to MySQL) won't have a problem using the data store, some things aren't technically possible. "These restrictions aren't as terrible as you'd think," adds Koomen.
Using Google App Engine today also requires Python, which might present a problem to developers who are more familiar with other languages—whether dynamic languages like PHP and Perl, or traditional languages like Java or C#. (Personally, I don't think Python is a significant turn-off to most Web developers, but programming language preferences are passionate.)
For more on Python, see You Used Python to Write What?! by Martin Aspelli, and Python Upgrades Readied for 2008.
The bigger question—a real one from a developer friend, which is what inspired me to call Google—is whether that data store creates a lock-in, preventing data-based applications from being portable. Start-ups might worry whether their companies are less attractive to investors if they've tied themselves to a single vendor's data store. Enterprise computing professionals would worry that, on top of their concerns about any corporate data living in the cloud, they'd have information they could not easily retrieve or would have trouble migrating to another database. Or, probably more important over the long term, they might worry whether database interactions involving Google App Engine would require fancy custom programming to interoperate with in-house applications, Web services components, a service-oriented architecture or other situations in which the leg bone data must connect to the thigh bone data.
In its current "preview" state, the Google App Engine requires that data be stored and retrieved using a Python API called GQL, which Koomen says is as similar as possible to SQL. You can get data out of your data store only programmatically, not by copying a SQL file from one server to another.
However, Koomen says Google sees this limitation, and the company has actively been soliciting input on how best to address it. In fact, that's one of the reasons Google makes preview versions available, says Koomen. "We wanted to get it out early and see what developers thought."
As a result, Koomen says, Google will be releasing a tool that makes it easy to get data out of the data store without writing code. They aren't ready to go into specifics, other than it'll be available "within the next two quarters," but Koomen said the intent is to make it easy to get data out of App Engine. The new tool promises to address the data portability issue, to provide a "home brew backup" and to be "completely open," according to Koomen.
This isn't the first time user input has affected the development of Google App Engine. For example, for security reasons they had to remove the Python image library from Google App Engine. (Google App Engine supports 100% of the Python language, Koomen says, and 90% of the Python libraries.) However, developers made it clear that they needed to manipulate images in the data store, such as to scale or rotate images or to create thumbnails. "So that ability is in there, now," says Koomen.
In the short term, developers who use App Engine don't have their data locked in. Getting data out of the App Engine data store may be awkward, or at least you should build "Darnit, I have to write that from scratch" time into the project schedule, but these limitations are temporary. That's worth knowing, certainly, because every developer adopting a new-to-her technology wants to know where the bodies are buried and where her assumptions are incorrect.
Within six months, however, the data lock-in concerns—and the need to write a hack—in Google App Engine should go away. "We still have some ways to go," says Koomen.

Switching Web Hosts

Sooner or later this day will come. If you are moving into PupHost.com, then I just hope it happens today. Anyhow, jokes apart. Most likely you need to switch web hosts because you need more than they offer or they are just not reliable. In the present, switching web hosts is actually lot easier than you think
I am going to tell you how to transfer a domain name, how to test your website first in the new host, and then initiate a relaunch.
Domain Name Transfer
When you sign up with a company most likely they will register a domain name for you. I personally wouldn’t let the web host own the domain registration. I can guarantee that my company won’t steal your domain but there are many fraudulent companies who does the following:
When you try to switch out, they don’t let you transfer the domain out.
Charge you a lot per year for the domain, where in PupHost.com it costs only $10 USD per year.
If the domain is good and worth the price, they will steal and resale it.
So if your current web host owns the domain name, I recommend that you transfer it to an independent domain registration company. Some of the reputable companies are GoDaddy, Namecheap and of course PupHost.com.
Basically you have to visit any of the domain name registration companies first, and use their Transfer Domain wizard. Before you do that, you need to make sure the domain is free to be transferred. Which means is when you register a domain, you lock it. So, no other company can just take over your domain. First contact your current web host and tell them that you wish to transfer the domain and want to open the domain for transfer. They should unlock the domain for you, and you can easily transfer over.
There might be specific steps you need to take for different companies. For example the transfer process might differ from GoDaddy or PupHost.com. So, you need to ask the company exactly what to do.
New Web Host
So, you decided to go with PupHost.com, Congratulations. Just kidding! Do not take your website down or make any kind of announcements before you test your new web host. Nowadays, quite a lot of web hosts use same or similar structure. For example, a web host might be using the same control panel as the other or offer the same features as the other. Here are some of the steps you need to take.
Back up any important contents. (e.g. Database, Files and so on)
From your old web host, download all the files under the web directory. (e.g. /home/username/www/ or /public_html/ or /htdocs/)
Upload them in your new host maintaining the directory structure.
Download the database if you have any and import them in your new web host. (Most web hosts now have PHPMyAdmin to import/export database if you are using MySQL)
Go back to your new web host files, and change the database host, username and password accordingly.
Visit your new website and see if it is working. (e.g. http://123.123.123.123/~username/). If you have a dedicated ip address, then you can view your website with just the IP address.
If you see everything working as expected, now you are ready to make the move.
Go back to your website hosted with current host (old host) and post a news that the website will be down for 36-48 hours (it usually takes 3-10 hours nowadays). Go to your domain registrar control panel and update the nameservers to your new web hosts.
After the domain has been propagated to the new host, you will see your website is running smoothly. And there will be barely any sign of web host change.

Google's Chrome and the browser end game


The news that Google is launching its own open source browser, called Chrome, has understandably got the blogosphere all excited.
It's certainly the biggest news in the browser space since Firefox started to dent Internet Explorer's lead and many people see this as a re-ignition of the browser wars.
A few things struck me:
1. For all Mozilla's success with Firefox, it still only has a 20% market share globally. I'll be fascinated to see if the Google cachet and brand reach will be able to drive Chrome's success any higher than Firefox.
2. What does this mean for Firefox long term? Google is one of the biggest supporters of Firefox. It has contributed financially and in terms of development talent. According to PaidContent, "just last week Google extended its support of the Mozilla foundation until 2011".
Despite this, Mozilla will be feeling a little uncomfortable right now.The two organisations are next door neighbours in Mountain View and I imagine the gnashing of teeth from Mozilla were easily heard across at 1600 Amphitheatre Parkway.
3. What does this mean for Safari? Just like Safari, Chrome is built on the open source web kit browser. Does this boost Safari because they are a common platform? Or does it mean game over for Apple's hopes in the browser space? I suspect more of the latter.
4. This is going to mean more work for web developers. It may be based on open standards but undoubtedly web application designers are going to have to take into account the quirks and differences of Chrome to really exploit the browser.
5. Chrome is the open source desktop people have been demanding from Google for many years. Linux supporters have long been asking for Google to release a consumer version of the Linux OS Google itself uses internally. But Google has always resisted this. And because the browser is becoming as flexible as the desktop, Chrome, in many ways, is the open source OS people have been calling for.
6. Do we really need another browser? There's Internet Explorer, Firefox, Safari, Opera, Camino, Flock and many, many others.
7. This is really about building a browser which leverages Google's own web applications and makes it more seamless to use functionality like Google Gears, which blurs the offline and online space. Just as Internet Explorer 8 ties in with Windows Live, Chrome will make the Google space more united.
8. We really need a better browser for mobiles and not desktops. Expect to see Chrome as part of Google's open source Android platform for mobiles.

This article attempts to level the learning curve with a specific focus on C programming.

Vim is an extremely powerful editor with a user interface based on Bill Joy's almost 30-year-old vi, but with many new features. The features that make Vim so versatile also sometimes makes it intimidating for beginners. This article attempts to level the learning curve with a specific focus on C programming.
make and the Compile-Test-Edit Cycle
A typical programmer's routine involves compiling and editing programs until the testing proves that the program correctly does the job it is supposed to do. Any mechanism that reduces the rigor of this cycle obviously makes any programmer's life easier. Vim does exactly that by integrating make with Vim in such a way that you don't have to leave the editor to compile and test the program. Running :make from inside of Vim does the job for you, provided a makefile is in the current directory.
You can change the directory from inside of Vim by running :cd. To verify where you are, use :pwd. In case you are using FreeBSD and want to invoke gmake instead of make from the command line, all you have to do is enter :set makeprg=gmake. Now say you want to give some parameters to make. If, for instance, you want to give CC=gcc296: :set makeprg=gmake\ \CC=gcc296

does the job.
Now comes the job of inspecting the errors, jumping to the appropriate line number in the source file and fixing them. If you want to display the line numbers in the source file, :se nu turns on this option, and :se nonu disables line number display.
Once you compile, Vim automatically takes you to the first line that is causing the error. To go to the next error; use :cn to take you to the next line number causing the error. :cfirst and :clast take you to the first error and the last error, respectively. One you have fixed the errors, you can compile again. If you want to inspect the error list again, :clist displays it. Convenient, isn't it?
If you want to read some other source file, say foo.c, while fixing a particular error, simply type :e foo.c.
One shortcut provided by Vim to avoid typing too much to switch back to the previous file is to type :e # instead of typing the full path of the file. If you want to see all of the files you have opened in Vim at any point in time, you can use :ls or :buffers.
If you have a situation in which you have opened too many files and you want to close some of them, you can issue :ls. It should display something like this: 2 # "newcachain.c" line 5
3 %a "cachain.c" line 1
If you want to close newcachain.c, :bd 2 or :bd newcachain.c does the job.
While browsing C code, you may have situations in which you want to skip multiple functions fast. You can use the ]] key combination for that while in command mode. If you want to browse backward in the file, [[ can be used.
You also can use marks to bookmark certain cursor positions. You can use any lowercase alphabet character as a mark. For instance, say you want to mark line number 256 of the source and call it b. Simply go to that line, :256, and type mb in command mode. Vim never echos what you type in command mode but silently executes the commands for you.
If you want to go to the previous position, '' (two single-quotation marks) takes you there. Typing 'a takes you to mark a and so on.
Especially when editing Makefiles, you may want to figure out which of the white spaces are tabs. You can type :se list, and whatever is displayed as ^I in blue are tabs. Another way to do that is to use /\t. This highlights the tabs in yellow.
Global searches and replaces are common tasks for programmers, and Vim provides good support for both. Simply type / in command mode, and you are taken to the searched keyword. If you prefer incremental searches, à lá emacs, you can specify :se incsearch before you search. When you want to disable it, type :se nois.
Search and replace is a powerful tool in Vim. You can execute it only on a region that you selected using the v command, only between certain line numbers or only in rectangular regions selected by using Ctrl-V command.
Once you select your region or line number ranges, for example using :24,56 to select lines 24–56 (both inclusive), or just select your region and type : :<','> appears. Now type s/foo/bar to replace all occurrences of the string foo with bar.
But, this command replaces only one instance per line. If you want to do this for multiple occurrences per line, type s/foo/bar/g. If you want to replace only some occurrences, you can use the “confirm” option with s/foo/bag/gc.
Sometimes the string contains characters that appear as a substring of other keywords. For instance, say you want to replace the variable “in” and not the “in” in inta. To search for whole words, type /\/.
Most commonly, you will want to do a global replace, which is every instance in a given file. You can do that by using either :1,$s/foo/bar/g or :%s/foo/bar/g. If you then want to replace this in all the files you have open, you can enter :bufdo %s/foo/bar/g.
Another way of searching is by going to the keyword and typing * in command mode. The keyboard now will be highlighted wherever it occurs in the file. Searching backward is simple too; type ? instead of / while searching.
Once the searching is over, Vim remembers it, so the next time you search for the same keyword, you have to type only / or ?, instead of typing the whole text.
One side effect of searching is that it stays highlighted. This can be a distraction while editing programs. Turn highlighting off by typing :se nohlsearch, :nohlsearch or :nohl
You always can use the Tab key to complete Vim commands you give with a colon. For instance, you can type :nohl, and Vim completes it for you. This is applicable generically, and you can press Tab to cycle through Vim's commands until Vim finds a unique match.
Vim with Exuberant ctags
Exuberant ctags (see the on-line Resources) is an external program that can generate tags for Vim to navigate source code. If all of your source code is contained in only one directory, simply go to the directory in the shell and enter: $ ctags .
This generates a tags file called tags. Vim reads this file for jumping to functions, enums, #defines and other C constructs.
If the source code is distributed across several directories, ctags has to generate tags for all of them relative to a certain directory. To do this, go to the root directory of the source code and execute: $ ctags -R .
Check whether the tags file has been generated. You also can open and read the tags file in Vim.
Now, let us move on to navigating the source code using tags. Navigating the source code using ctags is one of the most fascinating tools that a programmer has. You can read the code so nicely and quickly that you wonder how it would have been without ctags.
Once the tags file has been generated, open the file in Vim as normal, except that if the file is deep inside, open it from the root directory. For instance, your source code is organized like this: common

----> gui --> wxpython

------>Tk

----> backend --> networking
include
user
If you want to edit tcp.c under the common/backend/networking directory, you should open it like this: $ vim common/backend/networking/tcp.c

instead of like this: $ cd common/backend/networking

and: $ vim tcp.c
The tags file is situated in the directory above common, and Vim automatically knows the location of the tags file this way.
Alternatively, you can open the file using the second method mentioned above and execute this from inside of Vim: :se tags=../../../tags
The first method is easier for navigation. Once you open the file, you can jump from one function definition to another easily by using the key combination Ctrl-].

How to Know If Your Affordable Web Hosting Plan Is A Hoax

With the upsurge of affordable web hosting plan, it is advisable to be very extra careful on choosing the kind of web host provider. There are some companies right now that offer affordable plan just to get for the bucks and never minding the quality of services it offer and the hassles it do to its clients. Many web site owners were already victimized by these cheap web hosting plans because it turned out to be hoax.

Here are some tips in choosing for affordable web hosting plan. This is to avoid choosing the wrong ones and be regretful about it at the end.

1. Make certain that your fit-to-you-budget web hosting package can deliver the kind of services and requirements that you will need for your website. Do not be easily swayed by alluring cheap plans out there. Look beyond the advertisement. Do not jump hastily in choosing a web hosting plan simply because it is cheap, look instead on what you will be getting out from this budget and match it with your requirements.

2. Try to inquire about your web host's technical and customer support system. It does not mean that because your web site hosting is cheap, there will be no more support from it. A good web hosting company offers 24/7 customer service wherein clients can right away address concerns and problems regarding their web sites.

3. Affordable web hosting plan can still be made cheaper. Some of those web hosting companies that offer cheap packages get very pricey when you add unnecessary features or services such as optional log-in file programs or password protection. As someone who is really gearing up for the affordable ones, be sure to know the prices for each service included in the plan.

4. The cheapest plan may not always be the best for you. Always take note that they are the cheapest because they have certain limitations and do not have specific features which you, as the client, probably needs.

5. Give as much weight - if not more - on the web host's reliability than their affordable offer. You can check the reliability of a web host by doing a little research about it. Try to ask around or do some online researching.

6. Consider the bandwidth and disk space. Both are essential factors in creating or maintaining a web site. Be sure that you have enough disk space that will your requirements. Usually cheap hosting plans offer smaller disk space than those expensive ones. Be sure to ask your web host how much they will charge you if you plan to expand your storage capacity in the future. For bandwidth, make sure that you have enough of it despite its cheap price. Also, do not be easily fooled by those web hosts claiming to give unlimited bandwidth. It is better to be cleared of it from the very start.

6. Let your web host know about your expectations. Letting them know your expectations and standards will, in a way, pressure them to do well in their web hosting service business.