<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Web Development Archives - Michael Sunarlim</title>
	<atom:link href="https://sunarlim.com/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>https://sunarlim.com/category/web-development/</link>
	<description>Random blurbs about web development, e-commerce and technology</description>
	<lastBuildDate>Fri, 19 Mar 2021 19:55:20 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.5</generator>

<image>
	<url>https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/07/cropped-MS_Square_512x512.png?fit=32%2C32&#038;ssl=1</url>
	<title>Web Development Archives - Michael Sunarlim</title>
	<link>https://sunarlim.com/category/web-development/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">30613895</site>	<item>
		<title>MailChimp Subscribe Form with PHP, jQuery and AJAX (API 3.0)</title>
		<link>https://sunarlim.com/2017/01/mailchimp-subscribe-form-php-jquery-api3/</link>
					<comments>https://sunarlim.com/2017/01/mailchimp-subscribe-form-php-jquery-api3/#comments</comments>
		
		<dc:creator><![CDATA[Michael]]></dc:creator>
		<pubDate>Mon, 09 Jan 2017 06:48:18 +0000</pubDate>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[mailchimp]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://sunarlim.com/?p=2591</guid>

					<description><![CDATA[<p>By popular demand, I updated my code and posted it as new GitHub repository that utilizes newer MailChimp API 3.0. Please read the tutorial below to create AJAX based MailChimp subscribe form on your PHP website with a little jQuery knowledge. Original post using (older and no longer supported) MailChimp API 1.0 can be found here. What... <span class="more"><a class="more-link" href="https://sunarlim.com/2017/01/mailchimp-subscribe-form-php-jquery-api3/">Continue reading <span class="meta-nav">&#8594;</span></a></span></p>
<p>The post <a href="https://sunarlim.com/2017/01/mailchimp-subscribe-form-php-jquery-api3/">MailChimp Subscribe Form with PHP, jQuery and AJAX (API 3.0)</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>By popular demand, I updated my code and posted it as <a href="https://github.com/sunarlim/mailchimp-subscribe-api-v3" target="_blank" rel="noopener">new GitHub repository</a> that utilizes newer MailChimp API 3.0. Please read the tutorial below to create AJAX based MailChimp subscribe form on your PHP website with a little jQuery knowledge.</p>
<p>Original post using (older and no longer supported) MailChimp API 1.0 can be found <a href="https://sunarlim.com/2014/04/mailchimp-sign-form-php-jquery-ajax/">here</a>.</p>
<h3>What this code does</h3>
<ul>
<li>Validate field contents</li>
<li>Pass the form submission to MailChimp and add the record to your list</li>
<li>Basic fallback method for very, very old browser or does not have JavaScript activated</li>
<li>Very customizable and easily expandable, depending on your requirements</li>
<li>jQuery and jQuery Validation plugin called from CDNJS to keep number of files to maintain at minimal</li>
</ul>
<p><span id="more-2591"></span></p>
<h3>Tools/Credits</h3>
<ol>
<li><a title="jQuery" href="http://jquery.com/" target="_blank" rel="noopener">jQuery</a></li>
<li><a title="jQuery Validation" href="http://jqueryvalidation.org/" target="_blank" rel="noopener">jQuery Validation Plugin</a></li>
<li><a title="MailChimp API Wrappers" href="https://github.com/drewm/mailchimp-api" target="_blank" rel="noopener">MailChimp API v3 PHP Wrapper</a></li>
</ol>
<h3>MailChimp API Key and List ID</h3>
<p>Below we start, we need to generate public API key from your MailChimp account and also identify your list ID. If you are not sure how to retrieve those, follow these links from MailChimp Knowledge Base to <a title="MailChimp - Finding or generating your API key" href="http://kb.mailchimp.com/accounts/management/about-api-keys#Finding-or-generating-your-API-key" target="_blank" rel="noopener">retrieve your account&#8217;s API key</a> and <a title="MailChimp - Find Your List ID" href="http://kb.mailchimp.com/lists/managing-subscribers/find-your-list-id" target="_blank" rel="noopener">find your list ID</a>.</p>
<h4>The Form Page (index.php)</h4>
<p>jQuery will handle the AJAX using <span class="lang:js decode:true crayon-inline">$.post</span>  method and jQuery Validation plugin will validate the field values including email address format.</p>
<p>For this example, I am including first name and last name as part of the form fields. Feel free to make adjustments as required. Although keep in mind after changing the form fields, you may also need to adjust the <span class="lang:default decode:true crayon-inline">subscribe.php</span>  file too.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-linenumbers="false">&lt;html&gt;
&lt;head&gt;
  &lt;title&gt;MailChimp (API v3) Sign-Up Form&lt;/title&gt;
  &lt;script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"&gt;&lt;/script&gt;
  &lt;script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"&gt;&lt;/script&gt;
  &lt;script type="text/javascript"&gt;
    $(document).ready(function() {
      // jQuery Validation
      $("#signup").validate({
        // if valid, post data via AJAX
        submitHandler: function(form) {
          $.post("subscribe.php", { fname: $("#fname").val(), lname: $("#lname").val(), email: $("#email").val() }, function(data) {
            $('#response').html(data);
          });
        },
        // all fields are required
        rules: {
          fname: {
            required: true
          },
          lname: {
            required: true
          },
          email: {
            required: true,
            email: true
          }
        }
      });
    });
  &lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;div id="wrapper"&gt;
    &lt;form id="signup" class="formee" action="subscribe.php" method="post"&gt;
      &lt;fieldset&gt;
        &lt;legend&gt;Sign Up&lt;/legend&gt;
        &lt;div&gt;
          &lt;label for="fname"&gt;First Name *&lt;/label&gt; &lt;input name="fname" id="fname" type="text" /&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;label for="lname"&gt;Last Name *&lt;/label&gt; &lt;input name="lname" id="lname" type="text" /&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;label for="email"&gt;Email Address *&lt;/label&gt; &lt;input name="email" id="email" type="text" /&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;input class="right inputnew" type="submit" title="Send" value="Send" /&gt;
        &lt;/div&gt;
      &lt;/fieldset&gt;
    &lt;/form&gt;
    &lt;div id="response"&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<h4>Form Processor <em>(subscribe.php)</em></h4>
<p>I try to include as much comment as possible to make the code self explanatory.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-linenumbers="false">&lt;?php

  // Put your MailChimp API and List ID hehe
  $api_key = 'ENTER_YOUR_API_KEY_HERE';
  $list_id = 'ENTER_YOUR_LIST_ID_HERE';

  // Let's start by including the MailChimp API wrapper
  include('./inc/MailChimp.php');
  // Then call/use the class
  use \DrewM\MailChimp\MailChimp;
  $MailChimp = new MailChimp($api_key);

  // Submit subscriber data to MailChimp
  // For parameters doc, refer to: http://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/
  // For wrapper's doc, visit: https://github.com/drewm/mailchimp-api
  $result = $MailChimp-&gt;post("lists/$list_id/members", [
              'email_address' =&gt; $_POST["email"],
              'merge_fields'  =&gt; ['FNAME'=&gt;$_POST["fname"], 'LNAME'=&gt;$_POST["lname"]],
              'status'        =&gt; 'subscribed',
            ]);

  if ($MailChimp-&gt;success()) {
    // Success message
    echo "&lt;h4&gt;Thank you, you have been added to our mailing list.&lt;/h4&gt;";
  } else {
    // Display error
    echo $MailChimp-&gt;getLastError();
    // Alternatively you can use a generic error message like:
    // echo "&lt;h4&gt;Please try again.&lt;/h4&gt;";
  }
?&gt;</pre>
<h3>Download</h3>
<p><a href="https://github.com/sunarlim/mailchimp-subscribe-api-v3/archive/master.zip">Click here to download</a> the basic files to create MailChimp subscribe form on your website. Alternatively, you can also <a href="https://github.com/sunarlim/mailchimp-subscribe-api-v3" target="_blank" rel="noopener">visit the GitHub repository</a>.</p>
<h3>Coming Soon Templates</h3>
<p>The MailChimp subscribe form example only includes basic HTML page. If you are thinking of using it for your upcoming site, and you have limited resources to create the page design, check out my list of <a title="5 Clean and Free Coming Soon Page Templates with Email Subscription Form" href="https://sunarlim.com/2014/05/5-clean-and-free-coming-soon-page-templates/">5 Clean and Free Coming Soon Page Templates</a> and <a title="ThemeForest &gt; Site Templates &gt; Specialty Pages &gt; Under Construction" href="http://themeforest.net/category/site-templates/specialty-pages/under-construction?ref=mayksyu" target="_blank" rel="noopener">Coming Soon &amp; Under Construction Templates on ThemeForest</a>.</p>
<p>The post <a href="https://sunarlim.com/2017/01/mailchimp-subscribe-form-php-jquery-api3/">MailChimp Subscribe Form with PHP, jQuery and AJAX (API 3.0)</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sunarlim.com/2017/01/mailchimp-subscribe-form-php-jquery-api3/feed/</wfw:commentRss>
			<slash:comments>38</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2591</post-id>	</item>
		<item>
		<title>Shopify PageSpeed Score: Pushing the limits on Bluelounge website</title>
		<link>https://sunarlim.com/2016/08/shopify-pagespeed/</link>
					<comments>https://sunarlim.com/2016/08/shopify-pagespeed/#respond</comments>
		
		<dc:creator><![CDATA[Michael]]></dc:creator>
		<pubDate>Tue, 02 Aug 2016 18:35:48 +0000</pubDate>
				<category><![CDATA[Case Studies]]></category>
		<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Tools]]></category>
		<category><![CDATA[Work Related]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[pagespeed]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[shopify]]></category>
		<guid isPermaLink="false">https://sunarlim.com/?p=2242</guid>

					<description><![CDATA[<p>In order to improve the site's SEO even further, Bluelounge requested to improve their Shopify site's PageSpeed score to above 90/100 on both Desktop and Mobile. These are my notes to achieve 95/100 PageSpeed score on an e-commerce site. The steps explained here may not be applicable to all Shopify powered sites, but hopefully you will be able to pick up a point or two. </p>
<p>The post <a href="https://sunarlim.com/2016/08/shopify-pagespeed/">Shopify PageSpeed Score: Pushing the limits on Bluelounge website</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.bluelounge.com/" target="_blank">Bluelounge</a> is an International design studio and recognized for its clever and unique products to solve everyday problems. Their products range from cable management, chargers, device stands, bags, to desk. I had worked with them from 2007 to 2013. When I started to go freelancing full-time, they were also one of my first clients. I consulted for their e-commerce requirements at the time and advised to switch their platform to <a href="https://www.shopify.com/?ref=mayks" target="_blank">Shopify</a>. They took the suggestion and so the development began.</p>
<p>The new site was built completely from the ground up. We developed the custom theme with primary goal to have the fastest load time while keeping all of required functionality and ability to display unique page layout for each of Bluelounge&#8217;s 30+ products. I invited <a href="https://about.me/nizamilputra" target="_blank">Rizqi Nizamil Putra</a> into the team to help with the front-end development as time was of the essence as well. We completed the project on time and boy, the results were better than our expectations. Thanks for Shopify&#8217;s solid infrastructure, most of the web pages loaded in less than 2 seconds. A critical factor when you are building an e-commerce site.</p>
<div id="attachment_2252" style="width: 750px" class="wp-caption aligncenter"><a href="https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/www.bluelounge.com_.png?ssl=1"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-2252" class="size-large wp-image-2252" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/www.bluelounge.com_.png?resize=740%2C580&#038;ssl=1" alt="Bluelounge new website with Shopify" width="740" height="580" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/www.bluelounge.com_.png?resize=1024%2C802&amp;ssl=1 1024w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/www.bluelounge.com_.png?resize=300%2C235&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/www.bluelounge.com_.png?resize=768%2C602&amp;ssl=1 768w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/www.bluelounge.com_.png?resize=600%2C470&amp;ssl=1 600w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/www.bluelounge.com_.png?resize=780%2C611&amp;ssl=1 780w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/www.bluelounge.com_.png?resize=1200%2C940&amp;ssl=1 1200w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/www.bluelounge.com_.png?w=1440&amp;ssl=1 1440w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></a><p id="caption-attachment-2252" class="wp-caption-text">Bluelounge new website with Shopify</p></div>
<h2>You always want to make it better and faster&#8230;</h2>
<p>Move forward to June 2016, Bluelounge came with a very specific but interested request. In order to improve the site&#8217;s SEO even further, they asked whether it was possible to get the PageSpeed score above 90 for both Desktop and Mobile from <a href="https://developers.google.com/speed/pagespeed/insights/" target="_blank">Google&#8217;s PageSpeed Insights</a> and an A from <a href="https://gtmetrix.com/" target="_blank">GTMetrix website performance tool</a>.</p>
<p>To be honest, I initially considered the request quite difficult considering one of Shopify&#8217;s major limitations was that we did not have full control of the server and apps. After a bit of research on Shopify&#8217;s forums, this was a very common issue as found <a href="https://ecommerce.shopify.com/c/ecommerce-design/t/page-speed-issues-277406" target="_blank">here</a>, <a href="https://ecommerce.shopify.com/c/ecommerce-design/t/help-with-page-speed-291747" target="_blank">here</a>, and <a href="https://ecommerce.shopify.com/c/ecommerce-design/t/page-speed-issue-335193" target="_blank">here</a>. There are many suggestions there which you could take to improve the site&#8217;s performance bit by bit, mostly were already applied on Bluelounge website, but probably not enough to make it get &gt;90 PageSpeed score.</p>
<p>I took on the job nevertheless, the challenge intrigued me.</p>
<h2>Performance analysis</h2>
<p>When trying to improve a website&#8217;s performance, whether for SEO, load speed, or conversion rates, the first thing to do is to breakdown <span style="text-decoration: underline;">what have been done correctly</span> and <span style="text-decoration: underline;">what&#8217;s still missing</span>. That was exactly what I did.</p>
<h4>Theme related items done:</h4>
<ol>
<li>Avoid CSS @import; except for the web fonts which are loaded from MyFonts</li>
<li>Valid HTML structure; no console errors</li>
</ol>
<h4>Content based items done:</h4>
<ol>
<li>Optimize images</li>
<li>Specify image dimensions</li>
<li>Serve scaled images</li>
</ol>
<h4>Important items done by Shopify by default:</h4>
<ol>
<li>Leverage browser caching</li>
<li>Enable gzip compression</li>
<li>Enable Keep-Alive</li>
</ol>
<h4><span style="text-decoration: underline;">Critical items to improve:</span></h4>
<ol>
<li>Minify CSS</li>
<li>Minify JavaScript</li>
<li>Eliminate render-blocking JavaScript and CSS in above-the-fold content</li>
</ol>
<p>Even with the fast load time, PageSpeed still considered the site&#8217;s performance below standard and only rated it 83/100 for Desktop and 66/100 for Mobile.</p>
<div id="attachment_2248" style="width: 750px" class="wp-caption aligncenter"><a href="https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-score-before.png?ssl=1"><img decoding="async" aria-describedby="caption-attachment-2248" class="wp-image-2248 size-large" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-score-before.png?resize=740%2C635&#038;ssl=1" alt="Bluelounge – PageSpeed score before" width="740" height="635" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-score-before.png?resize=1024%2C879&amp;ssl=1 1024w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-score-before.png?resize=300%2C258&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-score-before.png?resize=768%2C659&amp;ssl=1 768w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-score-before.png?resize=600%2C515&amp;ssl=1 600w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-score-before.png?resize=780%2C670&amp;ssl=1 780w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-score-before.png?w=1200&amp;ssl=1 1200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></a><p id="caption-attachment-2248" class="wp-caption-text">Bluelounge website PageSpeed score result before optimization</p></div>
<p>The first two items were relatively easy to do, with the right tools.</p>
<h3>Minifying and combining CSS files</h3>
<p>The website&#8217;s stylesheet had been built using SCSS with <a href="http://getbootstrap.com/" target="_blank">Bootstrap</a> for the framework, so minifying the output file alone was not enough to make PageSpeed happy with the file sizes.  I had to improvise. Using <a href="https://github.com/twbs/bootstrap-sass" target="_blank">Bootstrap for Sass</a>, I rebuilt the CSS by hand-picking Bootstrap components that were actually used and eliminated the rest. I also carefully merged individual CSS files into a single master stylesheet for most of the pages.</p>
<p>After minified, the final <span class="theme:github lang:default decode:true crayon-inline">bluelounge.v42.css</span>  is about 123KB in size.</p>
<h3>Minifying and combining JavaScript files</h3>
<p>Same as CSS, minifying alone was not enough if they files were still fragmented. PageSpeed really factored in the number of calls it had to make to load a web page. This time it was a bit more tricky though, as with JavaScript a small error or wrong order could break critical shopping cart functionality. It took extensive trial and error tests to get the desired output.</p>
<p>Luckily PageSpeed is more forgiving when it comes to JS files and I did not have to merge everything into a single file as I had done for the CSS. I still managed to combine 7 JS files into one to reduce the number of requests.</p>
<p>You could use these tools to combine and minify CSS and JS files:</p>
<ul>
<li><a href="http://jscompress.com/" target="_blank">JSCompress</a></li>
<li><a href="http://www.shrinker.ch/" target="_blank">shrinker</a></li>
<li><a href="http://refresh-sf.com/" target="_blank">Refresh-SF</a></li>
</ul>
<p><strong>Tip:</strong> always do thorough tests after merging and/or minifying CSS or JS files. At the very minimal, make sure you could still add items to cart, view shopping cart, and proceed to checkout.</p>
<h3>Eliminating render-blocking elements above the fold</h3>
<p>What is render-blocking content? In my own words: files or elements that delays the HTML page to be loaded as quickly as possible. Most JavaScript and CSS files are usually inserted within the <span class="theme:github lang:default decode:true crayon-inline ">&lt;head&gt;</span> . This means your browser will try to download all linked files while it tries to complete loading the rest of the page, thus creating a delay from the of first byte received until the page is rendered on your screen.</p>
<p>Above the fold means the initial area of your browser&#8217;s viewport before scrolling further.</p>
<p>The concept is simple: to get the browser to render above the fold content as quickly as possible by reducing as many unnecessary elements as possible. Unfortunately, it&#8217;s really easier to be said than done.</p>
<h4>Eliminating render-blocking CSS</h4>
<p>For quick and lazy approach, you could always move all your CSS calls to the bottom, before the closing <span class="theme:github lang:default decode:true crayon-inline ">&lt;/body&gt;</span>  tag. The problem with this is, and you probably have seen it on some sites, you would see the page shown with plain content first before it quickly shifted to the <em>stylized version </em>a second later. For Bluelounge, this was not an ideal solution. They did not want to sacrifice form over function, which was understandable.</p>
<p>The solution was to use inline CSS for essential above the fold styles within the <span class="theme:github lang:default decode:true crayon-inline ">&lt;head&gt;</span>  and call the rest of the stylesheet from external CSS file at the bottom of the page. I needed to create a mini version of the CSS and only include classes used to render above the fold content.</p>
<p>Why not inlining the entire CSS file and save the trouble from having to rebuild an entire CSS block? Because you want to keep the HTML code light. Inline CSS is not cacheable. If I put the entire CSS inline, I would add 74KB on every web page and PageSpeed would not like it either.</p>
<p>At the end my inline CSS was around 21KB, mostly from Bootstrap&#8217;s grid classes.</p>
<h4>Eliminating render-blocking JavaScript</h4>
<p>The final part was to optimize the JavaScript calls. I had been saving the hardest part for last. Shopify&#8217;s shopping cart functionality depends on JavaScript, specifically using jQuery library. What this implies is that I could not just move all JS calls to the bottom like with CSS. With the template structure at the time, some shopping cart ability like adding an item into cart works by loading the script block within the body of the page. If the jQuery library was called after the function, it would simply not work.</p>
<p>I had to restructure the JavaScript calls, removing any function made inside the content and combining them into an external JS file to be loaded at the bottom of the page. Some functions still needed to be retained as inline though. They required to call dynamic variable from Shopify&#8217;s liquid language. For these, I just move them further down.</p>
<p>After setting the right order of the scripts to be called, my work was done.</p>
<h2>The outcome</h2>
<p>The numbers speak for themselves.</p>
<div id="attachment_2262" style="width: 750px" class="wp-caption aligncenter"><a href="https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-mobile.png?ssl=1"><img decoding="async" aria-describedby="caption-attachment-2262" class="size-large wp-image-2262" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-mobile.png?resize=740%2C740&#038;ssl=1" alt="Bluelounge Homepage – PageSpeed score 94/100 for Mobile" width="740" height="740" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-mobile.png?resize=1024%2C1024&amp;ssl=1 1024w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-mobile.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-mobile.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-mobile.png?resize=768%2C768&amp;ssl=1 768w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-mobile.png?resize=600%2C600&amp;ssl=1 600w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-mobile.png?resize=780%2C780&amp;ssl=1 780w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-mobile.png?w=1200&amp;ssl=1 1200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></a><p id="caption-attachment-2262" class="wp-caption-text">Bluelounge Homepage – PageSpeed score 94/100 for Mobile</p></div>
<div id="attachment_2261" style="width: 750px" class="wp-caption aligncenter"><a href="https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-desktop.png?ssl=1"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2261" class="size-large wp-image-2261" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-desktop.png?resize=740%2C555&#038;ssl=1" alt="Bluelounge Homepage – PageSpeed score 95/100 for Desktop" width="740" height="555" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-desktop.png?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-desktop.png?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-desktop.png?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-desktop.png?resize=600%2C450&amp;ssl=1 600w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-desktop.png?resize=780%2C585&amp;ssl=1 780w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2016/08/Bluelounge-–-PageSpeed-after-desktop.png?w=1200&amp;ssl=1 1200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></a><p id="caption-attachment-2261" class="wp-caption-text">Bluelounge Homepage – PageSpeed score 95/100 for Desktop</p></div>
<p>Of course PageSpeed score is different from page to page and you should not just measure the Homepage. In this case, most of the pages have the score of &gt;85. Mission accomplished.</p>
<p>These steps may not be applicable to all Shopify powered sites, but hopefully you will be able to pick up a point or two. Also keep in mind that if your site uses many third party apps that add calls to external assets, it is almost impossible to control those.</p>
<p>Interested to optimize your Shopify website? Please do not hesitate to <a href="https://sunarlim.com/contact/">drop me a line</a>.</p>
<p>The post <a href="https://sunarlim.com/2016/08/shopify-pagespeed/">Shopify PageSpeed Score: Pushing the limits on Bluelounge website</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sunarlim.com/2016/08/shopify-pagespeed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2242</post-id>	</item>
		<item>
		<title>SSL certificate installation on DigitalOcean + ServerPilot (Apache)</title>
		<link>https://sunarlim.com/2016/07/ssl-digitalocean-serverpilot-apache/</link>
					<comments>https://sunarlim.com/2016/07/ssl-digitalocean-serverpilot-apache/#comments</comments>
		
		<dc:creator><![CDATA[Michael]]></dc:creator>
		<pubDate>Sat, 30 Jul 2016 07:14:45 +0000</pubDate>
				<category><![CDATA[Web Apps]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[digitalocean]]></category>
		<category><![CDATA[serverpilot]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ssl]]></category>
		<guid isPermaLink="false">https://sunarlim.com/?p=2211</guid>

					<description><![CDATA[<p>It is not that difficult to manually install an SSL certificate on DigitalOcean and ServerPilot stack. Although you need to have basic knowledge of running UNIX command lines and text editor.</p>
<p>The post <a href="https://sunarlim.com/2016/07/ssl-digitalocean-serverpilot-apache/">SSL certificate installation on DigitalOcean + ServerPilot (Apache)</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>First things first, finding out about <a href="https://m.do.co/c/286ec30a49ea" target="_blank">DigitalOcean</a> and <a href="https://serverpilot.io/" target="_blank">ServerPilot</a> was one of the best discoveries I have ever had as a web developer. Not saying that it is not fun to spin up a blank server and installing the required stack to host the website I work on or manage, but these steps take time. DigitalOcean and ServerPilot combination allows me to set up a solid, secure and affordable server in a few minutes. The only missing piece was to install an SSL certificate with ease without having to upgrade to ServerPilot paid plan which costs from $10/month.</p>
<p>As it turns out, it is not that difficult. Although you need to have basic knowledge of running UNIX command lines and text editor. You can probably found many detailed tutorials to install SSL certificate on DO + SP stack, but most of them are for Nginx environment. Mine is for Apache, which I am more familiar with.</p>
<p>There is nothing original here. I am merely summarizing the steps from excellent references I found:</p>
<ol>
<li><a href="https://www.digitalocean.com/community/tutorials/how-to-install-an-ssl-certificate-from-a-commercial-certificate-authority" target="_blank">How To Install an SSL Certificate from a Commercial Certificate Authority | DigitalOcean</a></li>
<li><a href="https://www.digitalocean.com/community/questions/install-ssl-certificate-manually-on-serverpilot-for-apache#comment_33544" target="_blank">Install SSL certificate manually on serverpilot for Apache</a></li>
</ol>
<h2>Create a directory for your keys and certificates</h2>
<p>To keep things tidy and make it easier to follow this tutorial, I am going to create a dedicated directory to store all the keys and certificates. So let&#8217;s create a new directory after logging into the server using SSH. We want to put everything under <span class="lang:default decode:true crayon-inline ">/etc/apache-sp/certs/appname</span>  so let&#8217;s do that:</p>
<pre class="font-size:16 line-height:24 toolbar:2 lang:sh decode:true ">mkdir /etc/apache-sp/certs
mkdir /etc/apache-sp/certs/appname
</pre>
<p><em>* replace <span class="lang:default decode:true crayon-inline ">appname</span>  with your application name on ServerPilot</em></p>
<h2 id="generate-a-csr-and-private-key">Generate a CSR and Private Key</h2>
<p>Once it has been created, you want to change into the directory:</p>
<pre class="font-size:16 line-height:24 toolbar:2 lang:sh decode:true">cd /etc/apache-sp/certs/appname</pre>
<p>Then generate a pair of certificate signing request (CSR) and private key:</p>
<pre class="font-size:16 line-height:24 toolbar:2 lang:ps decode:true">openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.com.key -out yourdomain.com.csr</pre>
<p>You will be prompted to enter information about your certificate request. To save time, DigitalOcean already provides excellent instructions on what to enter <a href="https://www.digitalocean.com/community/tutorials/how-to-install-an-ssl-certificate-from-a-commercial-certificate-authority#generate-a-csr-and-private-key" target="_blank">here</a>.</p>
<p>Once that&#8217;s done, copy the content of the generated CSR using this command:</p>
<pre class="font-size:16 line-height:24 toolbar:2 lang:sh decode:true">cat example.com.csr</pre>
<h2>Purchase an SSL certificate</h2>
<p>At this point, I assume you are already familiar in purchasing and requesting an SSL certificate. In case you need some guidance, DigitalOcean gives <a href="https://www.digitalocean.com/community/questions/install-ssl-certificate-manually-on-serverpilot-for-apache#example-ca-1-rapidssl-via-namecheap" target="_blank">a couple of examples</a> to do this using NameCheap and GoDaddy.</p>
<h2>Installing the SSL certificate on the server</h2>
<p>Once you have completed the process of generating SSL certificate, you are most likely will receive 2 files:</p>
<ol>
<li>The SSL certificate</li>
<li>The CA intermediate certificate</li>
</ol>
<p>You need to copy both of these files into the <span class="lang:default decode:true crayon-inline  ">/etc/apache-sp/certs/appname</span>  we created earlier. If you do everything correctly to this point, you should have 4 files within that directory:</p>
<ol>
<li>The certificate signing request (CSR): <span class="lang:default decode:true crayon-inline ">yourdomain.com.csr</span></li>
<li>The private key: <span class="lang:default decode:true crayon-inline ">yourdomain.com.key</span></li>
<li>The SSL certificate: <span class="lang:default decode:true crayon-inline ">yourdomain_com.crt</span></li>
<li>The CA intermediate certificate: <span class="lang:default decode:true crayon-inline ">yourdomain_com.ca-bundle</span></li>
</ol>
<h3>Enabling SSL on your domain</h3>
<p>We have come to the magic moment and most critical step. You will need to edit Apache&#8217;s configuration file to enable the SSL. You have to create a separate configuration file from the default one(s), otherwise ServerPilot might overwrite your custom file when it is updating your server.</p>
<p>The config files are located on <span class="lang:default decode:true crayon-inline ">/etc/apache-sp/vhosts.d</span>  directory so let&#8217;s change the directory to it:</p>
<pre class="font-size:16 line-height:24 toolbar:2 lang:sh decode:true ">cd /etc/apache-sp/vhosts.d</pre>
<p>Then you can view available config files under that directory using the <span class="lang:sh decode:true crayon-inline ">ls</span>  command. There are probably several <span class="lang:default decode:true crayon-inline ">.conf</span>  files there if you are hosting multiple sites on the server.</p>
<p>Now we want to create a new config file related to your app/site name. I am calling it <span class="lang:default decode:true crayon-inline ">appname.ssl.conf</span> .</p>
<pre class="font-size:16 line-height:24 toolbar:2 lang:ps decode:true ">vi appname.ssl.conf</pre>
<p>This is going to open the Vi editor where you are going to enter the <em>edited</em> lines:</p>
<pre class="lang:vim decode:true">Listen 443

&lt;VirtualHost *:443&gt;
    Define DOCUMENT_ROOT /srv/users/serverpilot/apps/appname/public

    SSLEngine on

    SSLCertificateFile /etc/apache-sp/certs/appname/appname_com.crt
    SSLCertificateKeyFile /etc/apache-sp/certs/appname/appname.com.key
        SSLCertificateChainFile /etc/apache-sp/certs/appname/appname_com.ca-bundle

    ServerAdmin webmaster@
    DocumentRoot ${DOCUMENT_ROOT}
        ServerName appname
    ServerAlias appname.com
    ServerAlias www.appname.com


    RemoteIPHeader X-Real-IP
    SetEnvIf X-Forwarded-SSL on HTTPS=on
    IncludeOptional /etc/apache-sp/vhosts.d/appname.d/*.conf

    ErrorLog "/srv/users/serverpilot/log/appname/https_appname_apache.error.log"
    CustomLog "/srv/users/serverpilot/log/appname/https_appname_apache.access.log" common
&lt;/VirtualHost&gt;</pre>
<p>Save the file and restart your Apache server:</p>
<pre class="font-size:16 line-height:24 toolbar:2 lang:sh decode:true ">sudo service apache-sp restart</pre>
<p>Done! Test it out by opening your site using <span class="lang:default decode:true crayon-inline ">https://</span>  prefix, eg: https://www.yourdomain.com.</p>
<p>You may need to adjust your site&#8217;s settings to ensure all components are called using <span class="lang:default decode:true crayon-inline ">https://</span>  instead of <span class="lang:default decode:true crayon-inline ">http://</span> , but that&#8217;s a whole different process and not going to be covered here.</p>
<p>The post <a href="https://sunarlim.com/2016/07/ssl-digitalocean-serverpilot-apache/">SSL certificate installation on DigitalOcean + ServerPilot (Apache)</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sunarlim.com/2016/07/ssl-digitalocean-serverpilot-apache/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2211</post-id>	</item>
		<item>
		<title>Latest project: House of Kooser</title>
		<link>https://sunarlim.com/2015/08/latest-project-house-of-kooser/</link>
					<comments>https://sunarlim.com/2015/08/latest-project-house-of-kooser/#respond</comments>
		
		<dc:creator><![CDATA[Michael]]></dc:creator>
		<pubDate>Fri, 14 Aug 2015 05:43:15 +0000</pubDate>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[kirby]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[responsive]]></category>
		<guid isPermaLink="false">https://sunarlim.com/?p=1523</guid>

					<description><![CDATA[<p>It had been a while since I worked on fully customized website without using a pre-built templates. Doing <a href="http://houseofkooser.com/" target="_blank">House of Kooser's new website</a> has been a refreshing experience. While it certainly took more time, there is this different level of satisfaction once you see up and running.</p>
<p>The post <a href="https://sunarlim.com/2015/08/latest-project-house-of-kooser/">Latest project: House of Kooser</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>It had been a while since I fully worked on a customized website without using pre-built templates. Doing <a href="http://houseofkooser.com/" target="_blank">House of Kooser&#8217;s new website</a> has been a refreshing experience. While it certainly took more time, there is this different level of satisfaction once you see it up and running.</p>
<p>On top of it, the site is integrated with the always awesome <a href="http://getkirby.com/" target="_blank">Kirby CMS</a>.</p>
<p>Check it out at <a href="http://houseofkooser.com/" target="_blank">houseofkooser.com</a></p>
<p>The post <a href="https://sunarlim.com/2015/08/latest-project-house-of-kooser/">Latest project: House of Kooser</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sunarlim.com/2015/08/latest-project-house-of-kooser/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1523</post-id>	</item>
		<item>
		<title>Mario Khoe Portraiture v2</title>
		<link>https://sunarlim.com/2015/01/mario-khoe-portraiture-v2/</link>
					<comments>https://sunarlim.com/2015/01/mario-khoe-portraiture-v2/#comments</comments>
		
		<dc:creator><![CDATA[Michael]]></dc:creator>
		<pubDate>Tue, 27 Jan 2015 15:25:30 +0000</pubDate>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Web Development]]></category>
		<guid isPermaLink="false">https://sunarlim.com/?p=1426</guid>

					<description><![CDATA[<p>The new website uses Kirby CMS so he can update the content easily anytime. In a short five days we launched the new website. In a short five days we launched the new website. Mario is really passionate with his hobby in photography and now the world can enjoy his work.</p>
<p>The post <a href="https://sunarlim.com/2015/01/mario-khoe-portraiture-v2/">Mario Khoe Portraiture v2</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I had worked with Mario back in 2011 to build his photography portfolio website. Last week he contacted me again to reactivate the site. After a short conversation he agreed that instead of just republishing the old website, we should make a new one. It had to be responsive because most of Internet users in Singapore actually browse from tablet and smartphones.</p>
<p>The new website uses <a href="http://getkirby.com" title="Kirby CMS" target="_blank">Kirby flat file CMS</a> so he can update the content easily anytime. In five short days we were able to complete and launch it. Mario is really passionate with his hobby in photography and now the world can enjoy his work.</p>
<p>Visit Mario Khoe&#8217;s website: <a href="http://www.mariokhoe.com" title="Mario Khoe Portraiture" target="_blank">www.mariokhoe.com</a></p>
<p><img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Mario-Khoe-Portraiture-Full.jpg?resize=740%2C1457&#038;ssl=1" alt="Mario Khoe Portraiture - Full" width="740" height="1457" class="alignnone size-full wp-image-1427" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Mario-Khoe-Portraiture-Full.jpg?w=1280&amp;ssl=1 1280w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Mario-Khoe-Portraiture-Full.jpg?resize=152%2C300&amp;ssl=1 152w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Mario-Khoe-Portraiture-Full.jpg?resize=520%2C1024&amp;ssl=1 520w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Mario-Khoe-Portraiture-Full.jpg?resize=150%2C295&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Mario-Khoe-Portraiture-Full.jpg?resize=1200%2C2363&amp;ssl=1 1200w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Mario-Khoe-Portraiture-Full.jpg?resize=400%2C788&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Mario-Khoe-Portraiture-Full.jpg?resize=800%2C1576&amp;ssl=1 800w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Mario-Khoe-Portraiture-Full.jpg?resize=200%2C394&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></p>
<p>The post <a href="https://sunarlim.com/2015/01/mario-khoe-portraiture-v2/">Mario Khoe Portraiture v2</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sunarlim.com/2015/01/mario-khoe-portraiture-v2/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1426</post-id>	</item>
		<item>
		<title>Set up free WordPress hosting using Amazon EC2 and Bitnami Cloud</title>
		<link>https://sunarlim.com/2015/01/set-free-wordpress-hosting-using-amazon-ec2-bitnami-cloud/</link>
					<comments>https://sunarlim.com/2015/01/set-free-wordpress-hosting-using-amazon-ec2-bitnami-cloud/#comments</comments>
		
		<dc:creator><![CDATA[Michael]]></dc:creator>
		<pubDate>Mon, 19 Jan 2015 15:38:46 +0000</pubDate>
				<category><![CDATA[Web Apps]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[bitnami]]></category>
		<category><![CDATA[cloud]]></category>
		<guid isPermaLink="false">https://sunarlim.com/?p=1404</guid>

					<description><![CDATA[<p>Amazon Web Services EC2 t2.micro instance combined with Bitnami Cloud Hosting Developer plan, both free products will get you free and terrific WordPress hosting for a year with less than an hour to set up. No command line knowledge actually required, something that usually discourages some developers from touching cloud-based hosting.</p>
<p>The post <a href="https://sunarlim.com/2015/01/set-free-wordpress-hosting-using-amazon-ec2-bitnami-cloud/">Set up free WordPress hosting using Amazon EC2 and Bitnami Cloud</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>For a few months I had been contemplating on moving my blog to a separate server. Recent increase traffic it was receiving and many WordPress plugins I installed started to make it a bit sluggish. It had been hosted on a VPS along with few other sites.</p>
<p>If you have read my post about <a href="https://sunarlim.com/2014/09/best-managed-wordpress-hosting-personal-small-business/" title="Best Managed WordPress Hosting for Personal and Small Business">WordPress hosting for personal and small business</a>, I listed <a href="https://secure.lightningbase.com/aff.php?aff=191" title="Fast, Secure, Managed WordPress Hosting | Lightning Base">Lightning Base</a> with its Personal plan for only $9.95/month. After recommending it to a couple of clients, I am impressed with it as it is fast and running cPanel which I am very familiar with. It would be the finest choice with my requirements.</p>
<h3>Amazon EC2</h3>
<p><img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/AWS-EC2-Logo.png?resize=300%2C65&#038;ssl=1" alt="AWS EC2 Logo" width="300" height="65" class="alignright size-medium wp-image-1412" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/AWS-EC2-Logo.png?resize=300%2C65&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/AWS-EC2-Logo.png?resize=150%2C33&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/AWS-EC2-Logo.png?w=400&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/AWS-EC2-Logo.png?resize=200%2C44&amp;ssl=1 200w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></p>
<p>Then I got my eyes on Amazon Web Services (AWS) with its <a href="http://aws.amazon.com/ec2/" title="AWS | Amazon Elastic Compute Cloud (EC2) - Scalable Cloud Hosting">Elastic Compute Cloud (EC2)</a>. It is basically a scalable cloud-based instance where you can increase or decrease its capacity almost instantly. Just like any other cloud based hosting provided. Its lowest instance <strong>t2.micro</strong> is priced at around $9.52/month and comes with 1 vCPU, 1GB RAM. More than enough for my needs at the moment. The wonderful thing is, AWS offers a [Free Tier] program where new customers can get started with Amazon EC2 for free for one year.</p>
<p>There was only one thing that held me back: like all other cloud based hosting services, EC2 requires deep knowledge of server (Linux) command line to set up everything. Of course AWS provides an <a href="http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hosting-wordpress.html" title="Tutorial: Hosting a WordPress Blog with Amazon EC2 - Amazon Elastic Compute Cloud">extensive tutorial</a> in how to set up WordPress on an EC2 instance, but it was still too much in my opinion since I needed something more practical.</p>
<h3>Bitnami Cloud Hosting</h3>
<p><img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_logo_2013.png?resize=300%2C103&#038;ssl=1" alt="Bitnami_logo_2013" width="300" height="103" class="alignright size-medium wp-image-1416" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_logo_2013.png?resize=300%2C103&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_logo_2013.png?resize=1024%2C352&amp;ssl=1 1024w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_logo_2013.png?resize=150%2C52&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_logo_2013.png?resize=1200%2C412&amp;ssl=1 1200w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_logo_2013.png?resize=400%2C137&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_logo_2013.png?resize=800%2C275&amp;ssl=1 800w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_logo_2013.png?resize=200%2C69&amp;ssl=1 200w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_logo_2013.png?w=1321&amp;ssl=1 1321w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></p>
<p>The answer came in the form of <a href="https://bitnami.com/" title="Cloud Hosting - Bitnami">Bitnami</a>.  It is an open source project that offers open source installers or software packages for web applications and development stacks. Over 100 open source application stacks are ready to use, including ever popular WordPress, Joomla, Magento, and more coming soon. I had known about Bitnami for a while, but I had not noticed about its Cloud Hosting product which was released in February 2010.</p>
<p>With Bitnami Cloud Hosting, you can monitor all your cloud servers and applications from one dashboard. Imagine being able to set up new WordPress blog on Amazon EC2 with a few clicks and less than 30 minutes. What is even greater, it comes with a free <strong>Developer Plan</strong> for one server (application).</p>
<p>Two essential components offered for free,  no reason to hold me back from migrating my WordPress installation. The process went well, now I am ready to share with you the steps to set up yours.</p>
<h3>Step 1: Create AWS Account</h3>
<p>Just to be clear, EC2 is only one of dozens of AWS products and services. The <a href="http://aws.amazon.com/free/" title="AWS Free Tier">AWS Free Tier program</a> is free for 18 products/services within the limits defined by them. For EC2, you can run <strong>750 hours</strong> (31 days = 744 hours) of Linux, RHEL, or SLES t2.micro instance usage per month.</p>
<p>Creating an AWS account is as simple as it can be. You just enter your personal data such as email, name, address and phone number. Note that you will need to enter a valid credit card information, but if you set everything right, you will not pay a dime until the following year. One next important step is automated phone validation but you only need to follow the on screen instructions and is very straightforward.</p>
<h3>Step 2: Create Bitnami Cloud Hosting Account</h3>
<p>This is much more simple and like most great web apps, creating an account is only a matter of minutes. You only need to enter basic data such as name, email and password.  Click the link from the confirmation email, then you are all set. No credit card required until you need to add a second server/app.</p>
<h3>Step 3: Add AWS as Bitnami Cloud Instance</h3>
<p>We are now starting the fun part. First, you need to add your AWS account into Bitnami Cloud Hosting panel. Everything works through AWS&#8217;s API through its Access Key:</p>
<ol>
<li>Login to <a href="https://console.aws.amazon.com/">AWS Management Console</a></li>
<li>From the console dashboard, click on your name on the top right and select <strong>Security Credentials</strong><br />
<img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/AWS_Management_Console.png?resize=740%2C225&#038;ssl=1" alt="AWS_Management_Console" width="740" height="225" class="aligncenter size-full wp-image-1406" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/AWS_Management_Console.png?w=956&amp;ssl=1 956w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/AWS_Management_Console.png?resize=300%2C91&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/AWS_Management_Console.png?resize=150%2C46&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/AWS_Management_Console.png?resize=400%2C122&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/AWS_Management_Console.png?resize=800%2C244&amp;ssl=1 800w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/AWS_Management_Console.png?resize=200%2C61&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></li>
<li>On &#8220;Your Security Credentials&#8221; page, click on <strong>Access Keys (Access Key ID and Secret Access Key)</strong> and then <strong>Create New Acess Key</strong></li>
<li>New Access Key ID and Secret Access Key strings will be automatically generated and displayed on your screen, copy and save it; you can also download the key file<br />
<img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/IAM_Management_Console.png?resize=740%2C297&#038;ssl=1" alt="IAM Management Console" width="740" height="297" class="aligncenter size-full wp-image-1407" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/IAM_Management_Console.png?w=750&amp;ssl=1 750w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/IAM_Management_Console.png?resize=300%2C120&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/IAM_Management_Console.png?resize=150%2C60&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/IAM_Management_Console.png?resize=400%2C161&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/IAM_Management_Console.png?resize=200%2C80&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></li>
</ol>
<p>You are done from AWS side, next you need to share the access to Bitnami:</p>
<ol>
<li>Login to <a href="https://app.bitnamihosting.com/">Bitnami Hosting</a></li>
<li>From the left navigation, click on <strong>Clouds</strong></li>
<li>Under &#8220;Manage Cloud Accounts&#8221;, click <strong>New</strong></li>
<li>Enter the name and default location of your preference, for AWS Credentials enter the key strings generated from AWS then click <strong>Save</strong></li>
</ol>
<p>Bitnami Hosting now acts as the control panel of AWS and you can install application stacks on AWS through it.</p>
<h3>Step 4: Spin WordPress from Bitnami Cloud</h3>
<p>Next, let&#8217;s roll WordPress on AWS EC2 instance.</p>
<ol>
<li>From Bitnami&#8217;s panel, click <strong>Servers</strong> on the left navigation</li>
<li>Under &#8220;Server Management&#8221;, click <strong>New</strong> and on the pop-up box select <strong>Launch Regular Server</strong></li>
<li>The next step involves selecting options:
<ul>
<li><strong>Name</strong>: your server/application name, ie. &#8220;My Blog&#8221;</li>
<li><strong>Domain Name</strong>: for every server you run on Bitnami, you need to create a subdomain under .bitnamiapp.com; you will be able to assign your own domain later</li>
<li><strong>Application Options</strong>: enter admin login details and under Email Configuration you may also want to add your Gmail or Custom SMTP details</li>
<li><strong>Development Options</strong>: the default components are enough, but I added Memcached and Varnish</li>
<li><strong>Add New Application</strong>: click the button, search and tick on WordPress</li>
<li><strong>Operating System</strong>: I just selected Ubuntu Linux (hvm) 64-bit</li>
<li><strong>Server Type</strong>: T2 Micro</li>
<li><strong>Disk Size</strong>: I just use 10GB, but AWS Free Tier allows you to use up to 30GB</li>
<li><strong>Cloud Account</strong>: your AWS account name from step 2</li>
<li><strong>Server Location</strong>: select from your preferred location, remember though that different location has <a href="http://aws.amazon.com/ec2/pricing/" title="Amazon EC2 Pricing">different pricing</a> after your Free Tier period expires </li>
<li><strong>IP Address</strong>: you can select Dynamic IP or Static IP, I chose the latter<br />
<img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_Hosting.png?resize=740%2C510&#038;ssl=1" alt="Bitnami Hosting – New Server" width="740" height="510" class="aligncenter size-full wp-image-1408" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_Hosting.png?w=940&amp;ssl=1 940w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_Hosting.png?resize=300%2C207&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_Hosting.png?resize=150%2C103&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_Hosting.png?resize=400%2C276&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_Hosting.png?resize=800%2C551&amp;ssl=1 800w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2015/01/Bitnami_Hosting.png?resize=200%2C138&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></li>
</ul>
</li>
<li>You can ignore the &#8220;Estimated Amazon charges&#8221; table because it is only Bitnami&#8217;s dynamic cost caculator; Amazon will not charge you if you only select the components within their Free Tier range</li>
<li>Click <strong>Build and Launch</strong></li>
</ol>
<p>Now you just sit and wait for a few minutes for Bitnami to take care of things for you.</p>
<h3>Step 5: Complete Your WordPress Site Installation</h3>
<p>When your EC2 and WordPress installation is ready, you will receive an email from Bitnami. You can go into Bitnami Hosting panel and see your server under <strong>Servers</strong>. To customize or gain more information, click on the server name (eg. &#8220;My Blog&#8221;) and click <strong>Manage</strong>.</p>
<p>Some important items you may need to look at:</p>
<ol>
<li>Under <strong>Properties</strong> tab
<ol>
<li><strong>IP Address</strong> – this is the static or dynamic IP assigned to your server, you will need to enter the IP address on your DNS to point your domain to your server</li>
<li><strong>Application Credentials</strong> – if you did not assign a password of your application, it was automatically generated and can be retrieved here</li>
</ol>
</li>
<li>Under <strong>Applications</strong> tab, you want to change the address to your domain instead of a prefix under bitnamiapp.com subdomain; this will automatically linked to WordPress General Settings</li>
</ol>
<p>Once you have updated your DNS to the IP of your WordPress installation and it has propagated, your site is ready and you can use it as you would install it from any server.</p>
<h3>Additional Step: Optimize WordPress Installation</h3>
<p>Out of the box, WordPress stack prepared by Bitnami is already good. Your website or blog will load blazingly fast. To some, including myself, it may not be enough though and you may want to make it even better. In that case, you want to read Bitnami&#8217;s excellent wiki page in <a href="https://wiki.bitnami.com/Applications/BitNami_Wordpress/How_to_optimize_a_default_BitNami_WordPress_install">how to optimize default WordPress install</a>.</p>
<hr />
<p>There you go. Free WordPress hosting for one year on a terrific cloud instance with less than an hour to set up. Do keep in mind that EC2&#8217;s t2.micro is probably ideal only if you have an average of few hundred up to low thousand page views per day.  Above that, you may need to use their better instances although those are not eligible for AWS Free Tier program. If your blog is that popular, please be generous with your hosting budget.</p>
<p>The post <a href="https://sunarlim.com/2015/01/set-free-wordpress-hosting-using-amazon-ec2-bitnami-cloud/">Set up free WordPress hosting using Amazon EC2 and Bitnami Cloud</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sunarlim.com/2015/01/set-free-wordpress-hosting-using-amazon-ec2-bitnami-cloud/feed/</wfw:commentRss>
			<slash:comments>18</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1404</post-id>	</item>
		<item>
		<title>Ready-to-use MailChimp PHP integration scripts</title>
		<link>https://sunarlim.com/2015/01/ready-use-mailchimp-php-integration-scripts/</link>
					<comments>https://sunarlim.com/2015/01/ready-use-mailchimp-php-integration-scripts/#respond</comments>
		
		<dc:creator><![CDATA[Michael]]></dc:creator>
		<pubDate>Tue, 06 Jan 2015 08:00:33 +0000</pubDate>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[mailchimp]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugins]]></category>
		<guid isPermaLink="false">https://sunarlim.com/?p=1336</guid>

					<description><![CDATA[<p>I have shared a simple tutorial to integrate your web page with MailChimp subscription API. It is intended to give the most basic direction and then you can expand the design and functionalities to your preference. Some of you however might prefer to use a more &#8220;plug and play&#8221; approach. Therefore I decided to list... <span class="more"><a class="more-link" href="https://sunarlim.com/2015/01/ready-use-mailchimp-php-integration-scripts/">Continue reading <span class="meta-nav">&#8594;</span></a></span></p>
<p>The post <a href="https://sunarlim.com/2015/01/ready-use-mailchimp-php-integration-scripts/">Ready-to-use MailChimp PHP integration scripts</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I have shared <a title="MailChimp Subscribe Form with PHP, jQuery and AJAX" href="https://sunarlim.com/2014/04/mailchimp-sign-form-php-jquery-ajax/">a simple tutorial to integrate your web page with MailChimp</a> subscription API. It is intended to give the most basic direction and then you can expand the design and functionalities to your preference. Some of you however might prefer to use a more &#8220;plug and play&#8221; approach. Therefore I decided to list a number of (paid) scripts that would allow you to add good looking MailChimp PHP integration with minimal time required. These are not free, but definitely worth to save hours of your productive time.</p>
<hr />
<h3><a href="http://codecanyon.net/item/doomailchimp-modal-subscribe-php-class/3826800?ref=mayksyu" target="_blank">DooMailChimp Modal Subscribe</a></h3>
<p><a href="http://codecanyon.net/item/doomailchimp-modal-subscribe-php-class/3826800?ref=mayksyu" target="_blank"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1339" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/590x300.jpg?resize=590%2C300&#038;ssl=1" alt="DooMailChimp Modal Subscribe" width="590" height="300" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/590x300.jpg?w=590&amp;ssl=1 590w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/590x300.jpg?resize=300%2C153&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/590x300.jpg?resize=150%2C76&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/590x300.jpg?resize=400%2C203&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/590x300.jpg?resize=200%2C102&amp;ssl=1 200w" sizes="(max-width: 590px) 100vw, 590px" data-recalc-dims="1" /></a><br />
Let&#8217;s start with the most simple but very effective approach. DooMailChimp allows you to add a simple button or link which when clicked will trigger a form modal box that connects to MailChimp upon submission.</p>
<hr />
<h3><a href="http://codecanyon.net/item/mailchimp-subscribe-form/7123150?ref=mayksyu" target="_blank">MailChimp Subscribe Form</a></h3>
<p><a href="http://codecanyon.net/item/mailchimp-subscribe-form/7123150?ref=mayksyu" target="_blank"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1341" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/inline_preview.jpg?resize=590%2C300&#038;ssl=1" alt="MailChimp Subscribe Form" width="590" height="300" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/inline_preview.jpg?w=590&amp;ssl=1 590w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/inline_preview.jpg?resize=300%2C153&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/inline_preview.jpg?resize=150%2C76&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/inline_preview.jpg?resize=400%2C203&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/inline_preview.jpg?resize=200%2C102&amp;ssl=1 200w" sizes="(max-width: 590px) 100vw, 590px" data-recalc-dims="1" /></a><br />
Instead of using modal box, this script can be embedded using iframe so it stays on your web page. A good idea if you really want to draw more attention from your site&#8217;s visitors. The cool thing is they can sign up using Facebook, Hotmail, Google, LinkedIn aside from entering their email address manually.</p>
<hr />
<h3><a href="http://codecanyon.net/item/contact-form-generator-form-builder/1719810?ref=mayksyu" target="_blank">Contact Form Generator</a></h3>
<p><a href="http://codecanyon.net/item/contact-form-generator-form-builder/1719810?ref=mayksyu" target="_blank"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1344" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/590x300-cfg-17.png?resize=590%2C300&#038;ssl=1" alt="590x300-cfg-17" width="590" height="300" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/590x300-cfg-17.png?w=590&amp;ssl=1 590w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/590x300-cfg-17.png?resize=300%2C153&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/590x300-cfg-17.png?resize=150%2C76&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/590x300-cfg-17.png?resize=400%2C203&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/590x300-cfg-17.png?resize=200%2C102&amp;ssl=1 200w" sizes="(max-width: 590px) 100vw, 590px" data-recalc-dims="1" /></a><br />
If you need more than a simple subscribe form but a complete contact form instead, this is a great form generator to make it a snap. With complete MailChimp and Aweber integration, you can create multiple forms on multiple projects in a breeze. You would still need to play with the styles though to really get the look that you prefer.</p>
<hr />
<h3><a href="http://codecanyon.net/item/layered-popups/6027291?ref=mayksyu" target="_blank">Layered Popups</a></h3>
<p><a href="http://codecanyon.net/item/layered-popups/6027291?ref=mayksyu" target="_blank"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1345" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/banner-1.jpg?resize=590%2C300&#038;ssl=1" alt="Layered Popups" width="590" height="300" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/banner-1.jpg?w=590&amp;ssl=1 590w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/banner-1.jpg?resize=300%2C153&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/banner-1.jpg?resize=150%2C76&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/banner-1.jpg?resize=400%2C203&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/12/banner-1.jpg?resize=200%2C102&amp;ssl=1 200w" sizes="(max-width: 590px) 100vw, 590px" data-recalc-dims="1" /></a><br />
Another way, and probably the most effective, to collect your visitors&#8217; email addresses is by incorporating automatic popup. This script will do that for you with integration with almost every popular email service such as MailChimp, GetResponse, iContact, Campaign Monitor, AWeber, Mad Mimi, Benchmark, ActiveCampaign, Interspire and Sendy.</p>
<hr />
<p>Remember, getting new subscribers is only the first step. It is more important to actually send them engaging emails and make them happy with their decision to sign up in the first place.</p>
<p>The post <a href="https://sunarlim.com/2015/01/ready-use-mailchimp-php-integration-scripts/">Ready-to-use MailChimp PHP integration scripts</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sunarlim.com/2015/01/ready-use-mailchimp-php-integration-scripts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1336</post-id>	</item>
		<item>
		<title>Best Places to Find Beautiful Site Templates, but not for WordPress</title>
		<link>https://sunarlim.com/2014/11/best-places-to-find-beautiful-site-templates/</link>
					<comments>https://sunarlim.com/2014/11/best-places-to-find-beautiful-site-templates/#respond</comments>
		
		<dc:creator><![CDATA[Michael]]></dc:creator>
		<pubDate>Tue, 18 Nov 2014 11:35:26 +0000</pubDate>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[templates]]></category>
		<guid isPermaLink="false">https://sunarlim.com/?p=1265</guid>

					<description><![CDATA[<p>You can find market sites offering templates for popular platforms like WordPress, Joomla, Magento, etc, but if you want to build a static site or using different CMS then the options are pretty limited. Worry not my friend, I have searched and I am going to list a number of sites you can visit to find nice and modern HTML site templates that allow you to customize and apply them into whatever platform you prefer.</p>
<p>The post <a href="https://sunarlim.com/2014/11/best-places-to-find-beautiful-site-templates/">Best Places to Find Beautiful Site Templates, but not for WordPress</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>As web developers with less skills on design side, we usually offer our client with a solution by using pre-built template as a solution build a great looking website without having to blow-up the budget. In the time where every person and business can have their own website, this is becoming an acceptable norm. Quoting from a fellow developer of mine, &#8220;design is no longer relevant.&#8221; Unless of course you are working with a company who want to keep their strong branding consistent and are willing to spend extra budget for it.</p>
<p>With tens of thousands of templates available on the market, you can pick one that is most suitable with the style and structure of your content and save tens of hours of designing and HTML coding. Do not get me wrong, picking the right template itself requires very careful considerations. Choose the wrong one, with bad coding for example, and you will have to show your commitment to fix all issues yourself to keep the client happy. But I will cover this on a separate post in different time.</p>
<p>Now, here is the hard fact: you can find market sites offering templates for popular platforms like WordPress, Joomla, Magento, etc, but if you want to build a static site or using different CMS then the options are pretty limited. Worry not my friend, I have searched and I am going to list a number of sites you can visit to find nice and modern HTML site templates that allow you to customize and apply them into whatever platform you prefer. May I suggest <a href="https://sunarlim.com/2014/03/flat-file-cms-comparison/" title="Flat File CMS Comparison">flat-file CMS</a>?</p>
<hr />
<h3><a href="http://themeforest.net/category/site-templates?ref=mayksyu">ThemeForest</a></h3>
<p><img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/ThemeForest.png?resize=740%2C154&#038;ssl=1" alt="ThemeForest" width="740" height="154" class="aligncenter size-full wp-image-1276" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/ThemeForest.png?w=1200&amp;ssl=1 1200w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/ThemeForest.png?resize=300%2C62&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/ThemeForest.png?resize=1024%2C213&amp;ssl=1 1024w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/ThemeForest.png?resize=150%2C31&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/ThemeForest.png?resize=400%2C83&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/ThemeForest.png?resize=800%2C166&amp;ssl=1 800w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/ThemeForest.png?resize=200%2C41&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></p>
<p>This is <em>the</em> one-stop shop for most of your web templates. Aside from static site templates, ThemeForest also offers all types of templates for most of popular platforms such as WordPress, Magento, MailChimp, Shopify and many more.</p>
<p>Typical good and regularly maintained template costs around $14.</p>
<p><a href="http://themeforest.net/category/site-templates?ref=mayksyu" title="ThemeForest Site Templates" target="_blank"><i class="fa fa-external-link " ></i> Go to ThemeForest Site Templates Page</a></p>
<hr />
<h3><a href="http://pixelarity.com/">Pixelarity</a></h3>
<p><img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Pixelarity.png?resize=740%2C154&#038;ssl=1" alt="Pixelarity" width="740" height="154" class="aligncenter size-full wp-image-1273" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Pixelarity.png?w=1200&amp;ssl=1 1200w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Pixelarity.png?resize=300%2C62&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Pixelarity.png?resize=1024%2C213&amp;ssl=1 1024w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Pixelarity.png?resize=150%2C31&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Pixelarity.png?resize=400%2C83&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Pixelarity.png?resize=800%2C166&amp;ssl=1 800w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Pixelarity.png?resize=200%2C41&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></p>
<p>While not as popular as <a href="http://themeforest.net/category/site-templates?ref=mayksyu">ThemeForest</a>, you may be amazed with the list of templates this site offers. One very cool thing about it is you only need to pay for subscription to download all the templates available.</p>
<p>Unlimited download plans start at $19 for a 3 month subscription.</p>
<p><a href="http://pixelarity.com/" title="Pixelarity" target="_blank"><i class="fa fa-external-link " ></i> Go to Pixelarity</a></p>
<hr />
<h3><a href="http://templated.co/">Templated</a></h3>
<p><img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Templated.png?resize=740%2C154&#038;ssl=1" alt="Templated" width="740" height="154" class="aligncenter size-full wp-image-1275" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Templated.png?w=1200&amp;ssl=1 1200w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Templated.png?resize=300%2C62&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Templated.png?resize=1024%2C213&amp;ssl=1 1024w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Templated.png?resize=150%2C31&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Templated.png?resize=400%2C83&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Templated.png?resize=800%2C166&amp;ssl=1 800w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Templated.png?resize=200%2C41&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></p>
<p>Templated offers 800+ of <em>free</em> site templates. Some of them may not look as polished as ones you need to purchase to use, but you can actually find a few that can be used for modern and professional website.</p>
<p>The templates are technically free, they are licensed under the Creative Commons Attribution 3.0 license. That means you need to put visibly credit back somewhere on your site.</p>
<p><a href="http://templated.co/" title="Templated" target="_blank"><i class="fa fa-external-link " ></i> Go to Templated</a></p>
<hr />
<h3><a href="http://www.styleshout.com/free-templates/">Styleshout</a></h3>
<p><img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Styleshout.png?resize=740%2C154&#038;ssl=1" alt="Styleshout" width="740" height="154" class="aligncenter size-full wp-image-1274" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Styleshout.png?w=1200&amp;ssl=1 1200w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Styleshout.png?resize=300%2C62&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Styleshout.png?resize=1024%2C213&amp;ssl=1 1024w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Styleshout.png?resize=150%2C31&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Styleshout.png?resize=400%2C83&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Styleshout.png?resize=800%2C166&amp;ssl=1 800w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Styleshout.png?resize=200%2C41&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></p>
<p>The number of templates offered here is limited, but they are free (under Creative Commons Attribution 3.0 license) and coded in with very high quality.</p>
<p>They offer a credit removal fee of $10 in case you do not want to put a credit on your site.</p>
<p><a href=":http://www.styleshout.com/free-templates/" title="Styleshout" target="_blank"><i class="fa fa-external-link " ></i> Go to Styleshout Free Templates Page</a></p>
<p>The post <a href="https://sunarlim.com/2014/11/best-places-to-find-beautiful-site-templates/">Best Places to Find Beautiful Site Templates, but not for WordPress</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sunarlim.com/2014/11/best-places-to-find-beautiful-site-templates/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1265</post-id>	</item>
		<item>
		<title>WordPress Plugins to Increase Your Blog SEO</title>
		<link>https://sunarlim.com/2014/11/wordpress-plugins-increase-blog-seo/</link>
					<comments>https://sunarlim.com/2014/11/wordpress-plugins-increase-blog-seo/#respond</comments>
		
		<dc:creator><![CDATA[Michael]]></dc:creator>
		<pubDate>Wed, 12 Nov 2014 11:28:57 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[plugins]]></category>
		<guid isPermaLink="false">https://sunarlim.com/?p=1228</guid>

					<description><![CDATA[<p>Out of the box, WordPress is already great in terms of SEO. Set up your blog, use a well-built theme, consistently publish new posts, then you are very likely to see traffic to your site. Taking the last word from Search Engine Optimization, there is no end result to it really. You can keep on... <span class="more"><a class="more-link" href="https://sunarlim.com/2014/11/wordpress-plugins-increase-blog-seo/">Continue reading <span class="meta-nav">&#8594;</span></a></span></p>
<p>The post <a href="https://sunarlim.com/2014/11/wordpress-plugins-increase-blog-seo/">WordPress Plugins to Increase Your Blog SEO</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Out of the box, WordPress is already great in terms of SEO. Set up your blog, use a well-built theme, consistently publish new posts, then you are very likely to see traffic to your site. Taking the last word from Search Engine <em>Optimization</em>, there is no end result to it really. You can keep on experimenting and adding new functionalities to increase your search visibility.</p>
<p>There are tons of WordPress plugins out there and for different purposes. Most are designed to add new features or integrations with other services, some to make it looks nicer, and so on. Below I am going to list a number of plugins that will help to increase your SEO score.</p>
<hr />
<h3><a title="WordPress Plugins » WordPress SEO by Yoast" href="https://wordpress.org/plugins/wordpress-seo/" target="_blank">WordPress SEO by Yoast</a></h3>
<p><a title="WordPress Plugins » WordPress SEO by Yoast" href="https://wordpress.org/plugins/wordpress-seo/" target="_blank"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1234" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-wordpress-seo-yoast-772x250.png?resize=740%2C240&#038;ssl=1" alt="WordPress SEO by Yoast" width="740" height="240" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-wordpress-seo-yoast-772x250.png?resize=772%2C250&amp;ssl=1 772w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-wordpress-seo-yoast-772x250.png?resize=300%2C97&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-wordpress-seo-yoast-772x250.png?resize=150%2C48&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-wordpress-seo-yoast-772x250.png?resize=400%2C129&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-wordpress-seo-yoast-772x250.png?resize=200%2C64&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></a></p>
<p><strong>What does it do?</strong><br />
A lot. This is the top plugin in the category, not only to improve your blog&#8217;s SEO, but also to expand your understanding about SEO. Its one of the most important features is that you will be able to set different meta title and description which will be displayed on the search engine results. It also helps you in reviewing the content of you post with a targeted keyword or keyphrase.</p>
<p><strong>Why does it matter?</strong><br />
Basic SEO practices encourage you to optimize your meta information to help search engines to display a more relevant preview of the page they are crawling. That aside, if you follow all other tools available from this great plugin, you are already improving your blog SEO a few levels.</p>
<p><a title="WordPress Plugins » WordPress SEO by Yoast" href="https://wordpress.org/plugins/wordpress-seo/" target="_blank"><i class="fa fa-wordpress " ></i> Go to WordPress SEO by Yoast Plugin Page</a></p>
<hr />
<h3><a title="WordPress Plugins » W3 Total Cache" href="https://wordpress.org/plugins/w3-total-cache/" target="_blank">W3 Total Cache</a></h3>
<p><a title="WordPress Plugins » W3 Total Cache" href="https://wordpress.org/plugins/w3-total-cache/" target="_blank"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1233" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-w3-total-cache-772x250.jpg?resize=740%2C240&#038;ssl=1" alt="W3 Total Cache" width="740" height="240" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-w3-total-cache-772x250.jpg?resize=772%2C250&amp;ssl=1 772w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-w3-total-cache-772x250.jpg?resize=300%2C97&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-w3-total-cache-772x250.jpg?resize=150%2C48&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-w3-total-cache-772x250.jpg?resize=400%2C129&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-w3-total-cache-772x250.jpg?resize=200%2C64&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></a></p>
<p><strong>What does it do?</strong><br />
It helps improving your blog performance through many methods without actually having you to move to a bigger hosting. At its heart is the caching tools that will reduce the time and resources to generate your web pages.</p>
<p><strong>Why does it matter?</strong><br />
Search engines love sites that load fast. Reducing your page load will certainly increase your SEO score.</p>
<p><a title="WordPress Plugins » W3 Total Cache" href="https://wordpress.org/plugins/w3-total-cache/" target="_blank"><i class="fa fa-wordpress " ></i> Go to W3 Total Cache Plugin Page</a></p>
<hr />
<h3><a title="WordPress Plugins » Akismet" href="https://wordpress.org/plugins/akismet/" target="_blank">Akismet</a></h3>
<p><a title="WordPress Plugins » Akismet" href="https://wordpress.org/plugins/akismet/" target="_blank"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1231" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-akismet-772x250.jpg?resize=740%2C240&#038;ssl=1" alt="Akismet" width="740" height="240" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-akismet-772x250.jpg?resize=772%2C250&amp;ssl=1 772w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-akismet-772x250.jpg?resize=300%2C97&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-akismet-772x250.jpg?resize=150%2C48&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-akismet-772x250.jpg?resize=400%2C129&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-akismet-772x250.jpg?resize=200%2C64&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></a></p>
<p><strong>What does it do?</strong><br />
Coming from the same company who brought us WordPress itself, Akismet is a web service that checks comments made on your blog for spam.</p>
<p><strong>Why does it matter?</strong><br />
The biggest reason people or bots are spamming on people&#8217;s blogs to get backlinks to their sites, which mostly are shady. Getting spam comments on your blog means having backlinks to questionable websites and URLs, which search engines do not like. By freeing your blog, or at least reducing the number of spam comments, your blog will look more legitimate.</p>
<p><a title="WordPress Plugins » Akismet" href="https://wordpress.org/plugins/akismet/" target="_blank"><i class="fa fa-wordpress " ></i> Go to Akismet Plugin Page</a></p>
<hr />
<h3><a title="WordPress Plugins » Yet Another Related Posts Plugin (YARPP)" href="https://wordpress.org/plugins/yet-another-related-posts-plugin/" target="_blank">Yet Another Related Posts Plugin (YARPP)</a></h3>
<p><a title="WordPress Plugins » Yet Another Related Posts Plugin (YARPP)" href="https://wordpress.org/plugins/yet-another-related-posts-plugin/" target="_blank"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1235" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-yarpp-772x250.png?resize=740%2C240&#038;ssl=1" alt="YARPP" width="740" height="240" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-yarpp-772x250.png?resize=772%2C250&amp;ssl=1 772w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-yarpp-772x250.png?resize=300%2C97&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-yarpp-772x250.png?resize=150%2C48&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-yarpp-772x250.png?resize=400%2C129&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-yarpp-772x250.png?resize=200%2C64&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></a></p>
<p><strong>What does it do?</strong><br />
As the name says, this plugin allows WordPress to automatically generate related posts to the one your visitors are reading. There are lots of similar plugins of course, but YARPP is most of the most popular.</p>
<p><strong>Why does it matter?</strong><br />
Placing internal links to other posts helps search engines to index other pages on your blog and a suggested SEO practice.</p>
<p><a title="WordPress Plugins » Yet Another Related Posts Plugin (YARPP)" href="https://wordpress.org/plugins/yet-another-related-posts-plugin/" target="_blank"><i class="fa fa-wordpress " ></i> Go to Yet Another Related Posts Plugin (YARPP) Plugin Page</a></p>
<hr />
<h3><a title="WordPress Plugins » Google XML Sitemaps" href="https://wordpress.org/plugins/google-sitemap-generator/" target="_blank">Google XML Sitemaps</a></h3>
<p><a title="WordPress Plugins » Google XML Sitemaps" href="https://wordpress.org/plugins/google-sitemap-generator/" target="_blank"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1232" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-google-xml-sitemaps-772x250.png?resize=740%2C240&#038;ssl=1" alt="Google XML Sitemaps" width="740" height="240" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-google-xml-sitemaps-772x250.png?resize=772%2C250&amp;ssl=1 772w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-google-xml-sitemaps-772x250.png?resize=300%2C97&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-google-xml-sitemaps-772x250.png?resize=150%2C48&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-google-xml-sitemaps-772x250.png?resize=400%2C129&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/wp-seo-google-xml-sitemaps-772x250.png?resize=200%2C64&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></a></p>
<p><strong>What does it do?</strong><br />
It can automatically generate XML sitemap of your blog. It offers quite extensive settings so you can select categories to be excluded, post types and so on. Note that <a href="https://wordpress.org/plugins/wordpress-seo/" target="_blank">WordPress SEO by Yoast</a> has this feature built-in and just as good, but in case for some reason you do not want to install that, then this one is a must.</p>
<p><strong>Why does it matter?</strong><br />
XML sitemap is the &#8216;map&#8217; for search engines to crawl the information your blog. Have it constantly updated, then you will be sure to have all your pages and posts indexed.</p>
<p><a title="WordPress Plugins » Google XML Sitemaps" href="https://wordpress.org/plugins/google-sitemap-generator/" target="_blank"><i class="fa fa-wordpress " ></i> Go to Google XML Sitemaps Plugin Page</a></p>
<hr />
<p>There are probably still dozens of other plugins that can push your SEO quality and I only share ones I use and can recommend. Feel free to share your favorites by posting your comments below.</p>
<p>The post <a href="https://sunarlim.com/2014/11/wordpress-plugins-increase-blog-seo/">WordPress Plugins to Increase Your Blog SEO</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sunarlim.com/2014/11/wordpress-plugins-increase-blog-seo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1228</post-id>	</item>
		<item>
		<title>Front End Frameworks Based on Google&#8217;s Material Design</title>
		<link>https://sunarlim.com/2014/11/front-end-frameworks-based-on-material-design/</link>
					<comments>https://sunarlim.com/2014/11/front-end-frameworks-based-on-material-design/#respond</comments>
		
		<dc:creator><![CDATA[Michael]]></dc:creator>
		<pubDate>Tue, 11 Nov 2014 10:18:33 +0000</pubDate>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">https://sunarlim.com/?p=1212</guid>

					<description><![CDATA[<p>If you love Material Design, there is no reason why you should not try to use it as the DNA of your next project. Luckily a bunch of talented people took very little time to make things easier for their fellow designers and developers to be able to take make use the framework to their site's design.</p>
<p>The post <a href="https://sunarlim.com/2014/11/front-end-frameworks-based-on-material-design/">Front End Frameworks Based on Google&#8217;s Material Design</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In recent years we&#8217;ve seen Google has taken design very seriously. I personally think their competition with Apple in the tablet/smartphone war (Android vs iOS) forced them to take their design/visual up a few levels.</p>
<p>Google is not only polishing the interface on their mobile OS platform, but streamlining most of their wonderful and indispensable web applications with a unified look and style. <a href="http://www.google.com/design/spec/material-design/introduction.html" target="_blank">Material Design</a> is the latest design/visual language developed by Google and announced at the Google I/O conference in June 2014. As with latest UI design philosophy, Google went with flat look and focused on the details. While the direction is open for personal&#8217;s opinions, in overall I think Google has done a remarkable job.</p>
<p>If you love Material Design, there is no reason why you should not try to use it as the DNA of your next project. Luckily a bunch of talented people took very little time to make things easier for their fellow designers and developers to be able to take make use the framework to their site&#8217;s design.</p>
<h3><a href="http://dogfalo.github.io/materialize/" target="_blank">Materialize</a></h3>
<p><a href="http://dogfalo.github.io/materialize/" target="_blank"><img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Materialize_-_Documentation.png?resize=740%2C296&#038;ssl=1" alt="Materialize" width="740" height="296" class="alignnone size-full wp-image-1219" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Materialize_-_Documentation.png?w=1200&amp;ssl=1 1200w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Materialize_-_Documentation.png?resize=300%2C120&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Materialize_-_Documentation.png?resize=1024%2C409&amp;ssl=1 1024w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Materialize_-_Documentation.png?resize=150%2C60&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Materialize_-_Documentation.png?resize=400%2C160&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Materialize_-_Documentation.png?resize=800%2C320&amp;ssl=1 800w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Materialize_-_Documentation.png?resize=200%2C80&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></a></p>
<p>This one goes on the top of my list because it feels like most polished and actively developed. The framework homepage shows a clear example how you can create nice look on your websites using their components.</p>
<h3><a href="https://fezvrasta.github.io/bootstrap-material-design/" target="_blank">Bootstrap Material</a></h3>
<p><a href="https://fezvrasta.github.io/bootstrap-material-design/" target="_blank"><img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Bootstrap_Material.png?resize=740%2C296&#038;ssl=1" alt="Material Design for Bootstrap" width="740" height="296" class="alignnone size-full wp-image-1218" data-recalc-dims="1" /></a></p>
<p>If you are already in love with <a href="http://getbootstrap.com/" target="_blank">Bootstrap</a> and do not want to fool around with another framework, there is a solution for that too through this project by applying Material Design as a Bootstrap theme. Note that as the time of writing, this theme is not ready for production.</p>
<h3><a href="http://material-ui.com/" target="_blank">Material UI</a></h3>
<p><a href="http://material-ui.com/" target="_blank"><img loading="lazy" decoding="async" src="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Material_UI.png?resize=740%2C272&#038;ssl=1" alt="Material UI" width="740" height="272" class="alignnone size-full wp-image-1220" srcset="https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Material_UI.png?w=1200&amp;ssl=1 1200w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Material_UI.png?resize=300%2C110&amp;ssl=1 300w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Material_UI.png?resize=1024%2C376&amp;ssl=1 1024w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Material_UI.png?resize=150%2C55&amp;ssl=1 150w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Material_UI.png?resize=400%2C147&amp;ssl=1 400w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Material_UI.png?resize=800%2C294&amp;ssl=1 800w, https://i0.wp.com/sunarlim.com/wp-content/uploads/2014/11/Optimize_Material_UI.png?resize=200%2C73&amp;ssl=1 200w" sizes="(max-width: 740px) 100vw, 740px" data-recalc-dims="1" /></a></p>
<p>Last but not least, if you use <a href="http://facebook.github.io/react/" target="_blank">React</a> for your JavaScript library, this framework is definitely for you.</p>
<hr />
<p>There you go. Hopefully the list is useful for you. If you know other front-end frameworks that are based on Material Design, please share them by replying to this post. I would love to check and possibly add them here.</p>
<p>The post <a href="https://sunarlim.com/2014/11/front-end-frameworks-based-on-material-design/">Front End Frameworks Based on Google&#8217;s Material Design</a> appeared first on <a href="https://sunarlim.com">Michael Sunarlim</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sunarlim.com/2014/11/front-end-frameworks-based-on-material-design/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1212</post-id>	</item>
	</channel>
</rss>
