Here are the steps that we followed to make the website search engine friendly (Step 1 from this article) :
- Create and Submit Sitemap – on a website like ours which almost gets updated weekly we need to keep on updating the sitemap regularly as well. This helps visitors and search engines find the right web page and content.
- Submit your website to reputed online directories. Like Open Project Directory and Yahoo directory.
- Create a robots.txt file – which tells search engine what pages you want the to crawl and what pages you don’t want them to crawl. Use this to keep terms and policy pages out of the crawl – so that they don’t affect your content keywords as much.
- Optimize titles for your web pages. Keep the following points in mind: avoid invalid characters such as “/”, avoid the use of stop words, try to keep the title around 65 characters in length. The title shows up on the search results and convinces people to click on the link.
- Optimize description for your web pages. Just like titles description also shows up under the search results as snippets. Keep the following point in mind: avoid non-alpha characters, avoid using the stop words, try to keep the description around 150 characters in length.
- Try to keep your title, description tags unique and relevant across all the webpages.
- Make sure your webpages are accessible via internal or external links. Also link to relative and highly ranked quality sites. When analyzing your site’s external links to websites, search engines will attempt to determine the relative importance of the originating sites. This means that if an originating site offers similar or related content to the one it is pointing to, the link will receive a higher rating than if the content was entirely unrelated. As well, an originating site may be ranked based on the links that are pointing to it, and hence the importance of those links.
- Optimize the heading tags for your website. Heading tag H1 should be brief — no longer than a short sentence — and include the page’s most important keywords. Make sure the content for your H1 tag is unique for every page in your website. The text in your H1 tag displays in your page header, but it does not display with your site in search results.
- Write unique engaging content. The recommended number of words on a webpage should be around 300.
- Add images and relevant alt attribute value to your images on the webpage. This makes your search results more appealing.
It is a long way to get the SEO right – if you have seen my previous Blogshot on SEO you have already read the basic articles that I found very helpful on getting me started on the right track. If you haven’t read it here is the link.
Here I am going to design my own SEO strategy as an experiments based on those articles. This is an experiment that I am starting now and as I move forward with each steps I will keep on posting detail on how did I go about it. I am also planing on documenting the results better or worse. That way we will end up building a blog on Do’s and don’ts of SEO.
My starting points are very basic and most of you know it, but I am documenting that here anyway for those who might be benefited from that:
- Even before you get started building your website spend enough time on deciding and getting a very relevant domain name.
- Figure out your audience, and understand the audience. So you can deliver relevant and helpful content.
Title, description and meta tags are very important to get the SEO right, the very basics that should be followed are:
- Title should be very relevant and up to 60 characters.
- Description – is usually the snippet that appears under your website when the search results are returned. Try to keep it relevant and up to 150 characters. Or it will be cut off when the search results are returned.
If you are trying to figure out whether you need to hire SEO or not, here is a link which I found very useful: https://support.google.com/webmasters/answer/35291?hl=en&ref_topic=3309300
Here is my simple strategy going forward to improve SEO on the toysshare:
- Make the website google friendly – here is the reference article and link to a very useful experiment.
- Figure out relevant keywords to reach the right audience. Here is the reference article.
- Optimize the site for the identified keywords. Here is the reference article.
- Submitting the site to different online directory. I am trying this because of this experiment. Here is the reference article.
- Of course view the Google webmaster tools and Google Analytics through out the process so that we know what is working and what is not.
In the next post we will go over step #1- Making the website google friendly.
Here I am listing some articles that I found very useful in doing the mysql server performance tuning.
Optimizing the MySQL Server
This section discusses optimization techniques for the database server, primarily dealing with system configuration rather than tuning SQL statements. The information in this section is appropriate for DBAs who want to ensure performance and scalability across the servers they manage; for developers constructing installation scripts that include setting up the database; and people running MySQL themselves for development, testing, and so on who want to maximize their own productivity.
How to Optimize a Mysql Server
Before talking specifically about the MySQL server, we need to discuss three topics often overlooked when setting up a MySQL server: the hardware configuration of the server, the networking setup of the server, and the optimization of the source code of the application that will access the MySQL server.
Mysql Database Performance tuning and Optimize Mysql Database response time
Performance tuning and Optimize Mysql Database response time is very important for your website or your application to run efficiently.Now we will see each one separately how todo this.
MySQL Performance Tuning Scripts and Know-How
Unless you are a MySQL performance tuning expert, or a total linux-freak-guru like myself, and even if you are, it can be enormously challenging and somewhat overwhelming to locate and eliminate MySQL bottlenecks. While many DBAs focus on improving the performance of the queries themselves, this post will focus on the highest-impact items: MySQL Server Performance and OS Performance for MySQL.
This post is a “best-of” compilation of the tricks and scripts I have found to be the most effective over the past decade. I’d like to write a 50 page article but am limiting this to 1 page.
Using MySQLTuner to Optimize MySQL configuration
Tweaking MySQL is something you need to do regularly. Unlike PHP & Nginx tweaking, this is not a set & forget job!
We will use mysqltuner for tweaking mysql on a regular basis.
MySQLTuner is a script written in Perl that allows you to review a MySQL installation quickly and make adjustments to increase performance and stability. The current configuration variables and status data is retrieved and presented in a brief format along with some basic performance suggestions.
When you are new to SEO and try to figure out how to get started, you run into tons of different links and techniques. It gets very confusing, to figure out how to get started and what should be your next strategy. Here I would like to put a list of links that I found very useful in figuring out the process and getting started with SEO.
The Beginners Guide To SEO
SEO is the practice of improving and promoting a web site in order to increase the number of visitors the site receives from search engines. There are many aspects to SEO, from the words on your page to the way other sites link to you on the web. Sometimes SEO is simply a matter of making sure your site is structured in a way that search engines understand.
Improve SEO: How we increased search traffic by 2600%
If you’re still reading, you’re probably wondering “what ingenious way to increase traffic did he use?” That’s exactly the kind of mindset I had when I tried to increase the traffic for our previous product, Hypemarks. Want to see the results from trying to find an ingenious way?
10 SEO experiments that will change the way you do SEO
Google doesn’t want you to know the secret sauce behind its ranking algorithm recipe. So, most SEOs rely on gut feeling when using certain SEO methods they think should work.
However, there are ingenious SEO among us who don’t mind working their fingers to the bone and digging up hard-won SEO facts in (usually time- and resource-consuming) field experiments.
White Hat SEO Case Study: 348% More Organic Traffic in 7 Days
I need to get this off my chest: Increase Traffic
Despite what you may have heard, there’s A LOT more to white hat SEO than “posting great content.”
Sure, awesome content makes link building easier…
…but it’s just the first step.
49 Free Web Directories for Building Backlinks
So after scraping the internet for free web directory lists I squeezed 76 potential candidates into an excel spreadsheet. Most of the lists I found from Google searches were either duplicates or very out of date. The most up-to-date web directory list was one I found later today just as I was finishing up submitting to the below directories – Top 100 free directory list.
We needed to use a mail service to send email from the domain www.toysshare.com – The obvious choice for us was Amazon SES due to the following reasons:
- It was available in Free tier and we were already signed up for the free tier.
- It is one of the most reliable email service, it eliminates the need to deal with deal with infrastructure challenges such as email server management, network configuration, and IP address reputation.
- Additionally, many third-party email solutions require contract and price negotiations, as well as significant up-front costs.
- Amazon SES provides SMTP or a simple API call to access a high-quality, scalable email infrastructure to efficiently and inexpensively communicate to your customers.
To get setup with Amazon SES you simply have to,
- Sign Up: After signing up, you can access the Amazon SES sandbox – an environment specifically designed for developers to test and evaluate the service. If you have already signed up for Amazon AWS you don’t need to do this. If not please check here on how to do that.
- Verify Domains or Email Addresses: Before you can send email via Amazon SES, you need to verify that you own the domain or address from which you’ll be sending email. To start the verification process, visit the Amazon SES console. Here is a link on how to accomplish this step in Amazon SES console: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html
- Request Production Access: Once you are ready to use Amazon SES to send email, you request production access. This will allow you to move from the sandbox environment to the production environment and begin sending email to your customers. It only takes a few minutes to apply for production access, and you usually receive a response within 24 hours. Here is how you can request the production access for Amazon SES: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html
- Send Email: You can use either SMTP or the Amazon SES API to queue an email message for delivery. Here is how you can obtain access key for Amazon SES API: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/get-aws-keys.html
- Get Feedback: Amazon SES provides useful statistics about your sending activities. With a simple query or Amazon SES console visit, you can quickly obtain vital statistics such as volume sent, bounces and complaints. http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-usage-statistics.html
Just follow the following link to get going: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/quick-start.html
Once you have setup the environment by verifying the domain, and getting the production access use the following link to see how you can use SMTP or SES console to send an email: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/getting-started.html
This is how you can get your SMTP credentials from Amazon and use it in your application: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html
That is it, it is very simple. Though there are some limits on how many email you can send using Amazon SES : http://docs.aws.amazon.com/ses/latest/DeveloperGuide/limits.html
As part of free tier, you can get started with Amazon SES for free. You can send 2,000 messages for free each day when you call Amazon SES from an Amazon EC2 instance directly or through AWS Elastic Beanstalk. Many applications are able to operate entirely within this free tier limit, and it does not expire after a year. Find more pricing details here: http://aws.amazon.com/ses/pricing/
Here we will go over the basic steps that we followed during the process of getting started and setting up our Amazon web server. Here are the first few steps that we followed:
- Create an AWS Account – follow this link to create your AWS account, that is the first step in getting started on Amazon AWS. If you already have an account skip to the step #2. Following is some list of services you can signup for – figure out which services is required for your application:
- The basic foundation services Amazon AWS provides are: Compute, Storage, Database and Networking.
- For our application purposes we figured we will need to use 2 of AWS services, Amazon Elastic Compute Cloud or EC2 and Amazon Simple Email Service (SES).
- Let us go over how to get started with Amazon EC2 in this article and we can go over the SES in next article.
- Once you have decided that you need to go with EC2 figure out which version of EC2 do you need to use, Linux or Windows?
- We have a LAMP application so we needed to go with EC2 Linux instance.
- Here are some pre setup steps to get Started with Amazon EC2: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html
- Here are the steps to launch a linux Amazon EC2 instance : http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html
- Here is how you can install LAMP web servers on Amazon Linux EC2 instance: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html
- We needed to install phpmyadmin as our outsourcing team was comfortable using that – I would not recommend to open up your mysql on web but temporarily we did open it. Here is how we go the phpmyadmin working: http://geekact.com/2115/install-phpmyadmin-on-vps-or-amazon-ec2-and-vpc
- You might need to tweak your .htaccess file in phpmyadmin directory to get it working.
- Here is how you can transfer files to Amazon EC2 Linux instance using SCP: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html#AccessingInstancesLinuxSCP
- You can also use SFTP to transfer the files. For that you need to open the SFTP port, you can refer to the link in #7 to see how can you do that. Then use the .pem file you downloaded – you can add that to your preferences on your FTP client. For example, with Filezilla I add that file to preferences-> SFTP -> Add Keyfile-> upload the pem file here.
- Here is how you can use WinSCP to copy the files: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html#Transfer_WinSCP
The above are basic steps that you would follow in order to create and Amazon EC2 Linux instance, install the LAMP server and transfer your application files. If you need to work with a Windows instance please follow the link: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2Win_GetStarted.html
If you are planning on using the Amazon Free Tier, and want to know more about it please refer to: http://docs.aws.amazon.com/gettingstarted/latest/awsgsg-intro/gsg-aws-free-tier.html
Hope this article helps you get setup with Amazon AWS. In the next article we will go over SES setup.
If you are searching about SEO you definitely would have come across “Rich Snippets” and probably are wonder “What are those” and “Should we use them” or “How do we get started”. Here I am going to cover a few basic details about “Rich Snippets” and in the future article we can go in more detail. Here are some basic questions answered for you:
What are snippets?
- Snippets—the few lines of text that appear under every search result—are designed to give users a sense for what’s on the page and why it’s relevant to their query.
What are “Rich Snippets”?
- They are type of a page markup.
- Google creates “Rich snippet” based on the understanding of the page. They are sort of detailed information intended to help users with specific queries.
- You can highlight reviews or price or author details or recipe photos or restaurant menu items using the rich snippets.
How does it help?
- Better presentation of your information within the search results may attract more clicks.
- And those more clicks might lead to a better ranking on google search results. Though google does not guarantee a better ranking I have found that on different articles such as: http://dashburst.com/google-search-what-are-rich-snippets/
How Do I get started?
- Google can use 2 different method to understand the data :
- HTML markup
- Data Highlighter
- HTML markup gives you more control, is helpful when your site changes structure frequently and works across all the search engines.
- Data Highlighter does not require a lot of resources, can help when you can’t consistently add HTML markups to your website or when you are trying to highlight an event.
Once you have figured out which method you want to use, you can get started on that.
Follow this link if you want to go with the HTML markup: https://support.google.com/webmasters/answer/99170?hl=en
Follow this link if you want to go with Data Highlighter: https://support.google.com/webmasters/answer/2692911
In the future articles we will go in more detail on HTML markup and how we are planning on using it for our web portal – www.toysshare.com
Once we were done with pre beta launch and were very comfortable to do the beta launch, the question came where should we host the application. I had been working with Godaddy for a while but for this one as it was a portal I wanted to go with something more sophisticated. Amazon AWS was the obvious other option. Other hosting services under consideration were: Rackspace, Rightscale, Google and Digital Ocean. Following are pricing and Price calculator links for the options under consideration.
Pricing Link: http://aws.amazon.com/pricing/
EC2 Pricing Link: http://aws.amazon.com/ec2/pricing/
Amazon Monthly Calculator: http://calculator.s3.amazonaws.com/index.html
Pricing Link: http://www.rackspace.com/cloud/servers/pricing/
Rackspace Monthly Calculator: http://www.rackspace.com/calculator/
Pricing Link: http://www.rightscale.com/products-and-services/products/pricing
Rightscale Calculator: http://www.planforcloud.com/
Rightscale Calculator with Guest Login: https://planforcloud.rightscale.com/deployments?ga=guest_login
Google Compute engine details and pricing: https://cloud.google.com/products/compute-engine/
Google Cloud Calculator: https://cloud.google.com/products/calculator/
Digital Ocean Pricing: https://www.digitalocean.com/pricing/
Here is a cool additional link to compare 250+ cloud hosting plans:
For us it made sense to compare the basic plans at low level as we were starting fresh. We mainly compared the plans where there was room to grow. One additional plan in consideration was Godaddy private server plan,
But we wanted easy expandability so we wanted to go with one of the above plans. We decided to go with Amazon Free Tier because of the following reasons:
- Our outsourcing team was very comfortable with it.
- I was very interested in knowing how things work with Amazon AWS.
- We loved the monthly calculator that let us see how our expenses will go once we start getting more traffic.
- For the first year we thought we can survive with their micro instance with additional storage if required.
- We thought if needed to upgrade the bandwidth or the instance that was a good problem to have as that meant we had an increased traffic to our website.
- And we think expanding the volume size would be simple with AWS if and when the need arises.
Your criteria might be different and you might decide to go with something else but if you decide to go with Amazon AWS keep following us because, in the next articles we will go over how to setup things on Amazon AWS as we move along our journey to the beta launch.
I think when you are working with offshore team or outsourcing company – this particular phase is the most tricky to deal with. Because most of us now a days are so accustomed to work with internal QA team. Things take a drastic change during the Testing and Bug tracking phase. And that is another reason why services of a company like “HeliDigiZen” come in handy. As we know what we are dealing with and know how to handle this. During the testing phase if you uncover a bug – the fix needs to go through regression testing. So not only you have to test all the flows once the bug fix in place – you also have to test it across all the devices as well. You have to make sure the bug fix under one flow is not introducing new bugs on another flow and make sure none of the old bugs are coming back in while merging the changes while deployment.
Most of us now a days have our own favorite bug tracking system but while you are working with the outsourcing company it is best to work with a bug tracking system that works for both the parties. You don’t want your outsourcing resources to waste time trying to figure out how to operate a certain bug tracking system at the same time you don’t want to go through that process either. This is where some innovation comes in handy. We developed our own bug tracking system using google docs and google spreadsheet – as most of the people know how to use it and it does not require any additional software to be bought or installed. This helped us solve a few issues that we were facing,
- Now we always had a way to track what is happening with each bug reported – as we had 5 state defined for each bug – Open, Working, Fixed, Verified and Reopened
- Every one had an easy way to reproduce the bug – as we always defined the steps to reproduce when reporting a bug – very important
- It was simple to go through all the list of bugs while testing different flows and making sure none of the old bug are coming back or we are reporting the same bug again and again.
- And it was simple to reopen a particular bug just in case we see it again rather than reporting it all over again!
Up until this point we had always been working on the outsourcing company’s server but at this point we realized we wanted some control so we had them deploy the project on our end – so we can keep on testing while they are still working on bug fixing on their end. Helped us out a lot, and gave us an idea of “Pre Beta Launch” as well. But now we needed a way to track 2 different versions of code and an ability to report bugs for each one. It was pretty simple to accomplish using our own tracking system.
Once we were fairly confident of how things are working on our own server, we wanted some additional user feedback. We wanted to make sure that the flows are tested by some users who had no idea how this is suppose to work, and that is when we came up with the “Pre Beta Launch”. At this point we invited a few of our friends from technical background to do a test run on our system – and help us with some feed back. A great step – as that helped us understand what flows are confusing, some text revision needed and also gave us some confidence that we are pretty close to the Beta launch.
How did we go about our Beta launch? That we will cover in our next post!
The development phase starts when you approve the design PSDs and the team starts to work on converting the PSD into HTML pages and actual flow design. Here is where your SOW is going to come in very handy, and in our case a well defined SOW made it a lot more easier to navigate through this phase. This phase is when you will want to have well defined internal milestones where you run the testing of various flows as they are getting built and put in place. The well defined testing milestones are important so that you can discover any issues in the flow that you have defined or uncover any gap between your and your teams vision. You want to identify it sooner then later, because it will involve a lot more to change it once the backend is in place,
Also the thing that you should keep in mind is SEO and how you want to use any mark up language or Rich snippet. We used various tools while navigating through the development phase
- SOW – A well defined SOW is very essential during the whole project life cycle but during the development phase you are going to get the maximum usage out of it.
- Basecamp – To keep every one informed about all the steps being taken and all the comments or conversations being done.
- Bug Tracking System – A good bug tracking system is very essential to keep track of all the open issues and check how the progress is going – we had to come up with our own that we developed using google docs and google spreadsheets
The first milestone we had defined was converting the PSD to HTML and just have the page to page flow. This is done by simple linking between the pages with no backend. This process is very similar to the tool “Axure: Interactive Wireframe Software & Mockup Tool”, if you are familiar with it. The only disadvantage with Axure is you are not able to take the “HTML” pages that Axure creates directly into your project, where as in when we used this approach we already had HTML pages ready to be used directly in our project. Just as an additional note, it would be a good idea to use some SEO tools to help you with any markups or Rich snippet. As you already have some HTML example pages defined.
By first defining the basic flow with just HTML links – we were able to examine each flow and refine and correct it if need be without putting a lot of work on the back end. This was a great way of eliminating a lot backend changes for simple design tweaks. And it also gave us a way to make sure that the offshore team and us were on the same page as far as the basic flows were concerned. Very important when you are working with the offshore team.
Once we had refined the basic flow – the development phase milestone 2 work began. The milestone 2 was defined at putting the backend for those flows. But we wanted to work through one flow at a time. For example in our Toysshare project there are 5 main flows,
- Sing up/Login/Logout
- Listing Toys for Sale/Swap
- Searching for Toys
- Contacting the Sharer
- Admin Panel
Again as each flow was put in place one milestone was achieved and we tested each flow individually as they were put in place – this eliminated any refinements still needed in each individual flows without affecting the others.
And as the last milestone we put all the flows together and tested the whole project making sure that all those flows interact with each other the way it was expected. At this point after any fixes you should do regression testing to make sure the fix does not introduce any new bugs or while merging the files some old bugs don’t come back. – This is where we had to develop our own bug tracking system to make sure we are on top of each bug and we are doing regression testing at each level.
Also here is when all the mobile devices come into play. We wanted our site to be responsive – meaning now the testing had to be done on Windows PC, MAC , IOS, Android and Windows Phone. It helped a lot on how we had designed the milestones and testing setup – as most of the corrections and refinements were done way ahead of this final testing phase. In the next post we will go over Testing, Bug tracking and Beta launch in more detail.