Saturday, November 17, 2012

Mobile Application Versus Mobile Website: What's in the Name

The terms "mobile application" and "mobile website" have become so widely used that some people get confused about the difference between the two. Interestingly the confusion is less when you say "mobile app" as opposed to "mobile application".

If you are not a techie person I can see how the two can can be confusing. Let me try and give an explanation without using too many words.

The main difference is that the mobile application is a piece of software you download from a store into your phone or other mobile device and then periodically download upgrades to it. But you "carry" it inside your phone. A mobile website is just a website that has been optimized to look good on mobile devices. You can access it from the regular or "desktop" browser as well as from a browser installed on your phone.

I wrote earlier that Google calls websites that have been optimized for mobile devices "responsive" websites. Google also does not recommend having a separate website setup specifically for mobile devices. For example, you can have a website that is "www.ottawawebdesign.com"  and there will be a mobile-friendly version of it "www.m.ottawawebdesign.com". Google does not recommend this. Instead, you are advised to use ONE website and implement CSS media queries to ensure that when someone access your site via a mobile device, they get a proper display. This has been our strategy all along so I can't complain about Google in this respect.

Also, mobile apps are usually designed to do something specific, like a calendar or weather updates whereas a website can be very general in nature.

Most recent website templates provided by reputable template design houses like Joomlart or Rockettheme are "responsive" by default. Some contain small bugs and need minor adjustments here and there but overall most recent templates are of very high quality and highly "responsive".

Hope this makes sense folks, but as usual, if you need help, contact me via my web design Ottawa website.

Thursday, November 15, 2012

Commercial Joomla Components Worth Buying

In web design you can't grow your own potatoes all the time, so you need to use out-of-the-box components if you want to build large sites quickly. As it often happens with software, commercial components are not necessarily better than those you can get for free. Commercial components tend to have more bells and whistles but they also have more bugs and often have more conflicts with other software. But there are some excellent commercial Joomla components.

Here is a list of Joomla components we think are worth paying for:
  1. JomSocial
  2. Job Board by Joomlart
  3. JoomSport
  4. AcyMailing
  5. Docman
  6. Gtranslate Pro
  7. Breezing Forms
  8. Akeeba Backup
  9. Akeeba Security
  10. OSE Security
  11. OSE Membership
  12. Flexicontent
I can probably add 3-4 more Joomla components to this list, but the ones above cover 80% of all websites you would be building as a web designer on a daily basis, at least this has been my experience so far at our Ottawa web design firm Joomla Bliss.

As always, if you need any help, contact me via this Ottawa Joomla blog or via my Ottawa web design site.

Tuesday, November 13, 2012

Mobile Websites: What's the Best Way to Optimize a Website

We've had a lot of client inquiries recently about "mobile websites". Clients want to make sure that their websites look neat and sweet on all mobile devices, and we feel that it is a MUST for contemporary web design.

There are number of ways to ensure that a website looks nice and proper on mobile devices, but we prefer to listen to uncle Google. And here is what uncle Google recommends:

Details of recommendations

Google calls mobile websites "responsive websites" and supports smartphone-optimized sites in three configurations:
  1. Sites that use responsive web design, i.e. sites that serve all devices on the same set of URLs, with each URL serving the same HTML to all devices and using just CSS to change how the page is rendered on the device. This is Google's recommended configuration.
  2. Sites that dynamically serve all devices on the same set of URLs, but each URL serves different HTML (and CSS) depending on whether the user agent is a desktop or a mobile device.
  3. Sites that have separate mobile and desktop URLs.
In other words, instead of setting up a separate subdomain with "m.mysite.com" - follow Google's guidelines on how to use CSS media queries to optimize your website's code for mobile devices. You will have only one website but it will look different on desktop browsers and mobile devices browsers.

In fact, Google's recommendation has been our preference right form the start, but some clients feel it is a fancier way to have a separate website which will be optimized specifically for mobile devices. Well, when you take into consideration that you would need to maintain this separate website separately, this option becomes less attractive. But once you put Google's weight behind your advice then clients usually accept it without hesitation.

And if you need my help, contact me via my Ottawa website design site.


Wednesday, November 7, 2012

Joomla Security: Simple Fix to Help You Sleep at Night

There has been a lot of hacking activities going on recently - for all types of websites, including Joomla websites.

There is a couple of steps one can take to protect a Joomla site and enhance its security:
  1. Take regular backups and store them offline.
  2. Purchase Akeeba security subscription for EUR85 and install it. Akeeba allows you to take backups in seconds and store them off-line with meaningful and descriptive file names. Joy to use.
  3. Purchase OSE security component , note that to install it and use it you will need FTP access. What's sweet is this component is platform independent, you can use it on any site, not only on Joomla websites. It is $160 CDN.
Both Akeeba and OSE allow installation on unlimited domains. Both will enable double authentication: you will have two login screens one after another.

In addition, do not use "admin" for user names and "yourcompany1234" for passwords, and use a different set of logins for each authentication screen.

Overall, these two components overlap in some coverage, but OSE is more comprehensive, as it is installed at a server level. As a web designer, you would want to acquire both. 

Be familiar with your hosting environment. Check with your hosting company and ask them how long their logs are kept. You need an apache log for at least 7 days (the more the better!). Ask them about their backup policies. This is why I don't recommend re-seller hosting companies. They usually don't do any backups and don't keep logs for more than two days. Hostgator is not a reseller; we have been using them for over three years and we are happy with things. Hostpappa is a reseller through and though; I do not recommend them, their service is terrible.

That's it from me today, if you need help, contact me via my website design Ottawa site.

Monday, February 27, 2012

Really Speeding up Joomla

This article is a free translation of the Russian blog post from here: http://alexandr.sysoev.ru/node/168

How to Speed up Joomla at the Core

Typical measures to speed up Joomla: turn on cash, install PHP accelerator, you will optimize and and maybe get 20 requests per second.

But then what, change the CMS? In my experience users who swtich often ask to come back to Joomla.

Just to mention, this article does not discuss the choice of CMS, the speed of the various CMS solutions or architectural flaws of Joomla.

These recommendations will be helpful if it is not enough for you to get 20 requests per second, you need 2000-3000.

Joomla runs on PHP, so even if you use caching at the level of modules, Joomla still uses PHP and is rendering the page each time. This means that the rate of 2000 requests per second would be unattainable. So what we are going to do is to to make Joomla keep a copy of the generated pages to disk, and Apache to read the copy directly, bypassing the PHP for all subsequent users. This is a good old approach, which incidentally can be applied to other CMS, but only for static content. For Joomla we are using Article, which is just a page with static content.

So lets create a new plugin for Joomla, just two files:

HERE IS THE CODE:


defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.plugin.plugin' );
class plgSystemHtmlcache extends JPlugin
{
function plgSystemHtmlcache(& $subject, $config)
{
parent::__construct($subject, $config);
}

function onAfterRender()
{
global $mainframe;
if($mainframe->isAdmin()) { return; } //do not cache admin pages

$document =& JFactory::getDocument();
$doctype = $document->getType();
$user =& JFactory::getUser();
if($user->get('guest') != 1) { return; } //Only cache for non logged in users
if ( $doctype != 'html' ) { return; } // Only render for HTML output
$html_cache_dir=$this->param('html_cache_dir');
if($html_cache_dir=='') { return; } //Exit if no html_cache_dir specified
if(!file_exists($html_cache_dir)) { mkdir($html_cache_dir); } //try to create folder if it does not exist
// Only render for provided views
if ((JRequest :: getVar('view')) != $this->param('cache_view_1') &&
(JRequest :: getVar('view')) != $this->param('cache_view_2') &&
(JRequest :: getVar('view')) != $this->param('cache_view_3') &&
(JRequest :: getVar('view')) != $this->param('cache_view_4')) { return; }
$relativePath=$this->request_uri();
if (strpos($relativePath, '.')) { return; } //exit if found DOT in the request_uri, we do not want to cache anything other than SEO
$relativePath=str_replace('/',DS,$relativePath);
//$body = Minify_HTML::minify(JResponse::getBody());
$body =JResponse::getBody();
$fullPath=$html_cache_dir.$relativePath;
$parts=explode(DS,$relativePath);
$currentPath=$html_cache_dir.DS;

foreach( $parts as $p){
if($p==''){
continue;
}
$currentPath.=$p;
if((!file_exists($currentPath))&&(!is_file($currentPath))){
mkdir($currentPath);
}
$currentPath.=DS;
}//end for each
$indexFile=$currentPath.DS.'index.html';
if(!file_exists($indexFile)){ $this->writeToFile($indexFile,$body); }
}

function writeToFile($fileName,$content){
$handle=fopen($fileName,'w');
fwrite($handle,$content);
fclose($handle);
}

function request_uri(){
if (isset($_SERVER['REQUEST_URI'])){
$uri = $_SERVER['REQUEST_URI'];
}else{
if (isset($_SERVER['argv'])){
$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][];
}else{
$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
}
}
return $uri;
}

function param($name){
static $plugin,$pluginParams;
if (!isset( $plugin )){
$plugin =& JPluginHelper::getPlugin('system', 'htmlcache');
$pluginParams = new JParameter( $plugin->params );
}
return $pluginParams->get($name);
}
}
Now lets create an event handler onAfterRender. The main task of the task handler to intercept only articles of the "Article" type, to create the directory structure of folders html_cache_dir in accordance with the structure of the website and to place/save page's content in there.


In addition, before saving, you can run the page via the HTML optimizer (for example, this Minify_HTML (http://code.google.com/p/minify/source/browse/trunk/min/lib/Minify/HTML.php)), which optimizes the size of the page by removing unnecessary comments and spaces, thereby increasing the efficiency of the website.


As a separate remark, we note that this code works for websites with SEO enabled and does not cache the pages with any extensions such as php or html. Those that will be cashed are URLs of the type:
/ about
/ software / catalog


The code will have to be tweaked if you are not using SEO.


htmlcache.php - directly to the code.


Both files can be uploaded to the / plugins / system or put in htmlcache.zip and installed via the administrative interface of Joomla. After installation, set this: html_cache_dir = / opt / www / html / cache / content in the plugin settings and turn on the plugin (Enabled: Yes).
When first accessing the page in the directory / opt / www / html / cache / you should see that content is available in those folders and files - this means that the plugin is working fine and that all write permissions are fine.


What is left to do is to force Apache to give these files without contacting the PHP code. In. Htaccess, right after the RewriteEngine on to add:
RewriteCond% {REQUEST_URI} (/ | / [^.] *) $ [NC]
RewriteCond% {DOCUMENT_ROOT} / cache / content /% {REQUEST_URI} / index.html-f
RewriteRule (. *) / Cache / html / $ 1/index.html [L]


Restart apache and test the browser. In order to verify the performance run (under Linux):
ab-n 10000-c 50-k www.azati.com/
...
Concurrency Level: 50
Time taken for tests: 4.294054 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 10000
Total transferred: 71155755 bytes
HTML transferred: 67695750 bytes
Requests per second: 2328.80 [#/sec] (mean)
Time per request: 21.470 [ms] (mean)
Time per request: 0.429 [ms] (mean, across all concurrent requests)
Transfer rate: 16182.38 [Kbytes/sec] received
...
It is better to run the test a few times to ensure the "warm-up" for Apache. Can be run on the different for each.


Replace "www.azati.com" with the address of your server, www.azati.com can be tested for comparison. Do not fear, the site does not crush and Google statistics are not coreupted.

Unfortunately, the speed does not come for free:
  1. We lose the ability to edit articles (Articles) through the Joomla front-end with the help of special plugins, we can do so only through the administrative interface (i.e. the standard Joomla ability).
  2. After editing the article, you must clear the cache via the administrative interface Tools -> Clean cache.
Weigh all factors and decide whether this approach is justified for your website.


P.S. If you have dynamic content, you can arrange a periodic cleaning of the cache (e.g. every hour), and hence get a fast site that is also frequently updated.


SOURCE: http://habrahabr.ru/blogs/personal/92783/  



The key is, if you change the cotent on your website, you must clear Joomla cache. Otherwise, the new content will not be displayed. If you're going to use this method, this must be made clear to the customer.

To order a website from us, go to our web design Ottawa site, this year we focus on website design Ottawa for medium businesses and non-profit organizations.

Tuesday, February 14, 2012

Joomla 2.5.1 Released: I am Sold

I am sold, but my question is what happened to all the numbers in between version 1.7.5 and 2.5.1? I know Joomla is now on a new development cycle, popping out a new "puppy" every 6 months, but why 2.5? 


I was not impressed with Joomla 1.7, but I did like Joomla 2.5, haven't had a chance to investigate it very carefully, but what I saw upon a quick, I did like.

With all that said, we will use Joomla 2.5.1 with caution, only for small projects at first. We'll wait for all the extensions to catch up. .

Our main search terms are: web design Ottawa and website design Ottawa.

For SEO help, please contact us via my wife's SEO Ottawa website.

Thursday, January 26, 2012

Caching Issue with Rockettheme's Template

We recently released a site using Rockettheme's Nebulae template. The template is very sleek, we loved it, and the client loved the end result http://www.galleriadesign.ca/.

To speed up the site, we installed caching, and that corrupted the interface in certain browsers. Searching on Rockettheme's forum did confirm that there, in fact, a clash between many of Rockettheme's templates' elements and Joomla caching. In fact, there are clashing issues with many 3rd party modules and components. We disabled caching on everything, including individual modules. This did produce good results until we noticed that once you try to access the site from a mobile device, the interface got messed up again.

The solution was to disable the "iPhone custom css" option in the Gantry of the template. Together with disabling all cache, this solved the Nebulae issues.

Rockettheme has a reputation for sleek designs and poor coding. Confirmed.

On the plus side, we finally got on the 1st page on Google.ca for our two main keywords: website design Ottawa and web design Ottawa.