<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Senior Web Developer</title>
    <link>http://www.profesional.co.cr</link>
    <atom:link href="http://rudyjahchan.com/feeds/rss.xml" rel="self"
      type="application/rss+xml" />
    <description>
      Nestor Mata Cuthbert is a seasoned web developer with lot of experience in PHP, Drupal, .Net, Java, J2EE, AJAX, MySQL and other technlologies.

    </description>
    <language>en-us</language>
    <pubDate>Sun, 20 Jul 2014 07:55:50 -0500</pubDate>
    <lastBuildDate>Sun, 20 Jul 2014 07:55:50 -0500</lastBuildDate>

    
      
    
      
    
      
    
      
        <item>
          <title>How to use Drupal Cache in module programming?</title>
          <link>http://www.profesional.co.cr/drupal/2014/02/18/how-cache-data-drupal/</link>
          <pubDate>Tue, 18 Feb 2014 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/drupal/2014/02/18/how-cache-data-drupal/</guid>
          <description>&lt;p&gt;Reduce the number of requests to make or the times a calculation is made
ia way to improve the performance of a feature and is necesary.  &lt;/p&gt;

&lt;div class=&quot;article-main-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/images/drupal-fast.png&quot; /&gt;&lt;/div&gt;

&lt;h2 id=&quot;different-ways-to-cache&quot;&gt;Different ways to cache&lt;/h2&gt;
&lt;p&gt;We are going to talk about two different cache techniques that can be
used in &lt;strong&gt;Drupal&lt;/strong&gt;, first the use of &lt;strong&gt;static&lt;/strong&gt; data and then the
&lt;strong&gt;Drupal Cache&lt;/strong&gt;.&lt;/p&gt;

&lt;h2 id=&quot;scopes&quot;&gt;Scopes&lt;/h2&gt;
&lt;p&gt;In most web platforms there are different scopes for variables and data
beyond the variable and class scopes.
There are normally 4 different scopes: &lt;strong&gt;Request&lt;/strong&gt;, &lt;strong&gt;Session&lt;/strong&gt;,
&lt;strong&gt;Application&lt;/strong&gt; and &lt;strong&gt;Server&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 id=&quot;request-scope&quot;&gt;Request Scope&lt;/h3&gt;
&lt;p&gt;The request scope variables are the ones that remain since a client
request was issued until the request ends.&lt;br /&gt;
This is the normal level we have in PHP when we use static variables,
patterns like Singleton and any other attempt by code to keep a data
alive in memory.  &lt;/p&gt;

&lt;h3 id=&quot;session-variables&quot;&gt;Session variables&lt;/h3&gt;
&lt;p&gt;In PHP you can save data on the user’s session variable and these data
are only for that user in that session and they will remain alive during
the complete time of that session.&lt;br /&gt;
This is very handy to keep user information that may be required to keep
continuty to the user’s experience in the site.&lt;/p&gt;

&lt;h3 id=&quot;server-variables&quot;&gt;Server variables&lt;/h3&gt;
&lt;p&gt;PHP is not able to keep data at server level by default like other
platforms can, but that doesn’t means it can’t be achieved.&lt;br /&gt;
In PHP you can emulate server variables saving data in the database
(that works only for that server), saving the data in files or using
memory dictionaries like Redit, APC, Memcache or alike (if they are
restricted to that server only).&lt;br /&gt;
The server variables are identified because they only belong to the
server that is running on, not necesary exclusive of the application,
for which it could be used to share data between applications on the
same server.&lt;br /&gt;
The data use to be volatil by definition and therefore is lost when the
server is restarted.  &lt;/p&gt;

&lt;h3 id=&quot;application-variables&quot;&gt;Application variables&lt;/h3&gt;
&lt;p&gt;These are very similar to server variables and they are not supported by
PHP by default either, but they can be implemented in the same way that
server variables are.&lt;br /&gt;
The conceptual difference of these variables is that they are not shared
between applications, but on the other side they are shared between
servers that are running the same application.  &lt;/p&gt;

&lt;h2 id=&quot;why-do-i-need-to-make-cache-of-data&quot;&gt;Why do I need to make cache of data?&lt;/h2&gt;
&lt;p&gt;Each time we do a data request or some data calculations that require
resources.&lt;br /&gt;
The requests to a database require memory, CPU and in most cases disk
operations as well.&lt;br /&gt;
The processing of files or complex calculus also could have a big weight
in performance.&lt;br /&gt;
This may not be a big issue once, but when we are serving a site with
high traffic this could impact the server’s performance and the response
time.&lt;br /&gt;
Reducing the number of requests and/or calculus that are made we
multiply the improvement in performance and response time.&lt;br /&gt;
From there we get that if we coiuld reduce the amout of code files or
templates to 10% on 90% of the requests we could see a drastically
improvement of the site performance, or in it’s defect, not doing so
would mean having the site slow or not able to server the amount of
requests of a decent trafic.&lt;br /&gt;
Of course, everything has a cost, keeping more data on cache would
usually means that we need more memory to keep them available, which
could be limited by the server’s RAM that we have.&lt;br /&gt;
For this reason we must have careful and concience of the resources or
we could start having a problem of availablebily of cache, forcing the
server to use swap memory/virtual memory on disk, making the server go
slower and heavier.  &lt;/p&gt;

&lt;h2 id=&quot;static-data&quot;&gt;Static data&lt;/h2&gt;
&lt;p&gt;Now that we know the different levels for the variables let’s see static
data.&lt;br /&gt;
Using the functionality &lt;em&gt;“static”&lt;/em&gt; in PHP we can keep data in a
persistent way during the code execution (request variables), allowing
us to save on requests or calculus that are required several times
during the code execution of the request.&lt;br /&gt;
In Drupal 7 you can use the function &lt;code&gt;drupal_static&lt;/code&gt; to keep those data.
The function &lt;code&gt;drupal_static&lt;/code&gt; receives the &lt;code&gt;name&lt;/code&gt; or key of the data, the
&lt;code&gt;default value&lt;/code&gt; and an indication if is must &lt;code&gt;clean&lt;/code&gt; the existing data.&lt;br /&gt;
In that sense this function can be seeing like a similar functionality
of the set Drupal variable_get/set set of functions.  &lt;/p&gt;

&lt;h3 id=&quot;use-of-static-data-exclusive-for-a-function-in-drupal-7&quot;&gt;Use of static data exclusive for a function, in Drupal 7:&lt;/h3&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot; data-lang=&quot;php&quot;&gt;&amp;lt;?php
function my_funcion() {
  // The function name it is used as the key
  $data_list = &amp;amp;drupal_static(__FUNCTION__);

  // If the data has not being requested/calculated yet we do it now
  if (!isset($data_list) {
    // Obtain the data from the database and make calculations
  }
  // The second time that this function is called the data will be alredy define and they will not be requested again

  // Use $data_list
}
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id=&quot;sharing-static-data-between-functions-in-drupal-7&quot;&gt;Sharing static data between functions in Drupal 7:&lt;/h3&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot; data-lang=&quot;php&quot;&gt;&amp;lt;?php
function one_funcion() {
  $data_list = &amp;amp;drupal_static(&amp;quot;shared data&amp;quot;);
  // Use $data_list and modify it in the variable
}

function another_funcion() {
  $data_list = &amp;amp;drupal_static(&amp;quot;shared data&amp;quot;);
  // Use $data_list and modify it in the variable
}
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id=&quot;use-of-static-data-exclusive-for-a-function-in-drupal-6&quot;&gt;Use of static data exclusive for a function, in Drupal 6:&lt;/h3&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot; data-lang=&quot;php&quot;&gt;&amp;lt;?php
function my_funcion() {
  static $data_list;

  // If the data has not being defined yet then we defined
  if (!isset($data_list) {
    // Obtain and calculate data
  }
  // The second time that the function is called the data will be defined and no need to get them or calculate them again

  // Use the data form $data_list and save modifications to the variable
}
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id=&quot;sharing-static-data-between-functions-in-drupal-6&quot;&gt;Sharing static data between functions in Drupal 6:&lt;/h3&gt;
&lt;p&gt;In Drupal 6 we need to do some adjustments because the static function
only applies to the function (or class) where is defined and can’t be
shared.&lt;br /&gt;
To achieve this we have 2 options, use a global variable or create
another function as static container from which we obtain the reference
to the static variable.  &lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot; data-lang=&quot;php&quot;&gt;&amp;lt;?php
function one_funcion() {
  global $data_list
  // Use $data_list and modify it in the variable
}

function another_funcion() {
  global $data_list
  // Use $data_list and modify it in the variable
}
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2 id=&quot;drupals-cache&quot;&gt;Drupal’s Cache&lt;/h2&gt;
&lt;p&gt;Drupal has a series of functions to use the generic cache system that is
implemented.&lt;br /&gt;
By default Drupal’s cache is implemented in the database, but this can
be modified so that it uses another implementation like APC, Memcache,
Redit, file system, etc.&lt;br /&gt;
In a future article I’ll explain how to configure different type of
cache in Drupal.&lt;br /&gt;
The advantage of Drupal cache is that the code is agnostic of the
implementation of the cache, when you program the code you don’t need to
know which kind of cache are you using.&lt;br /&gt;
If we need to do a series of heavy calculations over some data and these
data will stay constant in the site for certain time, we can do
something like the following example to avoid calculating it on every
request:  &lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot; data-lang=&quot;php&quot;&gt;&amp;lt;?php
function calculate_heavy_data() {
  $data_calculated = drupal_static(__FUNCTION__); // Drupal 7 version
  //static $data_calculated; // Drupal 6 version

  if (!isset($data_calculated)) {
    if ($cache = cache_get(&amp;quot;heavy_data&amp;quot;)) {
      $data_calculated = $cache-&amp;gt;data;
    } else {
      // Do all the necesary calculations of the data and place them
again in $data_calculated
      cache_set(&amp;quot;heavy_data&amp;quot;, $data_calculated, &amp;quot;cache&amp;quot;);
    }
  }
  return $data_calculated;
}
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This way the data will not be calculated on each request nor serveral
times on one request.&lt;/p&gt;

&lt;p&gt;The use of cache is recommended, but without abuse and having in mind
estimations of how this can impact the memory and improvement on
performance, but this could be the difference between a heavy and slow
site or a fast and fully available site.&lt;/p&gt;
</description>
        </item>
      
    
      
        <item>
          <title>What is Markdown?</title>
          <link>http://www.profesional.co.cr/jekyll/2014/02/17/what-is-markdown/</link>
          <pubDate>Mon, 17 Feb 2014 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/jekyll/2014/02/17/what-is-markdown/</guid>
          <description>&lt;p&gt;&lt;strong&gt;Markdown&lt;/strong&gt; is a light markup language, it is a simple way to write
content and give style to it, and it is one of the ways to write content
in Jekyll.&lt;/p&gt;

&lt;div class=&quot;article-main-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/images/markdown.png&quot; /&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Markdown&lt;/strong&gt; is simple to write and read, is a format that is easy to
convert to other formats like HTML, PDF, etc.&lt;br /&gt;
The simplicity of &lt;strong&gt;Markdown&lt;/strong&gt; restricts that the content style could
get complicated, allowing for a simple style.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; In Jekyll content files requires a YAML header and can contain
&lt;em&gt;HTML&lt;/em&gt; tags and &lt;em&gt;liquid&lt;/em&gt; tags.&lt;/p&gt;

&lt;h2 id=&quot;text-formatting-in-markdown&quot;&gt;Text formatting in Markdown&lt;/h2&gt;
&lt;p&gt;In &lt;strong&gt;Markdown&lt;/strong&gt; you can format the text using the following features:&lt;/p&gt;

&lt;h3 id=&quot;text-with-emphasis&quot;&gt;Text with Emphasis&lt;/h3&gt;
&lt;p&gt;It will add enphasis to the text when enclosing between asterisc “*” or
underlined “_”.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;*emphasis*, or _emphasis_ (normally would be output as italic)
**strong enphasis**, or __strong emphasis__ (normally would be output as strong)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id=&quot;titles-or-headlines&quot;&gt;Titles or headlines&lt;/h3&gt;
&lt;p&gt;The headlines are defined by preceding the text with a hash “#”, in a
way that the least number of hashes the higher the priority.  &lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;# First level
## Second level
### Third level
...
###### Sixth level&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;But besides the first 2 levels can be defined with a line of “equal
sign” &lt;code&gt;=&lt;/code&gt; characters or “substraction sign” &lt;code&gt;-&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;First level
============

Second Level
-------------&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id=&quot;lists&quot;&gt;Lists&lt;/h3&gt;
&lt;p&gt;The lists are defined by an asterisc “*” in the begning of each line or a
minus sign “-“ and a space for non numbered lists (bullets) or a number with
a dot and a space for numbered lists.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;* Red
* Yellow
* Green
* Blue

1. First element
2. Second element
3. Third element&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id=&quot;code&quot;&gt;Code&lt;/h3&gt;
&lt;p&gt;When you need to define code in the text you use the “`” character for
code in the same line or 3 consecutive characters for multiple lines.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;This code `hello` is on the same line.

```
Code in several lines
  that respects tabs
and spaces
```&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;In &lt;strong&gt;Jekyll&lt;/strong&gt; you can also use pygments to do syntax highlight.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;{% highlight sql %}
SELECT * FROM TABLE
{% endhighlight %}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id=&quot;quotes&quot;&gt;Quotes&lt;/h3&gt;
&lt;p&gt;The quoted text is preceded with the greater than “&amp;gt;” sign before each
line.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;&amp;gt; This is a quoted line that will be converted to &amp;quot;blockquote&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id=&quot;links&quot;&gt;Links&lt;/h3&gt;
&lt;p&gt;The links are defined by enclosing the text in square brackets next to
the link URL enclosed in parenthesis and optionally the link title
between quotes next to the URL.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;[This is a link](http://www.thesite.com &amp;quot;Title goes here&amp;quot;)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id=&quot;images&quot;&gt;Images&lt;/h3&gt;
&lt;p&gt;The images are define similar to the links, but preceded with an
exclamation sign “!”.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;![Alternate text here](http://www.thesite.com/myimage.png &amp;quot;Title of the image here&amp;quot;)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This way we get a simple, clean and styled code.&lt;/p&gt;
</description>
        </item>
      
    
      
    
      
        <item>
          <title>Posts and Drafts in Jekyll</title>
          <link>http://www.profesional.co.cr/jekyll/2014/02/12/posts-and-drafts-jekyll/</link>
          <pubDate>Wed, 12 Feb 2014 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/jekyll/2014/02/12/posts-and-drafts-jekyll/</guid>
          <description>&lt;p&gt;In this third part I’ll explain how to work with posts and drafts in
Jekyll.&lt;/p&gt;

&lt;div class=&quot;article-main-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/images/jekyll-logo.png&quot; /&gt;&lt;/div&gt;

&lt;h2 id=&quot;front-matter&quot;&gt;Front-matter&lt;/h2&gt;
&lt;p&gt;Any file that contains a YAML block in the begining of the file will be
processed by Jekyll in a special way.
This applies to posts and HTML, XML files or any other file.
An example of a &lt;strong&gt;front-matter&lt;/strong&gt; block is the following:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;---
layout: post
title: This is a cool post
---&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;What is between the 3 horizontal lines &lt;code&gt;---&lt;/code&gt; is considered a YAML block.
This information will be used in Jekyll and will be available during the
file and the documents related to this one, besides the will have
&lt;strong&gt;Liquid&lt;/strong&gt; tags available.
If you want to use the &lt;strong&gt;Liquid&lt;/strong&gt; tags and data, but no need to set
anything in the YAML block you still can define an empty YAML block to
make Jekyll process the file.&lt;/p&gt;

&lt;h2 id=&quot;posts-and-drafts&quot;&gt;Posts and drafts&lt;/h2&gt;
&lt;p&gt;The posts are the content we put usually in the &lt;code&gt;_posts&lt;/code&gt; directory and
are wrote in languages like Markdown or other options, but I’ll explain
the Markdown only because it’s simplicity and clean clode.&lt;/p&gt;

&lt;h3 id=&quot;posts&quot;&gt;Posts&lt;/h3&gt;
&lt;p&gt;Posts are named by standar in the following format:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;YEAR-MONTH-DAY-title.FORMAT&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Where YEAR is a 4 digits number, MONTH and DAY are two digits numbers
and FORMAT is the extension in which is writted the content, for
example:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;2014-01-28-hello-world.md
2013-12-24-christmass-with-rudolph.textile&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The posts must start with a &lt;strong&gt;Front-matter&lt;/strong&gt; YAML block.&lt;/p&gt;

&lt;h3 id=&quot;drafts&quot;&gt;Drafts&lt;/h3&gt;
&lt;p&gt;Drafts are actually post files that reside on the &lt;code&gt;_drafts&lt;/code&gt; directory
and they don’t have a date because they haven’t being published.
These files are ignored by default by Jekyll (you could still force
Jekyll to include them), this allows you to keep separated the published
documents and the drafts, do they don’t get pushed to your production
site.
When you decide to publish them you just have to move them from
&lt;code&gt;_drafts&lt;/code&gt; to &lt;code&gt;_posts&lt;/code&gt; and assign them a publication date in the file
name.&lt;/p&gt;

&lt;h2 id=&quot;the-post&quot;&gt;The post&lt;/h2&gt;
&lt;p&gt;An example of a post (or draft) is the following:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;---
title: Hello world
layout: post
---
In the first lines we can place the excerpt separated from the content
by 1 empty line (2 consecutive carry returns).

## A subtitle
And a lot more content after&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;In this example we define a title for the post and the layout to be
used, in this case is &lt;code&gt;_layouts/post.html&lt;/code&gt;.
The first lines before the first 2 consecutive carry returns are
populated in the variable &lt;code&gt;excerpt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In the next series I’ll explain about Markdown and how to compile Jekyll
to generate the site.&lt;/p&gt;
</description>
        </item>
      
    
      
    
      
        <item>
          <title>How to work with Jekyll?</title>
          <link>http://www.profesional.co.cr/jekyll/2014/02/06/how-to-work-with-jekyll/</link>
          <pubDate>Thu, 06 Feb 2014 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/jekyll/2014/02/06/how-to-work-with-jekyll/</guid>
          <description>&lt;p&gt;Now that we understand why Jekyll could be a good option I can explain
how I achieve it.&lt;/p&gt;

&lt;div class=&quot;article-main-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/images/jekyll-logo.png&quot; /&gt;&lt;/div&gt;

&lt;h2 id=&quot;jekylls-installation-and-configuration&quot;&gt;Jekyll’s installation and configuration&lt;/h2&gt;
&lt;p&gt;I will not repeat the installation as is pretty straigh forward and you
can find more information in the official site, for instructions you can
check the &lt;a href=&quot;https://github.com/nestormata/my-static-blog/&quot;&gt;guide&lt;/a&gt; and you
can check my site’s complete code in &lt;a href=&quot;https://github.com/nestormata/my-static-blog&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;directory-structure&quot;&gt;Directory Structure&lt;/h3&gt;
&lt;p&gt;I prefer to separate the code from configuration and result so I moved
the configuration file &lt;strong&gt;_config.yml&lt;/strong&gt; to the root directory and the
code source to &lt;strong&gt;/src&lt;/strong&gt; and the destination to &lt;strong&gt;/build&lt;/strong&gt;, this way I
can have my code better organized.&lt;/p&gt;

&lt;p&gt;For this to actually be considered by Jekyll I had to mofify the
&lt;strong&gt;_config.yml&lt;/strong&gt; in the following way:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;source:       ./src
destination:  ./build
layouts:      ./_layouts
plugins:      ./src/_plugins&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now I ended up with the code structured as follows:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;/
|- _layout.yaml
|- /src
|  |- .htaccess
|  |- index.html
|  |- robots.txt
|  |- humans.txt
|  |- 404error.html
|  |- rss.xml
|  |- sitemap.xml
|  |- /_assets
|  |  |- /css
|  |  |- /js
|  |- /_data
|  |- /_drafts
|  |- /_posts
|  |- /_layouts
|  |- /_includes
|  |- /_components
|  |- /_locales
|  |- /_plugins
|  |- /images
|  |- /es
|  |  |- index.html
|  |  |- rss.xml
|  |  |- /_drafts
|  |  |- /_posts
|- /build&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Nota:&lt;/em&gt; Some of these files and directories will be explained later in the series.&lt;/p&gt;

&lt;h3 id=&quot;benefits-of-this-structure&quot;&gt;Benefits of this structure:&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;The configuration remains in the root directory next to that I need
and I don’t want to be exported to the destination.&lt;/li&gt;
  &lt;li&gt;All the code remains in a directory &lt;strong&gt;/src&lt;/strong&gt; and the generated files
in a directory &lt;strong&gt;/build&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;Inside the directory of each additional language different than the
default I have a directory for &lt;strong&gt;posts&lt;/strong&gt; and &lt;strong&gt;drafts&lt;/strong&gt; &lt;em&gt;(later I’ll
explain how to work with multiple languages)&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;The &lt;strong&gt;JavaScript&lt;/strong&gt; and &lt;strong&gt;CSS&lt;/strong&gt; files will be preprocessed for
&lt;strong&gt;SASS&lt;/strong&gt;, concated, minified and compressed, &lt;em&gt;(later I’ll explain how
to achive this)&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;The components are separated from the site, for example the
&lt;a href=&quot;http://foundation.zurb.com/&quot;&gt;Foundation&lt;/a&gt; files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Soon the next part of this series for more details.&lt;/em&gt;&lt;/p&gt;
</description>
        </item>
      
    
      
        <item>
          <title>Why use Jekyll in my blog?</title>
          <link>http://www.profesional.co.cr/jekyll/2014/02/03/why-use-jekyll-in-my-blog/</link>
          <pubDate>Mon, 03 Feb 2014 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/jekyll/2014/02/03/why-use-jekyll-in-my-blog/</guid>
          <description>&lt;p&gt;&lt;a href=&quot;http://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt; is an static site generator designed for blogs.
Why is Jekyll better that any dinamic CMS like &lt;a href=&quot;http://drupal.org&quot;&gt;Drupal&lt;/a&gt; or &lt;a href=&quot;http://wordpress.org&quot;&gt;Wordpress&lt;/a&gt;?&lt;/p&gt;

&lt;div class=&quot;article-main-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/images/jekyll-logo.png&quot; /&gt;&lt;/div&gt;

&lt;h2 id=&quot;why-jekyll&quot;&gt;Why Jekyll?&lt;/h2&gt;
&lt;p&gt;I really don’t think there is one better than the other, I simply think they are different solution to the same problem and
depends on the need of each problem to define which one to use.
As a matter of fact, I would not recomend &lt;strong&gt;Jekyll&lt;/strong&gt; to anyone, Jekyll normally require some technical knowledge to use it and
lacks from a graphic interface.
Because of this, if the site’s content is going to be managed by non technical users is probably not the option to use.&lt;/p&gt;

&lt;p&gt;Being said that, possible the top advantage is that as generates static content it requires less resources during site execution 
and could even work completly on a CDN or cheap or free hosting options, which suppose a great advantage on performance and 
operative cost.&lt;/p&gt;

&lt;p&gt;For any additional feature that the site requires that needs more dinamicity you could combine Jekyll with options like Node.js
or any application in any other language or platform.&lt;/p&gt;

&lt;p&gt;Besides these, Jekyll is build on &lt;a href=&quot;https://www.ruby-lang.org/&quot;&gt;Ruby&lt;/a&gt; and can easily be extended through plugins.&lt;/p&gt;

&lt;p&gt;Personally, the decision to migrate my blog to Jekyll is based on 3 reasons:
- &lt;strong&gt;Performance of my blog&lt;/strong&gt;: I want my blog to be as fast as possible and nothing beats static files.
- &lt;strong&gt;Experimentation and learning&lt;/strong&gt;: My blog is and always has being a sandbox where I experiment in the real world with 
technologies that I want to learn.
- &lt;strong&gt;Low maintenance&lt;/strong&gt;: Once Jekyll is configured, the maintenance is literally minimum and I can focus on writing more often.&lt;/p&gt;

&lt;p&gt;The complete code of my blog can be found in &lt;a href=&quot;https://github.com/nestormata/my-static-blog&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
      
    
      
    
      
    
      
    
      
        <item>
          <title>How to index extra data in Drupal 6 and 7</title>
          <link>http://www.profesional.co.cr/development/how-index-extra-data-drupal-6-and-7/</link>
          <pubDate>Mon, 16 Sep 2013 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/development/how-index-extra-data-drupal-6-and-7/</guid>
          <description>&lt;p&gt;It is very easy to add words to be indexed with a node or entity in Drupal in order for the node to also be found when those words are used for search or even to alter the importance of some words.&lt;/p&gt;

&lt;p&gt;Before dropping lines of code I think is important to understand a little bit of how this works, which lead us to talk about search engines.
Search engines has two big parts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;The indexer:&lt;/strong&gt; this is probably the most important part of it and where most magical things occurs (and by magical I mean mathematical).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The search engine:&lt;/strong&gt; this is what happens when do the actual search and if this parts works well is because the hard work was already took care in the indexer, plus a good architecture to store the data for fast retrieval.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;In the case of core search functionality, &lt;strong&gt;Solr&lt;/strong&gt;, &lt;strong&gt;Sphinx&lt;/strong&gt; and most search engines when  used with &lt;strong&gt;Drupal&lt;/strong&gt;, they don&#39;t actually store the data, they get the content so that the words can be analyzed.&lt;/p&gt;
&lt;p&gt;After analyzing the data words are extracted and each word is considered with a score based on things like frequency (how many times appears in the text) and importance based on what HTML code wraps it.&lt;/p&gt;
&lt;p&gt;For example, lets say you have the following:&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;A word two times in a paragraph&lt;/li&gt;
 &lt;li&gt;A word between a strong tag&lt;/li&gt;
 &lt;li&gt;A word between a heading 2 tag (H2) &lt;/li&gt;
 &lt;li&gt;A word between a heading 1 (H1) tag&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this case the scores are as following:&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;The word in the paragraph will just get 1 point per appearance so 2 points&lt;/li&gt;
 &lt;li&gt;The strong wrapped word gets 3 points&lt;/li&gt;
 &lt;li&gt;The H2 wrapped word gets 18&lt;/li&gt;
 &lt;li&gt;The H1 wrapped word gets 21&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this way when a search using some words it will show up first the nodes that contains those words with a high score.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;u&gt;Tip:&lt;/u&gt; Remember to give importance to what you want to have importance (use strong, heading and other tags to define what is important in your content), this applies to search as well as for SEO.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;That way the user that is making the search will probably get results that are relevant to what is looking for.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;The complete list of the default indexing that happens on Drupal and it&#39;s scores is the following:&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;&lt;strong&gt;H1:&lt;/strong&gt; 25 points &lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;H2:&lt;/strong&gt; 18 points&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;H3:&lt;/strong&gt; 15 points&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;H4:&lt;/strong&gt; 12 points&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;H5:&lt;/strong&gt; 9 points&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;H6:&lt;/strong&gt; 6 points&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;U, B, I, EM&lt;/strong&gt; and &lt;strong&gt;STRONG:&lt;/strong&gt; 3 points&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;A:&lt;/strong&gt; 10 points&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So whatever words are wrapped by those tags they will accumulate those scores and it will have more score as many times as it appears or by using combination of wrappers.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Now that we have a glimpse of how it works, here is how to manipulate it.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Lets say you want to add a set of keywords or that you want to add the author full name to the list of words in the index and also assign a high score to them.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;This is simple and this happens in the indexing time, not in search time (at search time all scores are already there since the indexing time).&lt;/p&gt;
&lt;p&gt;During the indexing process in Drupal, it does 2 things (amount many others):&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Calls the view node operation in the node to retrieve what usually gets rendered in the page and uses that HTML for indexing&lt;/li&gt;
  &lt;li&gt;Calls the &quot;update index&quot; operation in the hook_nodeapi (Drupal 6) or hook_node_update_index (Drupal 7) to append the result to the HTML that will be indexed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;So, you have 2 places where to manipulate this, the first one in the view node you can say what and how it should that text be, it will be indexed, but also will be outputted that same way to the user.&lt;/p&gt;
&lt;p&gt;But if you want to add index information without adding content to be displayed you can use the update index.&lt;/p&gt;
&lt;p&gt;Here is an example:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot; data-lang=&quot;php&quot;&gt;&amp;lt;?php
// Drupal 6
function mymodule_nodeapi(&amp;amp;$node, $op, $a3 = NULL, $a4 = NULL) {
  if ($op == &amp;quot;update index&amp;quot;) {
    $author_id = $node-&amp;gt;uid;
    // retrieve author full name from profile somehow and set into $author_full_name
    return &amp;quot;&amp;lt;h2&amp;gt;&amp;quot; . $author_full_name . &amp;quot;&amp;lt;/h2&amp;gt;&amp;quot;;
  }
}
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot; data-lang=&quot;php&quot;&gt;&amp;lt;?php
// Drupal 7
function mymodule_node_update_index($node) {
  $author_id = $node-&amp;gt;uid;
  // retrieve author full name from profile somehow and set into $author_full_name
  return &amp;quot;&amp;lt;h2&amp;gt;&amp;quot; . $author_full_name . &amp;quot;&amp;lt;/h2&amp;gt;&amp;quot;;
}
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;With this code the indexer will consider the author&#39;s full name into the words with relevance for that node, making it show when someones enter the author&#39;s name or last name (or better if both) in the search.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;With very few lines of code you are able to add more words to the index of the nodes.&lt;/p&gt;
</description>
        </item>
      
    
      
    
      
        <item>
          <title>See What I Mean By Kevin Cheng, Rosenfeld Media</title>
          <link>http://www.profesional.co.cr/book/see-what-i-mean-kevin-cheng-rosenfeld-media/</link>
          <pubDate>Mon, 26 Aug 2013 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/book/see-what-i-mean-kevin-cheng-rosenfeld-media/</guid>
          <description>&lt;h2 id=&quot;see-what-i-mean&quot;&gt;See What I Mean&lt;/h2&gt;

&lt;h3 id=&quot;how-to-use-comics-to-communicate-ideas&quot;&gt;How To Use Comics to Communicate Ideas&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/sites/files/cat.gif&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This book is a clear guide to help you mock up your ideas and concepts for better reaching to your colleagues or clients. You don’t need to be a caricaturist to use drawing as a tool to explain what you really mean.&lt;/p&gt;

&lt;p&gt;In this book the author guides you to a process of understanding the concepts of cartoon and how to apply this concepts in your advantage.&lt;/p&gt;

&lt;p&gt;The book is not intended to make the next Stan Lee out of you (although will not limit you), but instead to loose your fear to the pencil and help you use drawings as a way to put down your ideas and more easily share or discuss these ones.&lt;br /&gt;
“A picture says more than a thousand words” and once you start reading you will start seeing how this is so true.&lt;/p&gt;

&lt;p&gt;In the first part of the book you will be gracefully guided through the drawing process, enough to what you will need.&lt;br /&gt;
Then you will be introduced into the concepts of timing and environment and many other concepts of comics that will enable you to actually tell a full story in a very few frames.&lt;br /&gt;
Later you will be explained how to plan story and to focus on what will impact and actually tell what needs to be told.&lt;br /&gt;
Getting to the end of the book you will put things together and polish what you have being learning.&lt;/p&gt;

&lt;p&gt;When you finish the book you will probably won’t be able to just quick your job and get hired in DC Comics, but you will be enough prepared to tell your ideas or stories in a whole new way, using more visual and therefore more appealing way to reach your audience, adding a new tool to your toolbox.&lt;/p&gt;

&lt;p&gt;You can get the book &lt;a href=&quot;http://shop.oreilly.com/product/9781933820279.do&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
      
    
      
        <item>
          <title>Drupal Bootstrap Video Session</title>
          <link>http://www.profesional.co.cr/video/drupal-bootstrap/</link>
          <pubDate>Tue, 26 Feb 2013 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/video/drupal-bootstrap/</guid>
          <description>&lt;h1 id=&quot;description&quot;&gt;Description&lt;/h1&gt;
&lt;p&gt;This is a session exposed for our team when we expose generally and theoretically about what is and what can be done with the Drupal Bootstrap.&lt;/p&gt;

&lt;p&gt;The Drupal Bootstrap is indeed the base of the Drupal architecture and can be used in very interesting ways.
Besides, understanding how the Bootstrap works offers some basic knowledge that everyone working with Drupal should know.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://c2d15aa8025b7712e74e-1505847d119f604454ecf19a71b54755.r53.cf1.rackcdn.com/bootstrap.pdf&quot;&gt;Download presentation&lt;/a&gt;&lt;/p&gt;

</description>
        </item>
      
    
      
    
      
        <item>
          <title>Multiple Skype accounts on Mac OS or Windows at the same time</title>
          <link>http://www.profesional.co.cr/technology/multiple-skype-accounts-mac-os-or-windows-same-time/</link>
          <pubDate>Tue, 15 May 2012 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/technology/multiple-skype-accounts-mac-os-or-windows-same-time/</guid>
          <description>&lt;p&gt;I use a personal Skype account and another Skype account for the company I work for, and then I have the problem of how can I have both accounts opened.&lt;/p&gt;

&lt;h2 id=&quot;multiple-skype-instances-on-windows-xpvista&quot;&gt;Multiple Skype Instances on Windows XP/Vista&lt;/h2&gt;
&lt;p&gt;In Windows this is easy, you just need to call the &lt;code&gt;Skype.exe&lt;/code&gt; with the parameter &lt;code&gt;/secondary&lt;/code&gt;, which you can do by creating a new shortcut on the Programs Menu
1. Locate the &lt;strong&gt;Skype&lt;/strong&gt; program (&lt;code&gt;C:/Program Files(x86)/Skype/Phone/Skype.exe&lt;/code&gt; or &lt;code&gt;C:/Program Files(x86)/Skype/Phone/Skype.exe&lt;/code&gt; or something similar)
1. Right click on the &lt;code&gt;Skype.exe&lt;/code&gt; program
1. Select &lt;em&gt;“Create shortcut”&lt;/em&gt;
1. Then move this shortcut wherever you want (like the &lt;em&gt;Desktop&lt;/em&gt; or the &lt;em&gt;Start Menu&lt;/em&gt;)
1. Right click on the shortcut, select &lt;em&gt;“Properties”&lt;/em&gt;
1. On the field “Target” add at the end &lt;code&gt;/secondary&lt;/code&gt; like this for example (&lt;code&gt;&quot;C:/Program Files(x86)/Skype/Phone/Skype.exe&quot; /secondary&lt;/code&gt;)
1. Hit &lt;code&gt;OK&lt;/code&gt; and you are done, you can open the primary and the secondary instances of &lt;strong&gt;Skype&lt;/strong&gt;, having two accounts opened at the same time&lt;/p&gt;

&lt;h2 id=&quot;multiple-skype-instances-on-mac-os&quot;&gt;Multiple Skype instances on Mac OS&lt;/h2&gt;
&lt;p&gt;On Mac is a little more complicate because the Mac executable doesn’t supports the secondary option. &lt;br /&gt;
The best option I have found is using a different account to start the program and I’ve solved a couple little problems that comes with it.
1. Create a new user (one time only): 
    1. Go to &lt;code&gt;System Preferences&lt;/code&gt; -&amp;gt; &lt;code&gt;System&lt;/code&gt; -&amp;gt; &lt;code&gt;Users &amp;amp; Groups&lt;/code&gt;
    1. Unlock the window if required
    1. Hit the &lt;code&gt;+&lt;/code&gt; sign
    1. Choose standard type and fill the form, you can use the same password that you already use &lt;em&gt;(remember the account name, you will use it on the next steps)&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Start &lt;strong&gt;Skype&lt;/strong&gt; using the other account (every time that you want to use your secondary instance)
    &lt;ul&gt;
      &lt;li&gt;Open the terminal (Open spotlight and type terminal)&lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Change user, to do that type the following on the terminal replace &lt;code&gt;otheruser&lt;/code&gt; with the user name of the account you created&lt;/p&gt;

        &lt;pre&gt;&lt;code&gt;su otheruser
&lt;/code&gt;&lt;/pre&gt;
      &lt;/li&gt;
      &lt;li&gt;It will ask you for the other user password&lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Open &lt;strong&gt;Skype&lt;/strong&gt;, to do it, enter the following on the terminal:&lt;/p&gt;

        &lt;pre&gt;&lt;code&gt;/Applications/Skype.app/Contents/MacOS/Skype&amp;amp;
&lt;/code&gt;&lt;/pre&gt;
      &lt;/li&gt;
    &lt;/ul&gt;

    &lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; this is a little secret, you do can close the terminal, it will warn you that the program will be closed, but it actually will not, you can go ahead and close the terminal.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;One last tip, is that you should create a shared directory to store the files that someone sends you using Skype, otherwise, you will not be able to get them unless you switch to that user (I realized this after some one send me a file the first time)
    &lt;ol&gt;
      &lt;li&gt;Open &lt;em&gt;Finder&lt;/em&gt;&lt;/li&gt;
      &lt;li&gt;In the menu select &lt;code&gt;Go&lt;/code&gt; -&amp;gt; &lt;code&gt;Go to folder...&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Enter: &lt;code&gt;/Users/Shared&lt;/code&gt; and hit &lt;code&gt;Go&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;On the menu select &lt;code&gt;File&lt;/code&gt; -&amp;gt; &lt;code&gt;New Folder&lt;/code&gt; and create a new folder, you can name it &lt;em&gt;Skype&lt;/em&gt;&lt;/li&gt;
      &lt;li&gt;On your secondary instance of &lt;em&gt;Skype&lt;/em&gt; select in the menu &lt;code&gt;Preferences&lt;/code&gt; -&amp;gt; &lt;code&gt;General&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Locate the option &lt;em&gt;“Save files in:”&lt;/em&gt; and select the shared directory that you created, now all the files you download they will be saved there, you can also add that folder in your favorites and have it access quickly&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ol&gt;

</description>
        </item>
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>How to import other camera videos into iMovie app for iPhone, iPad or iPod Touch</title>
          <link>http://www.profesional.co.cr/2011/03/22/how-import-other-camera-videos-imovie-iphone-ipad-or-ipod-touch-1474/</link>
          <pubDate>Tue, 22 Mar 2011 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/2011/03/22/how-import-other-camera-videos-imovie-iphone-ipad-or-ipod-touch-1474/</guid>
          <description>&lt;p&gt;I just bought the 4th generation &lt;strong&gt;iPod Touch&lt;/strong&gt; (this also applies to &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;iPhone&lt;/strong&gt;) and I wanted to use &lt;strong&gt;iMovie app&lt;/strong&gt; to create videos using my &lt;strong&gt;previous videos taken with my other camera&lt;/strong&gt;, but this seems to not be possible, well, let me explain you how to achieve this.&lt;/p&gt;

&lt;p&gt;First of all, the problem of &lt;strong&gt;iMovie app&lt;/strong&gt; not letting you choose videos not taken with the &lt;strong&gt;same iPod Touch (or iPhone or iPad)&lt;/strong&gt; is a &lt;strong&gt;restriction based on the format of the video&lt;/strong&gt;, so if we &lt;strong&gt;convert&lt;/strong&gt; them into the right format they will be available for you to be used on &lt;strong&gt;iMovie app&lt;/strong&gt; to create your own movies.&lt;br /&gt;
I’ll explain two ways of getting there, one from the device itself (iPod Touch, iPhone or iPad) and one from your computer, which in my case it’s a PC, but the process could be achieved from any other computer.&lt;/p&gt;

&lt;h2 id=&quot;from-the-same-device-ipod-touch-iphone-or-ipad&quot;&gt;From the same device (iPod Touch, iPhone or iPad)&lt;/h2&gt;
&lt;p&gt;You could use another video editing app that allows you to take a video from any of your videos and then work with it and export it to your camera roll. &lt;br /&gt;
I tried this with ReelDirector app, which is by the way a good app to edit your own videos like iMovie. &lt;/p&gt;

&lt;div class=&quot;small-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/reeldirector.png&quot; alt=&quot;ReelDirector - How to import other camera videos into iMovie app for iPhone, iPad or iPod Touch&quot; width=&quot;58&quot; height=&quot;58&quot; /&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;First, you will need to convert your video to iphone/ipod/ipad compatible format to be able to export it to your photos on your device, for this you could use a free application like &lt;a href=&quot;http://handbrake.fr/&quot;&gt;Handbreak&lt;/a&gt;, which it has pressets for most common devices.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Locate the converted video into one of your videos libraries that you sync with your device, check to sync videos and sync.   &lt;/p&gt;

    &lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/001_import_videos.png&quot; alt=&quot;Import videos - How to import other camera videos into iMovie app for iPhone, iPad or iPod Touch&quot; width=&quot;523&quot; height=&quot;132&quot; /&gt;&lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Create a new project in ReelDirector and add the video you imported, in the case of ReelDirector it will keep your audio as it was original and maybe that format will not allow you to import the video to iMovie so you probably would have to remove the video’s audio&lt;/p&gt;

    &lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/002_create_proejct.png&quot; alt=&quot;Create ReelDirector project - How to import other camera videos into iMovie app for iPhone, iPad or iPod Touch&quot; width=&quot;220&quot; height=&quot;98&quot; /&gt;&lt;/div&gt;
    &lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/005_select_video_type.png&quot; alt=&quot;Insert your video in ReelDirector - How to import other camera videos into iMovie app for iPhone, iPad or iPod Touch&quot; width=&quot;220&quot; height=&quot;330&quot; /&gt;&lt;/div&gt;
    &lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/007_choose_video.png&quot; alt=&quot;Select video in ReelDirector - How to import other camera videos into iMovie app for iPhone, iPad or iPod Touch&quot; width=&quot;241&quot; height=&quot;190&quot; /&gt;&lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Save, Render and Export the video to your camera roll.&lt;/li&gt;
  &lt;li&gt;Now you are ready to use this video on your project on iMovie (without the original audio)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;from-your-computer-using-a-video-converter&quot;&gt;From your computer using a video converter&lt;/h2&gt;
&lt;p&gt;You will need a good video converter that allows you to choose in a custom way not only the video format, but also the audio format, in my case I used Adobe Media Encoder&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Add the video that you want to convert&lt;/p&gt;

    &lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/b002_adobe_media_encoder.png&quot; alt=&quot;Add video to be converted - How to import other camera videos into iMovie app for iPhone, iPad or iPod Touch&quot; width=&quot;358&quot; height=&quot;374&quot; /&gt;&lt;/div&gt;

    &lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/b003_select_video.png&quot; alt=&quot;Select video to be converted - How to import other camera videos into iMovie app for iPhone, iPad or iPod Touch&quot; width=&quot;450&quot; height=&quot;333&quot; /&gt;&lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Hit “settings” to open the export settings&lt;/p&gt;

    &lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/b004_go_to_settings.png&quot; alt=&quot;Go to settings - How to import other camera videos into iMovie app for iPhone, iPad or iPod Touch&quot; width=&quot;460&quot; height=&quot;263&quot; /&gt;&lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;In the format select choose “QuickTime”&lt;/p&gt;

    &lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/b005_settings_quicktime.png&quot; alt=&quot;Select quicktime format - How to import other camera videos into iMovie app for iPhone, iPad or iPod Touch&quot; width=&quot;405&quot; height=&quot;57&quot; /&gt;&lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;In the video tab choose Video Codec = “H.264”&lt;/p&gt;

    &lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/b006_settings_video_h264.png&quot; alt=&quot;Choose video codec H.264 - How to import other camera videos into iMovie app for iPhone, iPad or iPod Touch&quot; width=&quot;420&quot; height=&quot;109&quot; /&gt;&lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;In the audio tab choose Audio Codec = “AAC”, Sample Rate = 44100 Hz and Channels = “Mono”&lt;/p&gt;

    &lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/b007_settings_audio.png&quot; alt=&quot;Choose audio codec AAC - How to import other camera videos into iMovie app for iPhone, iPad or iPod Touch&quot; width=&quot;426&quot; height=&quot;274&quot; /&gt;&lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Export your video, now it has the formatting that will allow iMovie to use it.&lt;/li&gt;
  &lt;li&gt;Put your video in one of your picture libraries that will sync with your device, and then use iMovie and select your video, would probably be in the top of the list because of the creation time/date&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I personally prefer the second option, it’s a good way to use those videos you took with your camera or any other device and being able to use them on iMovie to create your nice movie.&lt;/p&gt;

&lt;p&gt;Enjoy and let me know if you find any other tool, maybe a freeone that allows other people to convert the videos.&lt;/p&gt;

</description>
        </item>
      
    
      
    
      
        <item>
          <title>How to set the index length in the Drupal Database Schema</title>
          <link>http://www.profesional.co.cr/2010/06/04/how-set-index-length-drupal-database-schema-1471/</link>
          <pubDate>Fri, 04 Jun 2010 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/2010/06/04/how-set-index-length-drupal-database-schema-1471/</guid>
          <description>&lt;p&gt;I believe that you must be really picky when you define a database in a project, that is one of the spots where you could be taking your project to success or failure in terms of performance.&lt;/p&gt;

&lt;p&gt;Drupal 6 and up has a very convenience way define your tables without using syntax for a specific database server, but, this sometimes could be a little limited when trying to set specific details like the index length, so, I’ll explain to you how to achieve this specific feature. &lt;br /&gt;
There are cases that you may for example have a char field in your database and you want to have an index on that field, but you don’t need an index of all the text, you could improve the searches by adding only the first part of this text in the index reducing the size of this index.&lt;/p&gt;

&lt;p&gt;To achieve that in MySql you would do something like this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;CREATE TABLE my_table (
  an_id int(10) unsigned NOT NULL AUTO_INCREMENT,
  other_id int(10) unsigned NOT NULL,
  name varchar(30) NOT NULL,
  PRIMARY KEY (an_id),
  UNIQUE KEY unique_key_name (an_id, name),
  KEY limited_length_text_index (name(10)) -- This would limit to index only first 10 chars
)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;But, to tell Drupal’s database schema to do that you need to be a little tricky, and you do something like this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot; data-lang=&quot;php&quot;&gt;&amp;lt;?php
$schema[&amp;#39;my_table&amp;#39;] = array(
  &amp;#39;fields&amp;#39; =&amp;gt; array(
    &amp;#39;an_id&amp;#39; =&amp;gt; array(
      &amp;#39;type&amp;#39; =&amp;gt; &amp;#39;serial&amp;#39;,
      &amp;#39;unsigned&amp;#39; =&amp;gt; TRUE,
      &amp;#39;not null&amp;#39; =&amp;gt; TRUE,
    ), 
    &amp;#39;other_id&amp;#39; =&amp;gt; array(
      &amp;#39;type&amp;#39; =&amp;gt; &amp;#39;int&amp;#39;, 
      &amp;#39;unsigned&amp;#39; =&amp;gt; TRUE,
      &amp;#39;not null&amp;#39; =&amp;gt; TRUE,
    ),                                                                                                                                                        
    &amp;#39;name&amp;#39; =&amp;gt; array(
      &amp;#39;type&amp;#39; =&amp;gt; &amp;#39;char&amp;#39;,
      &amp;#39;not null&amp;#39; =&amp;gt; TRUE,
      &amp;#39;length&amp;#39; =&amp;gt; 30,
    ),
  ),
  &amp;#39;indexes&amp;#39; =&amp;gt; array(
    /* This would limit to index only first 10 chars */
    &amp;#39;limited_length_text_index&amp;#39; =&amp;gt; array(array(&amp;#39;name&amp;#39;, 10)),
  ),
  &amp;#39;unique keys&amp;#39; =&amp;gt; array(
    &amp;#39;unique_key_name&amp;#39; =&amp;gt; array(&amp;#39;an_id&amp;#39;, &amp;#39;name&amp;#39;),
  ),
  &amp;#39;primary key&amp;#39; =&amp;gt; array(&amp;#39;an_id&amp;#39;),
);
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I hope this little tip help you to create better databases for your projects or modules.&lt;/p&gt;

</description>
        </item>
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>Intel's ads are great</title>
          <link>http://www.profesional.co.cr/2009/09/11/intels-ads-are-great-1463/</link>
          <pubDate>Fri, 11 Sep 2009 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/2009/09/11/intels-ads-are-great-1463/</guid>
          <description>&lt;p&gt;I love the Intel ads, mostly that one about rock stars, perhaps because since I got into the university I found so munch respect for some people and we always talk about X guy that invented this or that acomplish that, in some way we want to achieve things like that, like getting into Blizzard to work on games like Starcraft, I mean, those are our rock stars.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.thejbspecial.com/2009/05/19/awesome-intel-ad-sure-to-go-viral/&quot;&gt;Video&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
      
    
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>All apps must be compatible with iPhone OS 3.0</title>
          <link>http://www.profesional.co.cr/2009/05/07/all-apps-must-be-compatible-iphone-os-30-20/</link>
          <pubDate>Thu, 07 May 2009 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/2009/05/07/all-apps-must-be-compatible-iphone-os-30-20/</guid>
          <description>&lt;p&gt;Apple is enforcing every iPhone/iPod Touch developer to ensure that their applications are compatible with the new iPhone OS 3.0 (which right now is in beta 5 version).&lt;/p&gt;

&lt;p&gt;We are getting closer to the moment of the official release and Apple wants to make sure that every application that is right now in the App Store or new apps will work with the new iPhone OS 3.0. &lt;br /&gt;
It’s supose that they should work just like that, but some of them could need a tweek and they want to be sure. &lt;br /&gt;
Apple has began to review the actual apps and added as part of the aproval process for new apps, to make sure they work well in the new OS 3.0, and any application that doesn’t meets this requirement will be removed from the App Store or denied (if is new). &lt;br /&gt;
It’s a good way to ensure that all the users will get good quality apps and that they will not get issues when they upgrade their iPhone/iPod Touch devices to the new OS 3.0 this summer.&lt;/p&gt;

</description>
        </item>
      
    
      
        <item>
          <title>Free Read/Write NTFS on Mac OS</title>
          <link>http://www.profesional.co.cr/2009/04/14/free-readwrite-ntfs-mac-os-14/</link>
          <pubDate>Tue, 14 Apr 2009 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/2009/04/14/free-readwrite-ntfs-mac-os-14/</guid>
          <description>&lt;p&gt;Since I’m running Mac OS X on my HP laptop, I was running into the problem of how to read/write to my Windows NTFS partitions.&lt;/p&gt;

&lt;p&gt;I knew there are some paid products and I start to look for them, then I realize that there is a free and good option to achieve this. &lt;br /&gt;
&lt;em&gt;Amit Singh&lt;/em&gt;, a developer from Google created a &lt;strong&gt;Mac OS&lt;/strong&gt; version of &lt;a href=&quot;http://fuse.sourceforge.net/&quot;&gt;FUSE&lt;/a&gt; &lt;em&gt;(File System in User Space)&lt;/em&gt;. &lt;br /&gt;
&lt;a href=&quot;http://code.google.com/p/macfuse/&quot;&gt;MacFuse&lt;/a&gt; is an open source project that enables Mac OS X to mount ssh, ntfs and so on. &lt;br /&gt;
&lt;strong&gt;MacFuse&lt;/strong&gt; by default is only able to read &lt;strong&gt;NTFS&lt;/strong&gt;, but there is another project that uses MacFuse to write to this file system, this project is &lt;a href=&quot;http://www.ntfs-3g.org/&quot;&gt;NTFS-3G&lt;/a&gt;. &lt;br /&gt;
&lt;strong&gt;NTFS-3G&lt;/strong&gt; will also install &lt;strong&gt;MacFuse&lt;/strong&gt;, so all you need to do is install &lt;strong&gt;NTFS-3G&lt;/strong&gt; and you will be able to read and write to &lt;strong&gt;NTFS&lt;/strong&gt; disk and partitions from your &lt;strong&gt;Mac OS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Updated:&lt;/strong&gt; MacFuse is no longer being developed and is not supported in the last versions of MacOS, instead of using MacFuse you can now use it’s successor &lt;a href=&quot;http://osxfuse.github.com/&quot;&gt;Fuse for OS X&lt;/a&gt; which is based on the code from MacFuse but is supported and it works with the last versions of OS X like Lion.&lt;/p&gt;

</description>
        </item>
      
    
      
        <item>
          <title>Google synchronize calendar and contacts with your iPhone/iPod Touch</title>
          <link>http://www.profesional.co.cr/2009/02/26/google-synchronize-calendar-and-contacts-your-iphoneipod-touch-10/</link>
          <pubDate>Thu, 26 Feb 2009 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/2009/02/26/google-synchronize-calendar-and-contacts-your-iphoneipod-touch-10/</guid>
          <description>&lt;p&gt;Google has created a exchange interface to enable you to synchronize your calendar events and your contacts from Gmail with your iPhone/iPod Touch. Check it out here &lt;a href=&quot;http://www.google.com/mobile/apple/sync.html&quot;&gt;Mobile Sync&lt;/a&gt;&lt;/p&gt;

&lt;div class=&quot;main-article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/sync-48x48.gif&quot; alt=&quot;Google Sync Calendar Contacts with iPhone/iPod Touch&quot; width=&quot;48&quot; height=&quot;48&quot; /&gt;&lt;/div&gt;

&lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/mobile_138740f_en.gif&quot; alt=&quot;Google Sync Calendar Contacts with iPhone/iPod Touch Warning erase data&quot; width=&quot;192&quot; height=&quot;282&quot; /&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; On your first sync your iPhone/iPod Touch will erase your information, so make sure you back up your information on your Outlook or similar.&lt;/p&gt;

&lt;p&gt;This will enable to synchronize your contacts and calendar whitout having to plug your iPhone/iPod Touch to your computer and you don’t need additional applications.
In my case, I used to use the NemusSync (jailbreak app that sync the calendar in the iPhone/iPod Touch) and use the iTunes to sync the contacts with google, but this opens a lot new better and reliable way to sync.
Also note that you should not set the account to sync your mail (you just keep using the way you used to sync with gmail, this is only for contacts and calendar, for now).
Remember to back up your data first.&lt;/p&gt;

&lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/mobile_138740d_en.gif&quot; alt=&quot;Google Sync Calendar Contacts with iPhone/iPod Touch&quot; width=&quot;192&quot; height=&quot;282&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/mobile_138740d_en.gif&quot; alt=&quot;Google Sync Calendar Contacts with iPhone/iPod Touch&quot; width=&quot;192&quot; height=&quot;282&quot; /&gt;&lt;/div&gt;

</description>
        </item>
      
    
      
    
      
    
      
        <item>
          <title>How to use the iPod Touch as an VoIP phone with Skype, gTalk or live</title>
          <link>http://www.profesional.co.cr/2009/02/13/how-use-ipod-touch-voip-phone-skype-gtalk-or-live-5/</link>
          <pubDate>Fri, 13 Feb 2009 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/2009/02/13/how-use-ipod-touch-voip-phone-skype-gtalk-or-live-5/</guid>
          <description>&lt;p&gt;&lt;strong&gt;Updated:&lt;/strong&gt; Since one of the &lt;em&gt;iPhone OS 3.x.x&lt;/em&gt; they made the &lt;em&gt;Macally iVoiceIII&lt;/em&gt; &lt;em&gt;not compatible&lt;/em&gt;, this is actually not true, if you just turned on your &lt;em&gt;iPod Touch&lt;/em&gt; it will work for about 20 seconds, so this is a software fix from them to &lt;strong&gt;disallow it&lt;/strong&gt;. As far as my investigation goes, this only happens on &lt;strong&gt;iPod Touch 1st generation&lt;/strong&gt;, some people has reported that the &lt;strong&gt;Macally iVoicePro&lt;/strong&gt; does do work with &lt;strong&gt;iPod Touch 1st generation&lt;/strong&gt;.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;When I first bought my iPod Touch I had the idea of use it with my Skype account to call to Costa Rica without having to be in my laptop, so I bought a mic for the iPod to do so.&lt;/p&gt;

&lt;p&gt;The only problem back then was that the mic was created for the iPod video or classic, but was not tested for the iPod Touch and to make it work needed some work, the guys that made it work posted some videos on YouTube about how to disasembly the mic to hack it and then to make it work using some jailbreak applications, but I was not willing to do that back then. &lt;br /&gt;
The good news is that after Apple have made some software updates you don’t need to hack the mic nor jailbreak your iPod Touch to achieve this.&lt;/p&gt;

&lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/small_e3.jpg&quot; alt=&quot;Macally iVoiceIII Microphone for iPod Touch&quot; width=&quot;90&quot; height=&quot;90&quot; /&gt;&lt;/div&gt;

&lt;p&gt;So, all you need is mic that is arround $30 &lt;strong&gt;(Macally iVoiceIII Microphone for iPod)&lt;/strong&gt; in internet and the app &lt;strong&gt;Nimbuzz&lt;/strong&gt; which is free and you can get it on the app store.&lt;/p&gt;

&lt;p&gt;Once you have your mic with you and you installed the app  you can enter and configure your Skype, gTalk or Live (Microsoft) account, plug the mic and call any of the contacts you have there (or phone numbers if you have Skype credits) and voila!!… oh, and don’t forguet to plug your headphones if you have the 1st generation iPod Touch (like I do).   &lt;/p&gt;

&lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/touch_IMG_00121_m.PNG&quot; alt=&quot;Nimbuzz VoIP from the iPod Touch&quot; width=&quot;160&quot; height=&quot;240&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/touch_IMG_00091_m.PNG&quot; alt=&quot;Nimbuzz iPod Touch calling options&quot; width=&quot;160&quot; height=&quot;240&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;article-image&quot;&gt;&lt;img src=&quot;http://3cca053a28a5db4d7e2d-9c64834929b7793a1eba90da107ff905.r73.cf1.rackcdn.com/sites/files/touch_IMG_00112_m.PNG&quot; alt=&quot;Nimbuzz iPod Touch VoIP phone during a call&quot; width=&quot;160&quot; height=&quot;240&quot; /&gt;&lt;/div&gt;

</description>
        </item>
      
    
      
    
      
    
      
        <item>
          <title>My new blog</title>
          <link>http://www.profesional.co.cr/2009/02/11/my-new-blog-1/</link>
          <pubDate>Wed, 11 Feb 2009 00:00:00 -0500</pubDate>
          <author>Nestor Mata Cuhtbert &lt;nestor@profesional.co.cr&gt;</author>
          <guid>http://www.profesional.co.cr/2009/02/11/my-new-blog-1/</guid>
          <description>&lt;p&gt;Today I’m setting up my new blog.&lt;/p&gt;

&lt;p&gt;I plan to have a lot of intersting information on several topics here.&lt;/p&gt;

&lt;p&gt;Nestor&lt;/p&gt;
</description>
        </item>
      
    

  </channel> 
</rss>
