<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Chris the Freelancer]]></title><description><![CDATA[Live and work anywhere by learning to code]]></description><link>https://www.christhefreelancer.com/</link><image><url>https://www.christhefreelancer.com/favicon.png</url><title>Chris the Freelancer</title><link>https://www.christhefreelancer.com/</link></image><generator>Ghost 4.3</generator><lastBuildDate>Fri, 10 Apr 2026 06:55:29 GMT</lastBuildDate><atom:link href="https://www.christhefreelancer.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Ghost Theme Development - The Ultimate Guide]]></title><description><![CDATA[<p>In June 2021, I moved the website you&apos;re currently reading this article on from Wordpress to Ghost (<a href="https://ghost.org/">Ghost.org</a>).</p><p>After developing eCommerce websites on Shopify for a few years, I realised just how antiquated a system like Wordpress is. It&apos;s bulky, slow and built with old</p>]]></description><link>https://www.christhefreelancer.com/ghost-theme-development-guide/</link><guid isPermaLink="false">614800a9f2a79c6a7ee964ac</guid><category><![CDATA[Work]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Mon, 18 Oct 2021 04:58:55 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/10/Ghost-Theme-Development-Thumbnail-2.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.christhefreelancer.com/content/images/2021/10/Ghost-Theme-Development-Thumbnail-2.png" alt="Ghost Theme Development - The Ultimate Guide"><p>In June 2021, I moved the website you&apos;re currently reading this article on from Wordpress to Ghost (<a href="https://ghost.org/">Ghost.org</a>).</p><p>After developing eCommerce websites on Shopify for a few years, I realised just how antiquated a system like Wordpress is. It&apos;s bulky, slow and built with old technology. </p><p>Ghost by comparison is modern, fast and efficient.</p><p>Ghost obviously doesn&apos;t have the level of brand awareness that Wordpress has and so you&apos;ll inevitably find less resources for learning how to develop on the platform. </p><p>For this reason (along with some annoying gaps in their documentation) I was prompted to create <a href="https://skl.sh/3aFWINn">a complete class on the subject of Ghost themes</a> to which this guide is the compliment to.</p><p>Just like my <a href="https://www.christhefreelancer.com/shopify-liquid-guide/">Ultimate Guide to Shopify Liquid</a>, I&apos;ll be going as in-depth as possible into Ghost theme development so strap yourselves in!</p><p>Note that I will reference the official documentation where I feel it makes sense to do so, rather than repeating the same information, especially on the much less common features.</p><h2 id="ghost-theme-development-basics">Ghost Theme Development Basics</h2><p>Much like Shopify, the theme in Ghost controls the front-end of your website. It&apos;s de-coupled from the Ghost backend and is coded in the popular <a href="https://handlebarsjs.com/">Handlebars</a> templating language.</p><p>Unlike Shopify though, there&apos;s not a big focus on objects in Ghost Theme Development. Instead, scope is referenced by something called &apos;context&apos; and the template structure more closely resembles that of Wordpress.</p><p>As Ghost is built for publishing, collections and posts form the basis of your Ghost theme.</p><p>A blog - at its most basic form - is simply a <em><strong>collection</strong></em> of blog <em><strong>posts</strong></em>.</p><p>Therefore, the only required templates in Ghost themes are the <code>index.hbs</code> and <code>post.hbs</code> templates.</p><p>In this article, we&apos;ll break down Ghost theme development into the following:</p><!--kg-card-begin: markdown--><ul>
<li>Templates</li>
<li>Routes</li>
<li>Contexts, and</li>
<li>Helpers</li>
</ul>
<!--kg-card-end: markdown--><p>Let&apos;s start with how a Ghost theme is structured.</p><h2 id="theme-structure">Theme Structure</h2><p>As mentioned, the only templates required in a Ghost theme are <code>index.hbs</code> and <code>post.hbs</code>. </p><p><code>index.hbs</code> is the template used for displaying the collection of posts stored on your Ghost site and is served on root route (homepage) by default. </p><p><code>post.hbs</code> doubles as both the template for displaying single blog posts as well as single pages. </p><p><code>default.hbs</code> while not required, carries surrounding code that is common to multiple (if not all templates). When called within a template, the template code will sit inside the <code>{{ body }}</code>.</p><p>On top of <code>index.hbs</code> and <code>post.hbs</code> are a bunch of additional <em>optional</em> templates which will replace these templates on certain routes.</p><p>The following diagram demonstrates the optional templates that sit ahead of <code>index.hbs</code> and <code>post.hbs</code></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/09/Ghost-Template-Structure-1.jpg" class="kg-image" alt="Ghost Theme Development - The Ultimate Guide" loading="lazy" width="1879" height="2128" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/09/Ghost-Template-Structure-1.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/09/Ghost-Template-Structure-1.jpg 1000w, https://www.christhefreelancer.com/content/images/size/w1600/2021/09/Ghost-Template-Structure-1.jpg 1600w, https://www.christhefreelancer.com/content/images/2021/09/Ghost-Template-Structure-1.jpg 1879w" sizes="(min-width: 720px) 720px"><figcaption>A visual mind map of the templates and where they fit in to the structure</figcaption></figure><p>From left to right, you have the page (or route) that the user is viewing followed by the list of possible templates. The <code>{{slug}}</code> and <code>{{template-name}}</code> represent dynamic values that I&apos;ll explain in just a second.</p><p>The templates furtherest to the left are the ones that will get loaded ahead of the other templates if they exist. If they don&apos;t exist, the next template in line will determine what gets displayed on the route.</p><p>For example, when viewing posts with the tag of &apos;example&apos;, if a <code>tag-example.hbs</code> file exists in the theme folder, that file will be served. If that file doesn&apos;t exist but a <code>tag.hbs</code> file exists, that <code>tag.hbs</code> will be served and if neither are true, the template served will default to <code>index.hbs</code>.</p><p><code>default.hbs</code> - as can be seen from the diagram - wraps around which ever template is loaded and its code is served alongside it.</p><p>When it comes to viewing a <code>page</code> (as another example), the template loaded can be one of 4 different templates.</p><!--kg-card-begin: markdown--><ol>
<li>If the <code>page</code> has a page-specific template, that template will be served. Page-specific templates start with &quot;page-&quot; followed by the slug of the specific <code>page</code>.</li>
<li>A custom template that is selected on the <code>page</code>&apos;s edit page within the admin. These templates start with &quot;custom-&quot; followed by the custom template name.</li>
<li>The <code>page.hbs</code> template, or</li>
<li>The <code>post.hbs</code> template</li>
</ol>
<!--kg-card-end: markdown--><p>As the diagram shows, the page-specific template will receive priority followed by the custom template (if set on the page), followed by the <code>page.hbs</code> template and if none of those exist, the <code>post.hbs</code> template will be used by default.</p><!--kg-card-begin: html--><h2>Setting and updating routes</h2><!--kg-card-end: html--><p>While technically not a part of theme, the <code>routes.yml</code> file plays a large part in determining what templates get served on each route and allow you to customise the path as well.</p><p>The <code>routes.yml</code> file can be found outside your theme folder in <code>/content/settings/</code> and looks like this by default:</p><pre><code class="language-yaml">## routes.yaml

routes:

collections:
  /:
    permalink: /{slug}/
    template: index

taxonomies:
  tag: /tag/{slug}/
  author: /author/{slug}/</code></pre><p>The default site structure (under the above configuration) places your <code>index.hbs</code> on your root (/) path and allows for filtering of posts via <code>/tag/{slug}/</code> (where <code>{slug}</code> represents the slug of the tag) and <code>/author/{slug}/</code> (where <code>{slug}</code> represents the slug of the author).</p><p>Configuration of your routes can be broken down into 5 categories:</p><!--kg-card-begin: markdown--><ol>
<li>Basic Routes</li>
<li>Collections</li>
<li>Taxonomies, and</li>
<li>Channels</li>
</ol>
<!--kg-card-end: markdown--><!--kg-card-begin: html--><h3>Basic Routes</h3><!--kg-card-end: html--><p>Basic routes are explicit routes. You specify the path word-for-word in your <code>routes.yml</code> file followed by the template you wish to load at the path.</p><p>For example, specifying the following routes in your <code>routes.yml</code> file will serve the <code>features.hbs</code> template at <code>/features/</code> and the template <code>team.hbs</code> at <code>/about/team</code>.</p><figure class="kg-card kg-code-card"><pre><code class="language-yaml">routes:
  /features/: features
  /about/team/: team</code></pre><figcaption>Two examples of explicit &quot;Basic Routes&quot;</figcaption></figure><!--kg-card-begin: html--><h4>Basic routes with dynamic data</h4><!--kg-card-end: html--><p>The basic routes in the previous example will load static templates with no dynamic data.</p><p>Alternatively, to connect a data source to your newly created route, you create a new line, specify the template followed by the data source.</p><p>Following the previous example, your <code>routes.yml</code> becomes </p><pre><code class="language-yaml">routes:
  /features/: features
  /about/team/:
    template: team
    data: page.team</code></pre><p>Notice how the value drops to a new line, allowing you to specify two key-value pairs (<code>template</code> and <code>data</code>)</p><p>The part after <code>data:</code> (<code>page.team</code> in this instance) represents a link to the page in your admin with the slug of <code>team</code>, making the data from that page available to that template via the <code>page</code> contexts (contexts of course, will be covered the next section).</p><p>Interestingly, this practice prevents you from accessing the page at its original route. The official documentation states that this is &quot;<em>to prevent the content being duplicated in two places</em>&quot;.</p><p>Of course, if you didn&apos;t specify this particular route, you would have still have access to the page data on the original route.</p><p>So the benefit of this approach it seems, is simply to nest the an existing page&apos;s path inside a subdirectory. So instead of the path to the <code>team</code> page being <code>/team</code>, it becomes <code>/about/team</code>.</p><!--kg-card-begin: html--><h4>Basic routes with custom formatting</h4><!--kg-card-end: html--><p>Ghost also provides the option to easily serve a feed or API via the <code>content_type</code> key.</p><figure class="kg-card kg-code-card"><pre><code class="language-yaml">routes:
  /podcast/rss/:
    template: podcast-feed
    content_type: text/xml</code></pre><figcaption>Example of a podcast RSS feed route</figcaption></figure><p>In the above example, the <code>podcast-feed.hbs</code> template will load on the path <code>/podcast/rss</code> but the format will be <code>text/xml</code> (which is the required format for podcast RSS feeds) rather than HTML .</p><p>Alternatively, you can set the <code>content_type</code> to <code>json</code> and serve a simple JSON API. </p><p>Obviously, the code you place in your template file will need to match the <code>content_type</code> specified.</p><h3 id="collections">Collections</h3><p>If we take a look back at our original example of a basic <code>routes.yml</code> file, you&apos;ll notice the following section.</p><figure class="kg-card kg-code-card"><pre><code class="language-yaml">collections:
  /:
    permalink: /{slug}/
    template: index</code></pre><figcaption>In this example, the index is served on the root of the website</figcaption></figure><p>This tells Ghost two things. One, to serve an index of all posts on the homepage of the website through the <code>index.hbs</code> template and two, serve the posts within the collection via their slug with no nesting.</p><p>Don&apos;t be confused by the pluralisation of &quot;collections&quot;. In Ghost, there is just a single <em>collection</em> containing all your <em>posts</em>. </p><p>What <code>collections:</code> allows you to do is to both change the location of the index and create multiple filtered indexes that pull from the same core collection but are defined by specific tags.</p><figure class="kg-card kg-code-card"><pre><code class="language-yaml">collections:
  /blog/:
    permalink: /blog/{slug}/
    template: index</code></pre><figcaption>In this example, the index and blog posts are nested inside of /blog/</figcaption></figure><p>In the above example, you can see that our index will now be served on <code>/blog</code> path and each post will be served at the path <code>/blog/{slug}/</code>.</p><p>This now gives us the space on the root path of the site to specify a homepage template like such:</p><pre><code class="language-yaml">routes:
  /: home</code></pre><p>Now, the <code>home.hbs</code> template will be loaded at the root route instead of <code>index.hbs</code>.</p><!--kg-card-begin: html--><h4>Collection filtering</h4><!--kg-card-end: html--><p>In the previous example, we saw how to move our index of posts off of the root path and onto the nested path of <code>/blog/</code> but what we can also do is simulate multiple collections by tagging posts with certain tags and then creating paths with a specified filter.</p><p>For example...</p><figure class="kg-card kg-code-card"><pre><code class="language-yaml">collections:
  /blog/:
    permalink: /blog/{slug}/
    template: blog
    filter: primary_tag:blog
  /podcast/:
    permalink: /podcast/{slug}/
    template: podcast
    filter: primary_tag:podcast</code></pre><figcaption>Simulating two collections and serving them with different templates on separate routes</figcaption></figure><p>In the above example, we&apos;ve separated out our blog posts and podcasts into two different &apos;collections&apos; (<em>remember there&apos;s only one collection from the perspective of the Ghost admin but we can simulate multiple on the front-end</em>).</p><p>You&apos;ll see in the first route that <code>blog.hbs</code> is now the template for the path <code>/blog/</code> and that any posts that don&apos;t have the primary tag of <code>blog</code> will be filtered out.</p><p>The second route uses the <code>podcast.hbs</code> template and has access to all the posts with the primary tag of <code>podcast</code>.</p><p>As it states in the official documentation...</p><!--kg-card-begin: markdown--><blockquote>
<p>&quot;The primary_tag property is simply the first tag which is entered in the tag list inside Ghost&#x2019;s editor. It&#x2019;s useful to filter against the primary tag because it will always be unique.&quot;</p>
</blockquote>
<!--kg-card-end: markdown--><p>This is an example of how we can host a blog and podcast on the same Ghost website.</p><!--kg-card-begin: html--><h4>Loading data into an index</h4><!--kg-card-end: html--><p>Just like we saw with basic routes, you can also load additional data into an index template via the <code>data</code> attribute.</p><pre><code class="language-yaml">collections:
  /portfolio/:
    permalink: /work/{slug}/
    template: work
    filter: primary_tag:work
    data: tag.work</code></pre><p>The above example passes the data from the tag &apos;work&apos; into the <code>work.hbs</code> template.</p><p>Unlike Shopify, tags in Ghost hold additional data such as an image and description. Including it as a data source makes that data available in the template when accessed from the specified path.</p><!--kg-card-begin: html--><h3>Taxonomies</h3><!--kg-card-end: html--><p>Taxonomies are groupings of posts based on a common relation. In Ghost, this is author and/or tag.</p><p>As we saw in the original default <code>routes.yml</code> example, we have default routes set up for automatic filtering of the collection via a tag or author.</p><pre><code class="language-yaml">taxonomies:
  tag: /tag/{slug}/
  author: /author/{slug}/</code></pre><p>The above configuration will allow for filtering the collection based on a specific tag via the path of <code>/tag/</code> followed by the slug of the tag and by a specific author via the path of <code>/author/</code> followed by the slug of the author.</p><p>In order for this to work however, you will need a <code>tag.hbs</code> and/or an <code>author.hbs</code> (respectively).</p><p>Taxonomies are limited to just tags and authors in Ghost. The only possible modifications that you can make to the above routes is to change the path of these routes or remove them entirely.</p><!--kg-card-begin: html--><h3>Channels</h3><!--kg-card-end: html--><p>Finally, Channels are custom streams of paginated content matching a specific filter. Ghost says you can &quot;<em>think of channels as a set of permanent search results. It&#x2019;s a filtered slice of content from across your site, without modifying the content itself.</em>&quot;</p><p>Channels are defined as a custom route, with a custom <code>controller</code> property called <code>channel</code>, and a filter to determine which posts to return.</p><pre><code class="language-yaml">routes:
  /apple-news/:
    controller: channel
    filter: tag:[iphone,ipad,mac]
  /editors-column/:
    controller: channel
    filter: tag:column+primary_author:cameron</code></pre><p>As you can see from the above example, all that is required to turn a regular custom route into a channel is to add the <code>controller: channel</code> key-value pair and a filter attribute with the content you wish to filter by.</p><p>You might have noticed however, that the <code>template</code> keyword is missing from these custom routes. That&apos;s because the <code>index.hbs</code> file will be loaded by default.</p><p>If you wish to include a custom template for the channel, you can simply do so but adding in <code>template:</code> following by the template name (minus the <code>.hbs</code> extension) just like you have seen for the other routes.</p><h2 id="contexts">Contexts</h2><p>Now that we&apos;ve discussed the structural side of Ghost themes, let&apos;s now look at how we can access dynamic data within each template.</p><p>In Ghost, this is done through something called &apos;Contexts&apos;.</p><p>As it states on the official documentation:</p><!--kg-card-begin: markdown--><blockquote>
<p>&quot;A Ghost publication follows a structure that allows URLs or routes to be mapped to views which display specific data. This data could be a list of posts, a single post or an RSS feed. It is the route that determines what data is meant to be shown and what template is used to render it.&quot;</p>
</blockquote>
<!--kg-card-end: markdown--><p>The available data (ie. context) within each template depends on the route and what (if any) additional data we&apos;ve passed into it.</p><p> The official Ghost documentation states that there are 6 different contexts.</p><!--kg-card-begin: markdown--><ol>
<li>index</li>
<li>page</li>
<li>post</li>
<li>author</li>
<li>tag, and</li>
<li>error</li>
</ol>
<!--kg-card-end: markdown--><p>Let&apos;s address each of these contexts.</p><!--kg-card-begin: html--><h3>The Index Context</h3><!--kg-card-end: html--><p>The official documentation appears to be missing a specific page discussing the index context but one thing is for sure, the index context, by its very nature is intended to display a list of posts.</p><figure class="kg-card kg-code-card"><pre><code class="language-handlebars">{{#foreach posts}}
&lt;article class=&quot;{{post_class}}&quot;&gt;
  &lt;h2 class=&quot;post-title&quot;&gt;&lt;a href=&quot;{{url}}&quot;&gt;{{title}}&lt;/a&gt;&lt;/h2&gt;
  &lt;p&gt;{{excerpt words=&quot;26&quot;}} &lt;a class=&quot;read-more&quot; href=&quot;{{url}}&quot;&gt;&amp;raquo;&lt;/a&gt;&lt;/p&gt;
  &lt;p class=&quot;post-footer&quot;&gt;
    Posted by {{primary_author}} {{tags prefix=&quot; on &quot;}} at &lt;time class=&quot;post-date&quot; datetime=&quot;{{date format=&apos;YYYY-MM-DD&apos;}}&quot;&gt;{{date format=&quot;DD MMMM YYYY&quot;}}&lt;/time&gt;
  &lt;/p&gt;
&lt;/article&gt;
{{/foreach}}</code></pre><figcaption>A simple example demonstrating a loop through all the posts in the current context.</figcaption></figure><p>In the above example, we loop through an array of posts. The posts that are included in this array are of course, determined via the route.</p><p>For example, when viewing a channel route (discussed earlier), the filters you specified on that route will remove certain posts from the posts array.</p><p>By default, you would find this loop on the <code>index.hbs</code> template but could also exist in any number of optional collection templates such as <code>tag.hbs</code> and <code>author.hbs</code>.</p><p>Once inside a loop iteration, you&apos;re now inside a new context, the <code>post</code> context.</p><!--kg-card-begin: html--><h3>The Post Context</h3><!--kg-card-end: html--><p>When you have access to a single post (whether that be inside a posts loop iteration or on a route for a single post), you are in the <code>post</code> context.</p><p>As we saw in the previous code example, once inside a posts loop iteration, we can access the data of the post directly.</p><p>In the case of a single post template, we need to enter the post context using the <code>{{#post}}{{/post}}</code> block expression (we&apos;ll go more in detail into helpers in the next section).</p><p>The documentation does a good job of listing the available attributes so I&apos;ll simply <a href="https://ghost.org/docs/themes/contexts/post/">link you to the page on the post context here</a> but a few obvious examples would be <code>title</code>, <code>feature_image</code> and of course, <code>content</code>.</p><p>Using Handlebars syntax, we simply open up the <code>post</code> context and then pull whatever attribute values we wish off of that post.</p><pre><code class="language-handlebars">{{#post}}

&lt;article class=&quot;{{post_class}}&quot;&gt;
  &lt;header class=&quot;post-header&quot;&gt;
    &lt;h1 class=&quot;post-title&quot;&gt;{{title}}&lt;/h1&gt;
    &lt;section class=&quot;post-meta&quot;&gt;
      &lt;time class=&quot;post-date&quot; datetime=&quot;{{date format=&apos;YYYY-MM-DD&apos;}}&quot;&gt;
        {{date format=&quot;DD MMMM YYYY&quot;}}
      &lt;/time&gt;
      {{tags prefix=&quot; on &quot;}}
    &lt;/section&gt;
  &lt;/header&gt;
  &lt;section class=&quot;post-content&quot;&gt;
    {{content}}
  &lt;/section&gt;
&lt;/article&gt;

{{/post}}</code></pre><p>If for whatever reason, we didn&apos;t want to open up the post context via the <code>{{#post}}{{/post}}</code> block expression, we could access an attribute (or two) outside of the block expression by placing <code>post.</code> in front of the attribute like such:</p><pre><code class="language-html">&lt;article class=&quot;{{post_class}}&quot;&gt;
  &lt;header class=&quot;post-header&quot;&gt;
    &lt;h1 class=&quot;post-title&quot;&gt;{{post.title}}&lt;/h1&gt;
  &lt;/header&gt;
  &lt;section class=&quot;post-content&quot;&gt;
    {{post.excerpt}}
  &lt;/section&gt;
&lt;/article&gt;</code></pre><p>These concepts extend to the other contexts of page, author, tag and error.</p><!--kg-card-begin: html--><h3>The Page Context</h3><!--kg-card-end: html--><p>The page context is virtually identical to the post context. It is accessed using the same block expression of <code>{{#post}}{{/post}}</code> and has many of the same attributes.</p><p>The only difference between a post and a page is that a page exists outside of a loop-able collection and may be served on different templates (as we saw earlier).</p><!--kg-card-begin: html--><h3>The Author Context</h3><!--kg-card-end: html--><p>When viewing the index page of a particular author, you have access to the Author context.</p><p>Attributes of the particular author can be accessed via the <code>{{#author}}{{/author}}</code> block expression. These include attributes like <code>name</code> (of the author), <code>location</code> and <code>website</code>. </p><p>The full list of attributes can be found <a href="https://ghost.org/docs/themes/contexts/author/">on the official documentation</a>.</p><!--kg-card-begin: html--><h3>The Tag Context</h3><!--kg-card-end: html--><p>Similar to the Author context, the Tag context is available on the index page for a particular tag.</p><p>Attributes of the particular tag can be accessed via the <code>{{#tag}}{{/tag}}</code> block expression. These include attributes like <code>name</code> (of the tag), <code>slug</code> and <code>feature_image</code>.</p><p>The full list of attributes can be found <a href="https://ghost.org/docs/themes/contexts/tag">on the official documentation</a>.</p><!--kg-card-begin: html--><h3>The Error Context</h3><!--kg-card-end: html--><p>When coding error templates, you have access to the Error context.</p><p>Access to the attributes of the Error context do not require any block expression. </p><p>These attributes are things like</p><ul><li><code>{{statusCode}}</code> &#x2014; The HTTP status code of the error</li><li><code>{{message}}</code> &#x2014; The error message</li><li><code>{{errorDetails}}</code> &#x2014; An object containing further error details</li></ul><h2 id="coding-with-helpers">Coding with Helpers</h2><p>We seen examples throughout this article already but now let&apos;s go deeper into the syntax for coding Ghost themes and the &apos;helpers&apos; that are available to us.</p><!--kg-card-begin: html--><h3>Handlebars</h3><!--kg-card-end: html--><p>As mentioned, Ghost themes are coded using the popular templating language of Handlebars. </p><p>Handlebars comes with its own syntax that can be applied to any website so I won&apos;t go into too much detail regarding the syntax of Handlebars specifically but as it relates to Ghost theme development, here are some basics.</p><!--kg-card-begin: html--><h4>Simple Expressions</h4>
<!--kg-card-end: html--><p>Simple expressions are the basic way of outputting data to the front-end (the core function of any templating language) and look like this <code>{{ attribute }}</code>.</p><p>If in a context where you have access to an attribute by the name of <code>name</code> for instance, you can simply render the value of <code>name</code> via the simple expression <code>{{name}}</code>.</p><p>Simple right?</p><!--kg-card-begin: html--><h4>Block Helpers</h4><!--kg-card-end: html--><p>As we&apos;ve seen in previous examples, we can enter the <code>post</code> context via the block expression <code>{{#post}}{{/post}}</code> and this works for other contexts like <code>author</code> and <code>tag</code>. </p><p>Inside, you can use a simple expression to access the attributes within that context.</p><!--kg-card-begin: html--><h4>Conditionals</h4><!--kg-card-end: html--><p>Conditionals are used to execute certain code but only if a certain condition is met.</p><p>This is a basic concept in all templating/programming language and in Handlebars, it looks like this: <code>{{#if condition}}{{/if}}</code>.</p><p>For example</p><pre><code class="language-handlebars">{{#post}}
  {{#if featured}}
   ...do something if the post is featured...
  {{/if}}
{{/post}}</code></pre><p>Alternatively, you could use an <code>unless</code> statement as well (the opposite of &apos;if&apos;).</p><pre><code class="language-handlebars">{{#unless featured}}
  ...do something...
{{/unless}}</code></pre><!--kg-card-begin: html--><h4>Partials</h4><!--kg-card-end: html--><p>Partials are a way of sectioning off chunks of reusable template code. </p><p>This is particularly handy in Ghost development for things like post previews which may exist inside multiple different loops.</p><p>In Ghost, we store partials in the <code>/partials/</code> directory and call them by their file name (minus the <code>.hbs</code>).</p><p>A common example in Ghost theme development is - as mentioned - post previews.</p><p>For this particular example, if we had a file called <code>post-card.hbs</code> in our partials folder, we could bring in that code to our template via the code <code>{{&gt; &quot;post-card&quot;}}</code>.</p><p>The partial code then gets loaded into the location where it called and has access to the same context.</p><!--kg-card-begin: html--><h3>Ghost-specific syntax</h3><!--kg-card-end: html--><p>Now that we&apos;ve covered some the basics of Handlebars that apply to Ghost theme development, let&apos;s look at some of the syntax specific to Ghost themes.</p><!--kg-card-begin: html--><h4>Loops</h4><!--kg-card-end: html--><p>Loops in Ghost are performed via the special helper <code>{{#foreach}}{{/foreach}}</code>. This expression gives us immediate access to context of the item we&apos;re looping over.</p><p>For instance, inside each iteration of <code>{{#foreach posts}}{{/foreach}}</code> we have access to the <code>post</code> context. With these foreach loops, there is no need to use the <code>{{#post}}{{/post}}</code> helper to gain access to the context.</p><p>Inside a <code>{{#foreach}}</code> block, we also have access to a number of data variables, the list of which can be viewed <a href="https://ghost.org/docs/themes/helpers/foreach/">on the official documentation</a>. </p><!--kg-card-begin: html--><h4>Context verification</h4><!--kg-card-end: html--><p>The <code>{{#is}}</code> helper allows you to check whether a certain context is available on the current route.</p><p>It takes a single parameter of a comma-separated list containing the contexts to check for. Similar to the <code>has</code> helper, the comma behaves as an <code>or</code> statement, with <code>and</code> being achieved by nesting helpers.</p><pre><code class="language-handlebars">{{#is &quot;post, page&quot;}}
   ... content to render if the current route represents a post or a page ...
{{/is}}</code></pre><p>The list of contexts that are supported by this helper can be found on <a href="https://ghost.org/docs/themes/helpers/is/">the official documentation</a>.</p><!--kg-card-begin: html--><h4>More advanced conditionals</h4><!--kg-card-end: html--><p>The <code>{{#has}}</code> helper is a special kind of conditional in Ghost themes.</p><p>It supports four different types of &#x201C;questions&#x201D;:</p><ul><li>Post <strong>has</strong> tag or author</li><li>Context <strong>has</strong> slug or id</li><li>Context <strong>has</strong> any or all properties set</li><li>Foreach loop number or index</li></ul><p>With the &apos;questions&apos; asked by providing attribute-value pairs, e.g. <code>tag=&quot;tag name&quot;</code>.</p><p>A few examples of each type can be found <a href="https://ghost.org/docs/themes/helpers/has/">on the official documentation</a> but for the most part, the &apos;has&apos; helper is just a way to perform more complex conditionals than what is possible with <code>{{#if}}</code> helper.</p><!--kg-card-begin: html--><h4>Custom queries</h4><!--kg-card-end: html--><p><code>{{#get}}</code> is a special block helper that allows you to query data from your Ghost backend from wherever you are in the theme.</p><p>Let&apos;s say you wanted to access posts from within a context that does not have access to posts usually.</p><p>In that case, you can use <code>{{#get}}</code> to open up a query and place your code within it like such:</p><pre><code class="language-handlebars">{{#get &quot;posts&quot;}}
    {{#foreach posts}}
        {{title}}
    {{/foreach}}
{{/get}}</code></pre><p>You can also use parameters to limit the data requested which is discussed more in-depth <a href="https://ghost.org/docs/themes/helpers/get/">on the official documentation</a>.</p><!--kg-card-begin: html--><h4>Data helpers</h4><!--kg-card-end: html--><p>In addition to the data within a specific context, there are also some global data helpers. These helpers are sometimes prefixed with the @ symbol and can be used on any template.</p><p>There&apos;s also the <code>navigation</code> helper which I&apos;ll cover more in-depth shortly.</p><!--kg-card-begin: html--><h4>Utility helpers</h4><!--kg-card-end: html--><p>Utility helpers are used to perform minor, optional tasks.</p><p>For example, the <code>{{body_class}}</code> helper outputs different classes on different pages, depending on what context the page belongs to.</p><p>Also under this category are helpers like <code>pagination</code> and <code>reading_time</code> (which automatically renders an estimated reading time for a post).</p><p>A full listing of all of the data and utility helpers can be found <a href="https://ghost.org/docs/themes/helpers/">here on the official documentation</a>.</p><h4 id="special-mention-the-navigation-helper">Special mention: the &apos;navigation&apos; helper</h4><p>In Ghost, the keyword <code>navigation</code> can appear in multiple ways.</p><p>Firstly, when placed in a foreach loop like such <code>{{#foreach navigation}}{{/navigation}}</code>, it allows for looping through a list of menu items as you would expect.</p><p>But, when used alone <code>{{navigation}}</code> will automatically call a partial by the same name or if the partial doesn&apos;t exist, it will automatically generate some default HTML for your site navigation.</p><p>You can also use the navigation attribute on the <code>@site</code> object to check if there are any navigation items at all.</p><p>For a full run-down on this special helper, <a href="https://ghost.org/docs/themes/helpers/navigation/">visit the official documentation</a>.</p><h4 id="special-mention-the-default-helper">Special mention: the &apos;default&apos; helper</h4><p>Finally, it&apos;s important to note that, for the code in the <code>default.hbs</code> template to actually be included in any given template, you will need to include the special expression <code>{{!&lt; default}}</code>.</p><p>All you have to do is place this tag at the top of your template file. </p><p>Any template without this tag will simply be rendered without the surrounding <code>default.hbs</code> code included.</p><h2 id="conclusion">Conclusion</h2><p>In this guide, we&apos;ve broken down Ghost themes into the main concepts I feel are important to understand in order to confidently build and edit Ghost themes.</p><p>There are of course, some things I have skipped over here like how assets are managed/served in Ghost as well as Ghost&apos;s membership capabilities (which I&apos;m sure are very powerful but won&apos;t apply to most users).</p><p>Of course, the <a href="https://ghost.org/docs/themes/">official Ghost documentation</a> is the place to go for any of the smaller details but I hope that this guide has helped you get your head around Ghost theme development as much as it has helped me by writing it.</p><p>If you&apos;d like to watch a visual training on Ghost with actual demonstrations of how to build out a Ghost theme, <a href="https://skl.sh/3aFWINn">check out my Skillshare class</a> to which this article is a compliment to.</p><p>Until next time,</p><p>Chris</p>]]></content:encoded></item><item><title><![CDATA[How to Build a Fully Custom Shopify Store using the Storefront API]]></title><description><![CDATA[For most merchants, the limitations of the Online Store sales channel are not an issue but for those that need a more custom setup, it may require them to set up a store outside of Shopify's servers.]]></description><link>https://www.christhefreelancer.com/shopify-storefront-api/</link><guid isPermaLink="false">60ac362efcfa4a6b50182a73</guid><category><![CDATA[Work]]></category><category><![CDATA[Shopify Development]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Wed, 25 Mar 2020 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/Shopify-Storefront-API-App-Development-Article-Cover.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.christhefreelancer.com/content/images/2021/05/Shopify-Storefront-API-App-Development-Article-Cover.png" alt="How to Build a Fully Custom Shopify Store using the Storefront API"><p>Chances are, if you&apos;ve ever built a store on Shopify, you&apos;ve used at <em>theme.</em></p><p>A <em>theme </em>is what most merchants use to build and/or customise their storefront when using the <em>Online Store </em>sales channel in Shopify.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/Shopify-Store-Sales-Channel-Menu.png" class="kg-image" alt="How to Build a Fully Custom Shopify Store using the Storefront API" loading="lazy" width="480" height="702"><figcaption>As you can see, the &apos;Online Store&apos; sales channel is not the only sales channel available</figcaption></figure><p>You may not be aware that Shopify is much much more than just a place to build an online store. Shopify is actually a fully featured eCommerce platform that allows you to sell in many different sales channels whether it be through POS, through existing online platforms or through your own custom storefront using the Storefront API.</p><p>When you click on the menu item for <em>Online Store </em>you may have noticed that the link is sitting underneath the heading SALES CHANNELS alongside a range of other possible options such as <em>Point of Sale, Facebook Shop </em>and <em>Instagram.</em></p><p>The <em>Storefront API </em>is yet another sales channel that you can use to present your store data (including products, pages and blog posts) in an infinite number of ways.</p><p>One of the ways you can utilise this API is to create your own fully-custom storefront.</p><h2 id="why-use-the-storefront-api-over-a-theme">Why use the Storefront API (over a theme)?</h2><p>Good question!</p><p>For most merchants, the limitations of the <em>Online Store </em>sales channel are not an issue but for those that need a more custom setup, it may require them to set up a store outside of Shopify&apos;s servers.</p><p>Using <a href="https://shopify.dev/docs/storefront-api" rel="noopener">the Storefront API</a>, you can access all the data that would normally be presented using a Shopify theme and use it however you like.</p><p>The possibilities of how you use that data are virtually endless but in this article, I&apos;m gonna focus on using the Storefront API to create your own custom storefront.</p><h2 id="the-storefront-api-how-it-works">The Storefront API: How it works</h2><p>Before we jump into the steps, I think it&apos;s important to provide a quick overview of how the Storefront API operates.</p><p>Firstly, the Storefront API <em><strong>can only be accessed using GraphQL.</strong></em></p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/REST-vs-GraphQL.jpg" class="kg-image" alt="How to Build a Fully Custom Shopify Store using the Storefront API" loading="lazy" width="800" height="400" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/REST-vs-GraphQL.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/REST-vs-GraphQL.jpg 800w"><figcaption>A GraphQL API has just one endpoint and accepts a &apos;query&apos; which provides full customisation of what gets returned</figcaption></figure><p>If you&apos;ve done work with APIs in the past, it&apos;s likely that you&apos;ve used the REST protocol. Using REST, you would simply send a GET request to a specific endpoint (url) to retrieve a certain set of data. Or, if your intention was to manipulate data on the server side, you would use a POST request.</p><p>In <a href="https://graphql.org/" rel="noopener">GraphQL</a> however, every request you send to an API will be a POST request because in GraphQL, you send a &apos;<em>query</em>&apos; to a single endpoint and that query determines what data you receive back instead of the specific endpoint.</p><p>It might sound a little tricky but once you get your head around GraphQL, you&apos;ll realise it makes a lot of sense to have a single endpoint and have full control over what data is returned in every request.</p><p>For example, let&apos;s say you just want to retrieve the name of your shop. Well, if the Storefront API was a REST API, you&apos;d have to request the whole Shop object (which has 9 properties) instead of just the one property you needed, shop.name.</p><p>I highly recommend that you head to <a href="https://shopify.dev/docs/storefront-api/getting-started" rel="noopener">the &apos;Getting Started&apos; page</a> for the Storefront API and view the examples.</p><p>Here&apos;s a basic one:</p><pre><code class="language-GraphQL">{
    shop { 
    	name 
        primaryDomain { 
        	url 
            host 
        } 
    } 
}</code></pre><p>The above code will return the name of your shop as well as url and host of the primary domain.</p><p>Again, I highly recommend that you head to <a href="https://shopify.dev/docs/storefront-api/getting-started" rel="noopener">the API&apos;s &apos;Getting Started&apos; page</a> and read up on GraphQL in general as you will need to learn it in order to leverage the Storefront API.</p><h2 id="step-1-generate-an-access-token">Step 1: Generate an access token</h2><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/Storefront-Access-Token.gif" class="kg-image" alt="How to Build a Fully Custom Shopify Store using the Storefront API" loading="lazy" width="1000" height="449"><figcaption>Apps &gt; Manage private apps &gt; Create a new private app &gt; Check box for Storefront API</figcaption></figure><p>In order to access your store&apos;s data through the API, you&apos;ll need to create a private app inside your Shopify store and click on the checkbox to generate a Storefront API access token.</p><p>The process looks like this:</p><ol><li>Click on &apos;<strong>Apps</strong>&apos; in your admin sidebar</li><li>Click on &apos;<strong>Manage private apps</strong>&apos;</li><li>Click on the button for &apos;<strong>Create a new private app</strong>&apos;</li><li>Add in an app name and email (the name can simply be &apos;Storefront API&apos;)</li><li>Check the checkbox for &apos;<strong>Allow this app to access your storefront data using the Storefront API</strong>&apos;</li><li>Click &apos;<strong>Save</strong>&apos;</li></ol><p>After the app is created scroll down until you see the Storefront Access Token available in the last field. This token is all you need to start using the API.</p><h2 id="step-2-make-your-first-request">Step 2: Make your first request</h2><p>Now that you have your Storefront API access token, you can start making requests to the API.</p><p>Given that we&apos;re creating a custom Shopify storefront, we can be quite sure that we will want to retrieve data like <a href="https://shopify.dev/docs/storefront-api/reference/object/collection" rel="noopener">collections</a>, <a href="https://shopify.dev/docs/storefront-api/reference/object/product" rel="noopener">products</a> and variants as well as be able to <a href="https://shopify.dev/docs/storefront-api/reference/object/checkout/" rel="noopener">create a cart and submit it to Shopify</a>.</p><p>To see what data is available, you can head to <a href="https://shopify.dev/docs/storefront-api/reference" rel="noopener">the official API documentation on Shopify&apos;s website </a>but let&apos;s start by writing a very basic query.</p><pre><code class="language-GraphQL">{
    shop {
    	name 
    }
}</code></pre><p>As you can see, this query is quite minimal. All it does is access the <code>shop</code> object on the query root and then the <code>name</code> property within it.</p><p>The more challenging part in this case is the other settings in the request such as the url and the headers.</p><p>If you&apos;d like to see a run-through using Javascript, <a href="https://skl.sh/2AETO9r" rel="noopener">checkout lesson 10 on my Skillshare class &quot;Shopify Theme Programming: Liquid, JSON and Javascript&quot;</a>.</p><p>The below example (taken from that tutorial) takes the query above and loads it into the JS function <code>apiCall()</code>.</p><pre><code class="language-Javascript">const query = `{ shop { name } }`; 
function apiCall(query) { 
	return fetch(&apos;[Your Shopify store address]/api/graphql.json&apos;, 
    	{ method: &apos;POST&apos;, 
          headers: { &apos;Content-Type&apos;: &apos;application/graphql&apos;, 
                     &quot;Access-Control-Origin&quot;: &quot;*&quot;, 
                     &apos;X-Shopify-Storefront-Access-Token&apos;: &quot;[Your storefront access token]&quot; 
                   },
          &quot;body&quot;: query })
          .then(response =&gt;; response.json()); } 
apiCall(query).then(response =&gt; { console.log(response) });</code></pre><p>Go ahead and replace <code>[Your Shopify store address]</code> and <code>[Your storefront access token]</code> with the url and Storefront API key of your store, head to any page within your store, throw the code into the JS console of your browser and hit enter.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/Storefront-API-Response.png" class="kg-image" alt="How to Build a Fully Custom Shopify Store using the Storefront API" loading="lazy" width="768" height="182" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Storefront-API-Response.png 600w, https://www.christhefreelancer.com/content/images/2021/06/Storefront-API-Response.png 768w"><figcaption>When using the details of my own store, I&apos;m able to retrieve an object with shop.name inside</figcaption></figure><p>Congrats! You&apos;ve just made your first request to the Storefront API!</p><h2 id="step-3-build-your-custom-storefront">Step 3: Build your custom storefront</h2><p>Now that you&apos;ve successfully made your first request to the API, it&apos;s time to take that data that you&apos;ve learned to retrieve and start using it in a real world way.</p><p>Unfortunately, building a fully featured web app is a huge topic that I won&apos;t cover specifically in this article but what I will do is show you how to get started building with no framework or server, just Vanilla HTML, CSS and JS.</p><p>What I&apos;ve done is create a barebones custom storefront app (using just jQuery) and uploaded the code to Github at <a href="https://github.com/christopherdodd/shopify-storefront-api-example" rel="noopener">github.com/christopherdodd/shopify-storefront-api-example</a>.</p><p>In order to &quot;run&quot; the app, all you need to do is drag the <code>index.html</code> file directly into your browser.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Blank-App-1080x491.png" class="kg-image" alt="How to Build a Fully Custom Shopify Store using the Storefront API" loading="lazy" width="1080" height="491" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Blank-App-1080x491.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Blank-App-1080x491.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Blank-App-1080x491.png 1080w"></figure><p>As you can see, very barebones.</p><p>But never fear because next, we&apos;re gonna update the <code>app.js</code> file with a function that we will use to render the first 20 products of our store onto the page.</p><p>Currently our <code>app.js</code> looks like this.</p><pre><code class="language-Javascript">// This is our apiCall function that is pre-configured to take just the // one argument (the query) and return a response from the API function 
apiCall(query) { 
	return fetch(&apos;[Insert store address here]/api/graphql.json&apos;, 
    	{ 
            method: &apos;POST&apos;, 
            headers: { 
                &apos;Content-Type&apos;: &apos;application/graphql&apos;, 
                &apos;X-Shopify-Storefront-Access-Token&apos;: &quot;[Insert your Storefront API access token here]&quot; 
            }, 
            &quot;body&quot;: query 
    })
    .then(response =&gt; response.json()); 
} 

// Here is where we will take the response and render it to the page 
$(document).ready(function() { const $app = $(&apos;#app&apos;); });</code></pre><h3 id="request-data-using-queries">Request data using Queries</h3><p>What we&apos;re going to do now is add a function after the <code>apiCall</code> function which we&apos;ll use to bundle the request settings with a specific query in order to return a response from the Storefront API.</p><p>The function looks like this:</p><pre><code class="language-Javascript">function getProducts() { 
	const query = `{ products(first: 20) { edges { node { title description images(first: 1) { edges { node { altText transformedSrc(maxWidth: 400, maxHeight: 400) } } } } } } }`; 
    return apiCall(query); 
}</code></pre><p>Next, we&apos;ll invoke this function and use the response we get back from the API to display a list of products from our store along with a product image and description.</p><pre><code class="language-Javascript">$(document).ready(function() { 
	const $app = $(&apos;#app&apos;); 
    getProducts().then(response =&gt; { 
    	$app.append(&quot;&lt;div class=&apos;products&apos;&gt;&lt;/div&gt;&quot;); 
        const $products = $(&apos;.products&apos;);
        response.data.products.edges.forEach(product =&gt; { 
        	const template = `&lt;div class=&quot;product&quot;&gt; &lt;h2&gt;${product.node.title}&lt;/h2&gt; &lt;img alt=&quot;${product.node.images.edges[0].node.altText}&quot; src=&quot;${product.node.images.edges[0].node.transformedSrc}&quot;&gt; &lt;p&gt;${product.node.description}&lt;/p&gt; &lt;/div&gt;`; 
          	$products.append(template); 
         }); 
     }); 
 }); </code></pre><p>The <code>getProducts()</code> function returns a promise which we then chain a <code>.then()</code> method on to handle the response from the server.</p><p>It&apos;s recommended that you insert a <code>console.log(response);</code> somewhere within the <code>.then()</code> method to actually see the data that is returned from the store. If there are any errors, you can check the &apos;Network&apos; tab and the &apos;Console&apos; tab of your browser&apos;s devTools to inspect and debug.</p><p>Otherwise, the above should have loaded the first 20 products of your store onto the web page and be looking a little something like this:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Shopify-Storefront-API-App-Products-1080x610.png" class="kg-image" alt="How to Build a Fully Custom Shopify Store using the Storefront API" loading="lazy" width="1080" height="610" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Shopify-Storefront-API-App-Products-1080x610.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Shopify-Storefront-API-App-Products-1080x610.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Shopify-Storefront-API-App-Products-1080x610.png 1080w"></figure><p>Congrats! You&apos;ve now:</p><ol><li>Authenticated your request using the access token</li><li>Constructed a GraphQL query and sent it to your store, and then</li><li>Taken the response of that API call and rendered the data to your page using Javascript</li></ol><p>I know this is super basic but the idea is that you continue to write queries, put them into functions and continuing rendering more content to the page.</p><h3 id="manipulate-store-data-using-mutations">Manipulate store data using Mutations</h3><p>Most of the time, when working with the Storefront API, you&apos;ll simply be accessing data from your store via queries however there are a few instances where you might want to run a &apos;mutation&apos;.</p><p>A mutation is like a query except that you use it manipulate data instead of retrieving it.</p><p>Unlike <a href="https://shopify.dev/docs/admin-api/graphql/reference" rel="noopener">the Admin API</a>, the Storefront API is lightly authenticated and doesn&apos;t provide many options for manipulating store data. It&apos;s basically only the checkout and the customer objects that you can manipulate but I still wanted to mention this as it&apos;s an important part of any GraphQL API.</p><p>Here is an example of a mutation you might want to run as part of your custom storefront app.</p><pre><code class="language-Javascript">function logInUser(email, password) { 
	const mutation = `mutation { customerAccessTokenCreate(input: {email: &quot;${email}&quot;, password: &quot;${password}&quot;}) { customerAccessToken { accessToken, expiresAt }, customerUserErrors { code } } }`;
    return apiCall(mutation); 
}</code></pre><p>As you can read from the name of the function, you can use this to log in a customer via an &apos;input object&apos; with the customer&apos;s email and password that is sent to the API (via <code>customerAccessTokenCreate</code> on line 3) . The API will then return back the token (line 5) as well as any errors (line 9).</p><h3 id="my-custom-storefront">My custom storefront</h3><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/Shopify-Custom-Storefront-1080x485.png" class="kg-image" alt="How to Build a Fully Custom Shopify Store using the Storefront API" loading="lazy" width="1080" height="485" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Shopify-Custom-Storefront-1080x485.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Shopify-Custom-Storefront-1080x485.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Shopify-Custom-Storefront-1080x485.png 1080w"><figcaption>A quick look at the homepage of my custom Shopify storefront</figcaption></figure><p>My custom storefront project is created using a <a href="https://vuejs.org/" rel="noopener">Vue.js</a> and <a href="https://expressjs.com/" rel="noopener">Express</a> tech stack.</p><p>The app can be accessed at the address <a href="http://shopify-custom-storefront.herokuapp.com/" rel="noopener">shopify-custom-storefront.herokuapp.com</a> and allows anyone to connect their own store as long as they provide a Storefront API access token (as demonstrated above).</p><p>For your own app, you need to decide what framework you feel most comfortable with and go with that.</p><p>While this article has covered the basic steps, I wouldn&apos;t recommend using jQuery to build full-scale web apps. Instead, I would recommend that you use an app development framework like <a href="https://rubyonrails.org/" rel="noopener">Ruby on Rails</a>, <a href="https://vuejs.org/" rel="noopener">Vue</a>, <a href="https://reactjs.org/" rel="noopener">React</a> or whatever else your most comfortable with (it doesn&apos;t have to be Javascript framework).</p><p>In terms of leveraging the Storefront API though, the main thing you need to understand is the basics of how it works. Study <a href="https://shopify.dev/docs/storefront-api/reference" rel="noopener">the documentation on Shopify&apos;s website</a> and experiment with retrieving different bits of store data. Get comfortable with writing GraphQL queries and observe what comes back.</p><p>The possibilities of how you utilise the data are endless.</p><p>Happy coding and I&#x2019;ll catch you next time.</p><p>Chris</p>]]></content:encoded></item><item><title><![CDATA[How to Build a Shopify App - The Easy Way]]></title><description><![CDATA[When you realise that a Shopify App is just like any web app, you start to understand that a Shopify App can be written in several different programming languages across many different stacks and that's when you realise that the skills you would use to create any web app are the same for building a Shopify app.]]></description><link>https://www.christhefreelancer.com/build-a-shopify-app/</link><guid isPermaLink="false">60ac3597fcfa4a6b50182a67</guid><category><![CDATA[Work]]></category><category><![CDATA[Shopify Development]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Thu, 02 Jan 2020 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/Shopify-App-Article.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.christhefreelancer.com/content/images/2021/05/Shopify-App-Article.png" alt="How to Build a Shopify App - The Easy Way"><p>When I first started researching how to create Shopify apps, I stumbled across many articles and YouTube videos, all of which had a completely different way of doing it.</p><p>At this point, I didn&apos;t really understand what a Shopify app even was!</p><p>I thought that a Shopify app was somehow native to the Shopify platform and written in it&apos;s own language, similar to how it is with a desktop app or a phone app.</p><p>Turns out, I was dead wrong.</p><blockquote>A Shopify App is just a web app that connects to a Shopify store.</blockquote><p>That&apos;s it.</p><p>When you realise that a Shopify App is just like any web app, you start to understand that a Shopify App can be written in several different programming languages across many different stacks and that&apos;s when you realise that the skills you would use to create any web app are the same for building a Shopify app.</p><p>The difference between a Shopify app and a regular web app is really the use of <a href="https://help.shopify.com/en/api/graphql-admin-api" rel="noopener">Shopify&apos;s Admin API</a> and that&apos;s what we&apos;ll be focusing on in the following article.</p><h2 id="what-exactly-is-a-shopify-app">What exactly is a <em>Shopify App?</em></h2><p>Given that a Shopify app is simply a web app that connects to a Shopify store, we can now see why there are so many different tutorials on creating apps using many different programming languages and frameworks.</p><p>In this tutorial, I&apos;ll be using <a href="https://nodejs.org/en/" rel="noopener">Node.js</a> with <a href="https://koajs.com/" rel="noopener">Koa</a> but regardless of what tech stack you want to use, the main lesson I want you to take from this article is the understanding of what actually makes an app a <em>Shopify app</em>.</p><p>The following are the 3 important points to keep in mind when creating your first app.</p><h3 id="1-shopify-apps-must-be-authorised-by-a-store">1. Shopify Apps must be authorised by a store</h3><p>Before your app can be deemed a &apos;<em>Shopify App</em>&apos;, it will need to be registered and authorised.</p><p>This is set up in the dashboard of <a href="https://partners.shopify.com/" rel="noopener">your partners account</a>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Create-a-Shopify-app-in-your-Partner-Account.png" class="kg-image" alt="How to Build a Shopify App - The Easy Way" loading="lazy" width="1456" height="1754" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Create-a-Shopify-app-in-your-Partner-Account.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Create-a-Shopify-app-in-your-Partner-Account.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Create-a-Shopify-app-in-your-Partner-Account.png 1456w" sizes="(min-width: 1200px) 1200px"></figure><p>You can think of this almost like &apos;<em>registering</em>&apos; your app.</p><p>Despite the wording, this process doesn&apos;t actually create any application. Instead, it simply lists the app in your partner account and provides you with an API key and API secret key to include in your app for authorisation.</p><p>In order to make this work, you&apos;ll need a public address for your app.</p><h3 id="2-shopify-apps-must-be-hosted-somewhere">2. Shopify Apps must be hosted somewhere</h3><p>When you create an app in your Shopify Partners account, you might be forgiven for thinking that Shopify will host your app for you - nup!</p><p>Instead, you&apos;ll need a public address for your app to be accessed and then you&apos;ll submit that to Shopify via the interface pictured above.</p><p>Once you&apos;re ready to deploy your app, you can use a service like <a href="https://www.heroku.com/" rel="noopener">Heroku</a> to host it but during development, it is essential that you can run your app locally.</p><p>So how are you able to provide a public address to Shopify?</p><p>The answer is to use a tunnelling service and the go-to solution is called <a href="https://ngrok.com/" rel="noopener">ngrok</a>.</p><p>Ngrok is a simple application that exposes a localhost address to a public address on the internet.</p><p>Here&apos;s what it looks like:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/ngrok-example-1080x603.png" class="kg-image" alt="How to Build a Shopify App - The Easy Way" loading="lazy" width="1080" height="603" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/ngrok-example-1080x603.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/ngrok-example-1080x603.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/ngrok-example-1080x603.png 1080w"><figcaption>On the left: a simple node server is running on localhost. On the right: ngrok is exposing that localhost address to a tunnelling address.</figcaption></figure><p>As mentioned, this is just for while developing your app. Once the app is ready to <em>go live, </em>you&apos;ll want to deploy it to a proper host and update the address of the app in your partners account.</p><h3 id="3-shopify-apps-must-use-a-shopify-api">3. Shopify Apps must use a Shopify API</h3><p>The third and final concept that&apos;s important to understand when creating Shopify apps is the use of the right Shopify API. Usually, this API will be the Admin API.</p><p><a href="https://help.shopify.com/en/api/graphql-admin-api" rel="noopener">The <strong>Admin API</strong></a> allows you to both read and write data from your store. Essentially, it provides an interface to all the functions within your store admin.</p><p>There is however one other API worth mentioning, which is <a href="https://help.shopify.com/en/api/storefront-api" rel="noopener">the <strong>Storefront API</strong></a><em><strong>.</strong></em></p><p>As is written <a href="https://help.shopify.com/en/api/storefront-api" rel="noopener">on Shopify&apos;s website</a>:</p><blockquote>In contrast with the <a href="https://help.shopify.com/en/api/reference" rel="noopener">Admin API</a>, which enables developers to build apps around merchant-facing actions (such as shipping and fulfillment), the Storefront API focuses on shopping experiences seen from the customer perspective.</blockquote><p>In other words, the Storefront API provides access to data that&apos;s already publicly available to your storefront whereas the Admin API gives you access to all the data and functions that you as a store admin would have.</p><p>Most of the time, when you hear someone talk about a &apos;<em>Shopify App</em>&apos;, they are referring to an app that you access through your admin and therefore uses the Admin API.</p><p>The Storefront API on the other hand, is more for creating custom storefronts <a href="http://shopify-custom-storefront.herokuapp.com/" rel="noopener">like the one I created here</a>.</p><p>Inevitably, you will need to use a Shopify API in your application. Otherwise, can it really be considered a &apos;<em>Shopify App&apos;?</em></p><h2 id="creating-your-first-shopify-app">Creating your first Shopify App</h2><p>Now that we&apos;ve established a broad understanding of how Shopify apps work, let&apos;s go ahead and create our first app.</p><h3 id="1-choose-a-tech-stack">1. Choose a tech stack</h3><p>As mentioned, Shopify apps are self-hosted and the APIs are programming-language agnostic (meaning it doesn&apos;t matter what language you use). Therefore, you&apos;ll need to make a decision on what tech stack to use.</p><p>In my opinion, the best two options for your choice of programming languages are either</p><ul><li>Javascript, or</li><li>Ruby</li></ul><p>Why?</p><p>Well, these two languages are the ones that Shopify seems to support the most. They are the only two languages currently supported by the <a href="https://github.com/Shopify/shopify-app-cli/" rel="noopener">Shopify App Cli</a> and Shopify provides authentication packages for both Node.Js and Ruby.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/API-Tutorials-provided-by-Shopify-1080x395.png" class="kg-image" alt="How to Build a Shopify App - The Easy Way" loading="lazy" width="1080" height="395" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/API-Tutorials-provided-by-Shopify-1080x395.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/API-Tutorials-provided-by-Shopify-1080x395.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/API-Tutorials-provided-by-Shopify-1080x395.png 1080w"><figcaption>The current list of API Tutorials offered by Shopify</figcaption></figure><p>As you can see from the above screenshot, two of the tutorials currently offered by Shopify are using Node and one is using Ruby.</p><p>If any of these tutorials describe the exact tech stack you wish to use then <a href="https://help.shopify.com/en/api/tutorials" rel="noopener">feel free to check them out</a> and follow along. For me however, I wanted to use Node.js but with a <a href="https://vuejs.org/" rel="noopener">Vue.js</a> front-end (as apposed to React).</p><p>The trickiest part that I&apos;ve found with Shopify app development is the authentication part. That&apos;s why I decided to use <a href="https://koajs.com/" rel="noopener">Koa.js</a> as my Javascript framework of choice as Shopify provides a package called <a href="https://www.npmjs.com/package/@shopify/koa-shopify-auth" rel="noopener">shopify-koa-auth</a> and shows you how to use it in their tutorial, &quot;<a href="https://www.shopify.com.au/partners/blog/shopify-admin-authenticate-app" rel="noopener"><em>How to Authenticate Your Embedded App in the Shopify Admin</em></a>&quot;.</p><h3 id="2-authenticate-your-app">2. Authenticate your app</h3><p>Speaking of authentication, you&apos;ll need to make sure that you can successfully connect your app to a Shopify store before you can realistically start any development.</p><p>As mentioned, understanding how Shopify handles authentication can be tricky business which is why I decided to follow <a href="https://www.shopify.com.au/partners/blog/shopify-admin-authenticate-app" rel="noopener">this article on Shopify&apos;s Web Design and Development blog</a>. However, If you would like to go deep into understanding how authentication works at Shopify, they have <a href="https://help.shopify.com/en/api/getting-started/authentication" rel="noopener">a large section of their docs dedicated to it here</a>.</p><p>In my opinion, authenticating your app is not something you should spend a long time on as it&apos;s simply a one-time thing to get your app to work. That&apos;s why I stripped down my app into a basic framework I call <a href="https://github.com/christopherdodd/shopify-koa-server" rel="noopener">shopify-koa-server</a>.</p><p><a href="https://github.com/christopherdodd/shopify-koa-server" rel="noopener">shopify-koa-server</a> provides all the code necessary to spin up and authenticate a Shopify app. You just need to add your API credentials to the <code>.env</code> file to authenticate. Then, you can add a front-end framework that compiles to the <code>public</code> folder and add routes to your application in the <code>server</code> folder.</p><p>If you want to follow along, <a href="https://github.com/christopherdodd/shopify-koa-server" rel="noopener">download the repository from Github</a> and run <code>npm install</code> to install the dependancies.</p><p>In order to authenticate the app, you&apos;ll need</p><ol><li><strong>A tunnelling address</strong> to register in your Shopify partners account, and</li><li><strong>An API key and API secret key</strong> to submit in your request to authenticate</li></ol><h4 id="21-set-up-your-tunnelling-address">2.1. Set up your tunnelling address</h4><p>In order to &apos;create an app&apos; in your Shopify partners account and receive the necessary API keys, you&apos;ll need a public address for your application. As previously mentioned, an easy way to do this is with a tunnelling service like <a href="https://ngrok.com/" rel="noopener">ngrok</a>.</p><p>In the <code>server.js</code> file contained in the repo, the port has been set to 3000 which means that your app will run at <code>localhost:3000</code>. This is the address to which you want to create your tunnel to.</p><p>In order to run the tunnel, head to <a href="https://ngrok.com/" rel="noopener">ngrok&apos;s website,</a> download the application and then run the application from your command-line tool using the command <code>ngrok http 3000</code>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Running-ngrok.png" class="kg-image" alt="How to Build a Shopify App - The Easy Way" loading="lazy" width="1200" height="516" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Running-ngrok.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Running-ngrok.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Running-ngrok.png 1200w" sizes="(min-width: 1200px) 1200px"></figure><p>As you can see from the above screenshot, ngrok has created two tunnelling addresses to <code>localhost:3000</code>, one is using the <code>http</code> protocol and the other is using the secure equivalent, <code>https</code>. In the next step when you register your app in your Shopify Partners dashboard, you&apos;ll copy across the second (https) ngrok address.</p><p>Make sure that you keep this window open during development and when you&apos;re done, make sure to end the session (using Ctrl+C on Mac) before closing.</p><p>Note that the forwarding address is only valid while the app is running. Each time you restart the session, you&apos;ll be presented with a new public address and therefore, you&apos;ll have to update the address in the app setup on Shopify Partners.</p><h4 id="22-register-your-app">2.2. &apos;Register&apos; your app</h4><p>Now that you have a public address for your app, you can now <em>&apos;create&apos; </em>it in your Shopify Partners account by clicking on &apos;Apps&apos; in your sidebar and then clicking the &apos;Create app&apos; button.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Create-an-in-your-Shopify-partners-account-1-1080x570.jpg" class="kg-image" alt="How to Build a Shopify App - The Easy Way" loading="lazy" width="1080" height="570" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Create-an-in-your-Shopify-partners-account-1-1080x570.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Create-an-in-your-Shopify-partners-account-1-1080x570.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Create-an-in-your-Shopify-partners-account-1-1080x570.jpg 1080w"></figure><p>As I mentioned, I think the use of the word &apos;create&apos; is a little bit misleading here so I like to refer to this step as &apos;Registering your app&apos;.</p><p>After clicking &apos;Create app&apos;, select &apos;Public app&apos; for your app type and in the App URL field of the form, insert the https address from the previous step.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Register-your-app-with-Shopify-1080x502-1.png" class="kg-image" alt="How to Build a Shopify App - The Easy Way" loading="lazy" width="1080" height="502" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Register-your-app-with-Shopify-1080x502-1.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Register-your-app-with-Shopify-1080x502-1.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Register-your-app-with-Shopify-1080x502-1.png 1080w"></figure><p>In the &apos;Whitelisted redirection URL(s)&apos; field, insert the http address again and then the same address but with <code>/auth/callback</code> on the end (as can be seen in the above screenshot).</p><p>Scroll up to the top of the page and click &apos;Create App&apos; to complete the process.</p><p>On the next screen, you&apos;ll now be presented with your API keys.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Create-an-in-your-Shopify-partners-account-2-1080x980-1.jpg" class="kg-image" alt="How to Build a Shopify App - The Easy Way" loading="lazy" width="1080" height="980" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Create-an-in-your-Shopify-partners-account-2-1080x980-1.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Create-an-in-your-Shopify-partners-account-2-1080x980-1.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Create-an-in-your-Shopify-partners-account-2-1080x980-1.jpg 1080w"></figure><p>We&apos;re now almost ready to run our app.</p><p>The next step is to take your API keys, insert them into the variables contained in the <code>.env</code> file of your app and run your app via the command line using the command <code>node server.js</code>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Add-the-API-keys-to-your-application.png" class="kg-image" alt="How to Build a Shopify App - The Easy Way" loading="lazy" width="1170" height="208" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Add-the-API-keys-to-your-application.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Add-the-API-keys-to-your-application.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Add-the-API-keys-to-your-application.png 1170w"></figure><p>With your app now running at <code>localhost:3000</code> and the your ngrok tunnel forwarding to that address, you should now be able to install your app onto a store.</p><p>Up until recently, Shopify allowed you to install an app on any store by using a special url but <a href="https://community.shopify.com/c/Shopify-Apps/New-App-Should-Be-Reviewed-Message/td-p/620135" rel="noopener">this now appears to no longer work</a>.</p><p>Instead, you&apos;ll need to head back into your Shopify partners account and click the &apos;Select store&apos; button in the &apos;Test your app&apos; panel of your app screen.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Test-your-app-on-a-development-store-1080x604.jpg" class="kg-image" alt="How to Build a Shopify App - The Easy Way" loading="lazy" width="1080" height="604" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Test-your-app-on-a-development-store-1080x604.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Test-your-app-on-a-development-store-1080x604.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Test-your-app-on-a-development-store-1080x604.jpg 1080w"></figure><p>On the next screen you&apos;ll be able to select the store on which you want to install the app but under two conditions.</p><ol><li>The store has to be a development store associated with your partner account, and</li><li>The store that you install the app on <em>will be permanently prevented from being transferred</em></li></ol><p>Due to that second point, you&apos;ll want the development store you install the app on to be purely for testing purposes.</p><p>If you&apos;re developing a store for a client for instance, you won&apos;t want to install your app on that store. Instead, if you do need a store to work on your app, create a fresh development store that you don&apos;t intend on ever using as a real store.</p><p>Once you confirm acknowledgement that store transfer will be disabled, you&apos;ll be taken to the standard app authorisation page where you click &apos;Install unlisted app&apos; to complete the process.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Installing-an-unlisted-app.png" class="kg-image" alt="How to Build a Shopify App - The Easy Way" loading="lazy" width="1548" height="1306" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Installing-an-unlisted-app.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Installing-an-unlisted-app.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Installing-an-unlisted-app.png 1548w" sizes="(min-width: 1200px) 1200px"></figure><h3 id="3-build-your-app">3. Build your app</h3><p>Congratulations! You now have your very own Shopify app!</p><p>But there&apos;s a big problem - your app doesn&apos;t actually do anything yet.</p><p>What you now need is to write some queries, mutations and routes into your app.</p><p>Luckily, I have started the process for you.</p><h4 id="understanding-your-app-structure">Understanding your app structure</h4><p>While the <code>server.js</code> file represents the core of your application, the files in the <code>server</code> folder are the recommended location for building out the backend of your app.</p><p>Inside the server folder you have 4 files:</p><ol><li><code>apiClient.js</code> - This file is already set up with a simple function that uses the popular http client <a href="https://github.com/axios/axios" rel="noopener">Axios</a> to provide an easy way to query the API.</li><li><code>routes.js</code> - This file is where you will create routes for your application. Backend routes are required within your app as the Admin API won&apos;t accept client-side requests.</li><li><code>queries.js</code> - This is where you write your queries for the GraphQL version of the Admin API. These &apos;queries&apos; will be responsible for accessing data from your store.</li><li><code>mutations.js</code> - This is where you write your mutations. Mutations are just like queries except that they modify store data rather than just retrieving it.</li></ol><p>It&apos;s also worth mentioning the <code>public</code> folder where the front-end code for you application resides. Currently it contains a single file <code>index.html</code> but it&apos;s recommended that you use a front-end framework (like <a href="https://reactjs.org/" rel="noopener">React</a>, <a href="https://vuejs.org/" rel="noopener">Vue</a> or <a href="https://angular.io/" rel="noopener">Angular</a>) and set it to build to this folder.</p><h4 id="31-write-your-first-query">3.1. Write your first query</h4><p>Now it&apos;s time to make your app a true Shopify app by bringing in some store data and the first step is writing an API query.</p><p>The endpoint, headers and other settings have already been included in the <code>graphQLClient</code> function so it&apos;s now just a matter of using that function to submit a query to the API.</p><p>Unfortunately, there&apos;s not enough time in this article to go over the whole language of <a href="https://graphql.org/" rel="noopener">GraphQL</a> but the basic idea behind it is that you send a POST request to a single endpoint with the exact data you wish to access and the API returns only that data.</p><p>Let&apos;s take a look at an example:</p><pre><code class="language-Javascript">// server/queries.js
const { graphQLClient } = require(&apos;./apiClient.js&apos;); 
module.exports = { 
	// Returns a list of products 
    getProducts(auth) { 
    	const query = `{ products(first: 10) { edges { node { title id } } } }`; 
    	return graphQLClient(query, auth); 
    } 
}</code></pre><p>On line 1, the <code>graphQLClient</code> function is imported from <code>apiClient.js</code>. We use this on line 18 to combine the query with the other settings and create a new function called <code>getProducts</code>.</p><p>Inside <code>getProducts</code> you have the query itself which returns the title and id of the first 10 products in the connected Shopify store.</p><p>If you&apos;re confused by the words <code>edges</code> and <code>nodes</code>, don&apos;t worry. I too was oblivious to why these existed but it turns out it&apos;s due to how pagination works in GraphQL.</p><p>Again, not enough time to go into GraphQL in this tutorial but it should make sense once you learn the language.</p><p>As you can see from the code snippet above, the <code>getProducts</code> function takes a single argument, the <code>auth</code> object which we will pass through when we create the route for this query.</p><h4 id="32-write-your-first-route">3.2. Write your first route</h4><p>As previously mentioned, the Admin API won&apos;t accept client-side API requests which means we need to pass the data through a backend route in our app in order to make it available to our front end.</p><pre><code class="language-Javascript">// server/routes.js
const Router = require(&apos;koa-router&apos;); 
const router = new Router(); 
const parse = require(&apos;co-body&apos;); 
const { getProducts } = require(&apos;./queries.js&apos;); 
const prepareAuth = (ctx) =&gt; { 
	const accessToken = ctx.cookies.get(&quot;accessToken&quot;); 
    const shopOrigin = ctx.cookies.get(&quot;shopOrigin&quot;); 
    return { token: accessToken, shop: shopOrigin } 
}; 
// Create the &apos;products&apos; route 
router.get(&apos;/products/&apos;, async (ctx) =&gt; { 
	const auth = prepareAuth(ctx); 
	await getProducts(auth).then(response =&gt; ctx.body = response.data.data.products); 
}); 
module.exports = { router } </code></pre><p>On line 5, we import the <code>getProducts</code> function into our routes file and use it inside our route definition on line 21.</p><p>To create a route in Koa (using the <a href="https://github.com/ZijianHe/koa-router" rel="noopener">koa-router</a> middleware), we use the method <code>get</code> on the <code>router</code> object with two arguments. The first argument is the route address and the second is the callback function.</p><p>Inside the callback function, you can prepare the <code>auth</code> object by using the already made <code>prepareAuth</code> function and pass it to <code>getProducts</code> which will return a promise.</p><p>The <code>.then</code> method then handles the response and returns the required data nested within the response.</p><p>This might all seem a bit redundant as we&apos;re essentially creating our own API on top of the Admin API but as the API won&apos;t accept client-side requests, this is a necessary step.</p><h4 id="33-use-the-data">3.3. Use the data</h4><p>Now that we have our route set up, we can simply add the route address (<code>/products/</code>) to the address bar in our browser and access the data we requested in step 1 (assuming no errors).</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Raw-data-from-the-API-Query-1080x559.png" class="kg-image" alt="How to Build a Shopify App - The Easy Way" loading="lazy" width="1080" height="559" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Raw-data-from-the-API-Query-1080x559.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Raw-data-from-the-API-Query-1080x559.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Raw-data-from-the-API-Query-1080x559.png 1080w"></figure><p>Ok great! Now we have access to our data but it doesn&apos;t look very user-friendly now does it?</p><p>This is where your front-end framework comes in.</p><p>For my own app, I used a framework called <a href="https://vuejs.org/" rel="noopener">Vue.js</a> but that is of course, a big topic in and of itself.</p><p>For the purposes of this tutorial, let&apos;s use a library most front-end developers should be familiar with, <a href="https://jquery.com/" rel="noopener">jQuery</a>.</p><p>Create the the following javascript file in your <code>public</code> folder.</p><pre><code class="language-Javascript">$(document).ready(() =&gt; { 
	const $productDiv = $(&apos;#products&apos;); 
    $.get(&apos;/products/&apos;).then(response =&gt; { 
    	let template = `&lt;ul class=&quot;Polaris-ResourceList&quot;&gt;`;
        $.each(response.edges, function(i, edge) {
        	template += `&lt;li class=&quot;Polaris-ResourceList__ItemWrapper&quot;&gt; &lt;div class=&quot;Polaris-ResourceItem Polaris-ResourceItem--persistActions&quot;&gt; &lt;a class=&quot;Polaris-ResourceItem__Link&quot; data-polaris-unstyled=&quot;true&quot;&gt;&lt;/a&gt; &lt;div class=&quot;Polaris-ResourceItem__Container&quot;&gt; &lt;div class=&quot;Polaris-ResourceItem__Content&quot;&gt; &lt;h3&gt;&lt;span class=&quot;Polaris-TextStyle--variationStrong&quot;&gt;${edge.node.title}&lt;/span&gt;&lt;/h3&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/li&gt;`;
       }); 
       template += `&lt;/ul&gt;`; $productDiv.append(template); 
   }); 
});</code></pre><p>Then in your <code>index.html</code> file, create a <code>div</code> with the id of <code>products</code>, import jQuery and your newly created Javascript file.</p><p>Oh, and to make it look a little nicer, let&apos;s remove the <code>&lt;h1&gt;</code> altogether - great!</p><p>Now, save your file, restart your server and head to the root of your application (ie. remove <code>/products</code> from the address).</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/Your-simple-Shopify-app-1080x703.png" class="kg-image" alt="How to Build a Shopify App - The Easy Way" loading="lazy" width="1080" height="703" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Your-simple-Shopify-app-1080x703.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Your-simple-Shopify-app-1080x703.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Your-simple-Shopify-app-1080x703.png 1080w"><figcaption>You&apos;re app should now be displaying a formatted list of product names</figcaption></figure><p>Congratulations! Your app might not be all too useful at the moment but at least you have a proof of concept and have laid the ground work to take this app in whichever direction you desire.</p><h2 id="how-to-make-it-look-native-to-the-admin">How to make it look native to the admin</h2><p>If you&apos;re wondering about all the CSS classes in the above code, these are all from Shopify&apos;s design system called <a href="https://polaris.shopify.com/" rel="noopener">Polaris</a>.</p><p>Included in Polaris are a bunch of components that you can model to make your app look like it is native to the Shopify admin.</p><p>Simply <a href="https://polaris.shopify.com/components/get-started" rel="noopener">check out the examples in the components section of the Shopify Polaris website</a> to see what classes can used on your elements to make them look like Shopify.</p><h2 id="wrapping-up">Wrapping Up</h2><p>This might seem like a relatively short tutorial for such a giant topic but given the infinite options that come with building Shopify apps, it&apos;s near impossible to create a conclusive guide.</p><p>After all, a &apos;Shopify App&apos; is just a web app that connects to a Shopify store to access and manipulate that store&apos;s data.</p><p>And, as we all should know, there are many different ways to build a web app.</p><p>Other things to consider when building your app include what front-end framework you will use, how you will combine Shopify data with data from other APIs (if required) and how you intend to style your app.</p><p>These are all important factors if you wish to create a production ready app.</p><p>The main things to remember about Shopify app development specifically however, are the core points mentioned at the start of this article.</p><ol><li>Shopify apps must be authorised by a store</li><li>Shopify apps must be hosted somewhere, and</li><li>Shopify apps must use utilise a Shopify API</li></ol><p>Other than that, it&apos;s totally up to you how you build your app.</p><p>Happy coding and I&apos;ll catch you next time.</p><p>Chris</p>]]></content:encoded></item><item><title><![CDATA[Shopify Liquid - The Ultimate Guide]]></title><description><![CDATA[A comprehensive guide to Shopify Liquid Programming, the templating language used in Shopify themes for loading dynamic content into your online store.]]></description><link>https://www.christhefreelancer.com/shopify-liquid-guide/</link><guid isPermaLink="false">60ac3441fcfa4a6b50182a58</guid><category><![CDATA[Work]]></category><category><![CDATA[Shopify Development]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Thu, 03 Oct 2019 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/Shopify-Liquid-Article.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.christhefreelancer.com/content/images/2021/05/Shopify-Liquid-Article.png" alt="Shopify Liquid - The Ultimate Guide"><p>Liquid is the templating language that Shopify uses to load dynamic content to the pages of online stores. You could consider it the programming language of Shopify themes but there are a number of restrictions and quirks within Shopify liquid that aren&apos;t immediately clear.</p><p>While <a href="https://help.shopify.com/en/themes/liquid" rel="noopener">Shopify&apos;s Liquid Reference</a> and the famous &apos;<a href="https://www.shopify.com.au/partners/shopify-cheat-sheet" rel="noopener">Cheat Sheet</a>&apos; are great, I feel like there is a lot of details missing and that&apos;s why I decided to write my own documentation.</p><p>Strap yourselves in as this one is likely to be a big one!</p><h2 id="the-basics">The Basics</h2><p><a href="https://help.shopify.com/en/themes/liquid" rel="noopener">Shopify&apos;s documentation</a> does a good job of explaining the basics.</p><p>We start with the two types of <em><strong>Liquid tags</strong></em> <code>{{ code }}</code>and<code>{% code %}.</code> Double curly braces for simply outputting data (much like other template languages like <a href="https://mustache.github.io/" rel="noopener">Mustache</a>) and the curly brace combined with the percentage sign for everything else.</p><p>There&apos;s also the <code>{%- code -%}</code> tag, which operates the same as <code>{% code %}</code> but prevents the tag from generating whitespace in the output document.</p><p>The double curly braces tags are for your logic-less Liquid code while the curly-brace with percent symbol tags are responsible for other functions like</p><ul><li>Looping through Liquid objects and arrays</li><li>Creating new named variables</li><li>Including &apos;snippets&apos; and linking &apos;sections&apos;</li><li>For loops, and</li><li>If/else statements (conditionals)</li></ul><p>Here&apos;s a very basic but common pattern in Liquid:</p><pre><code class="language-Shopify Liquid">{% for product in collection.products %} 
	{{ product.title }} 
{% endfor %}</code></pre><p>The above loop will cycle through the products in the collection and run whatever is inside the code block. In this case, it will output the title of the product.</p><p>Then, there&apos;s the <em><strong>objects and attributes</strong></em> themselves. As it says in the docs, &apos;o<em>bjects contain attributes that are used to display dynamic content on a page&apos; </em>but objects can contain other objects as well. Objects in liquid are sometime iterable (almost like an array) and sometimes you can call the object without an attribute and receive a single value.</p><p>Basically, Objects in Liquid are all over the place but we&apos;ll get into that in the dedicated section on Objects later in this guide.</p><p>The final bit of syntax in Liquid are <em><strong>filters</strong></em>.</p><blockquote>&apos;Filters are used to modify the output of strings, numbers, variables, and objects.&apos;</blockquote><p>In other programming languages, you might expect these functions to be contained in a method but in Liquid, we can&apos;t create our own methods and functions. These sorts of &apos;helper functions&apos; are limited to the available filters within liquid.</p><p>A filter always starts with a | (pipe symbol) and can be stringed together like such:</p><pre><code class="language-Shopify Liquid">{{ product.title | upcase | remove: &quot;AWESOME&quot;  }}</code></pre><p>For the above code, if <code>product.title</code> was &quot;Awesome Shoes&quot;, then the output would be &quot;SHOES&quot;.</p><p>Everything in Liquid can be summarised by <em>Tags, Objects </em>and <em>Filters. </em>So let&apos;s dive deep into each one of them now.</p><h2 id="before-we-get-started">Before we get started...</h2><p>This article is gonna go into a lot of depth and is by no means a quick read. Feel free to skip the parts you don&apos;t need and/or use the search function in your browser to search for the specific section that you want to learn about. I intend this post to be more of a reference than a tutorial.</p><p>If you&apos;re more interested in a getting up and running with Liquid right away, <a href="https://skl.sh/2AETO9r" rel="noopener">check out my Skillshare class on Shopify Theme Programming</a> (Out now).</p><p>Ok, let&apos;s get back to the guide.</p><h2 id="liquid-objects">Liquid Objects</h2><p>I&apos;m gonna start with Liquid objects because no matter what you do within Liquid, most of the time you will be interacting with objects.</p><p>If we think about Liquid as the way to access and display store data then objects are the way we access that data in our Shopify themes.</p><p>Objects are a little tricky in Liquid though. Let me explain using two concepts that Shopify doesn&apos;t necessarily make clear in their documentation.</p><h3 id="concept-1-object-styles">Concept 1: Object &apos;Styles&apos;</h3><p>In other programming languages, an object looks something like this <code>person = { first_name: &quot;Chris&quot;, last_name: &quot;Dodd&quot;, age: 27 }</code> but in Liquid an Object can return a single value, a collection of values or a bunch of key/value pairs. That&apos;s why I&apos;ve broken the object down into different <em>styles.</em></p><p><em>PS: This is not official Shopify Liquid terminology, just something I came up with to help me (and hopefully you too) to understand what the heck is going on with objects in liquid.</em></p><h4 id="array-like-objects">Array-Like Objects</h4><p>These &apos;objects&apos; are referred to as objects in Liquid but they operate more like arrays.</p><ul><li>Some can be iterated over and others can&#x2019;t be.</li><li>Some can be have their &#x2018;items&#x2019; accessed by their handle but only when such a handle exists (similar to how associative arrays work in PHP).</li></ul><p>As a whole however, these are objects that hold a collection (an array) of other objects.</p><p>Examples include:</p><ul><li>Pages</li><li>Blogs</li><li>Articles</li><li>Images</li></ul><p>Notice that these are all plural names, suggesting that these objects hold a collection of values, which they do.</p><h4 id="single-value-objects">Single-Value Objects</h4><p>These objects have a single value that is outputted by calling the object itself.</p><p>Examples include:</p><ul><li>Canonical_url</li><li>Current_page, and of course</li><li>Handle</li></ul><h4 id="traditional-style-objects">Traditional Style Objects</h4><p>Traditional Style Objects are objects that hold attributes which in turn hold values that could be any kind of data type like strings, arrays and other objects. If you&apos;ve worked with other programming languages before (like Javascript), this is what you would generally think of as an object.</p><p>Examples include:</p><ul><li>Product</li><li>Customer</li><li>Page</li><li>Collection, and</li><li>Article</li></ul><p>Here&apos;s a quick code example showing all styles in use:</p><pre><code class="language-Shopify Liquid">{% for product in collection.products %} 
	{{ product.handle }} 
{% endfor %}</code></pre><p>In this example, <code>collection</code> is a traditional-style object, <code>products</code> is an array-like object and <code>handle</code> is a single value object - again, not official terminology, just a few labels to help you understand these objects&apos; behaviour.</p><h3 id="concept-2-object-nesting-and-scope">Concept 2: Object Nesting and Scope</h3><p>While the official documentation goes into great detail with most of the objects in Liquid, it often fails to tell us where these objects are available.</p><p>For instance, you can <a href="https://help.shopify.com/en/themes/liquid/objects/article" rel="noopener">read about all the attributes on the article object</a> but it won&apos;t tell you where in your theme you have access to it or which objects you will find it nested under.</p><p>Some objects you can access from anywhere in your theme but most are specific to certain templates and that&apos;s why I decided to go through every object in Liquid and find out for myself.</p><h3 id="object-reference">Object Reference</h3><p>Let&apos;s go through all the objects listed in Shopify&apos;s documentation and learn more about them, categorising each by scope, nesting and style.</p><p><em><strong>Note</strong>: I won&apos;t go into all the individual attributes (as Shopify already does a great job at that)</em></p><p><em><strong>Also note</strong>: feel free to skim-read this section and come back to it after Tags and Filters. It&apos;s not required to know of every object in Liquid but it&apos;s here in case you need it</em></p><hr><h4 id="global-objects">Global Objects</h4><p>The following objects are available from wherever inside your theme.</p><h5 id="allproducts">all_products</h5><p><em>global, array-like, non-iterable</em></p><p>all_products is a non-iterable array-like object. As the name suggests it&apos;s used to gain access to any product from anywhere within your theme.</p><p>While the all_products object contains a collection of objects (ie. array-like), you can&apos;t actually loop through them (ie. non-iterable). Instead, you can access a specific product from all_products using the handle of specific product you want to access (see &apos;<a href="https://help.shopify.com/en/themes/liquid/basics/handle" rel="noopener"><em>Accessing handle attributes</em></a>&apos; on the official documentation)</p><pre><code class="language-Shopify Liquid">{{ all_products[&apos;wayfarer-shades&apos;].title }}</code></pre><h5 id="pages">pages</h5><p><em>global, array-like, non-iterable</em></p><p>Used to access specific pages from anywhere in your theme via the page&apos;s handle.</p><p><em>By the way, you can access a resource (eg. a page, product or an image) via its handle by using the square bracket syntax (as above) or the dot syntax (like below)</em></p><pre><code class="language-Shopify Liquid">&lt;h1&gt;{{ pages.about.title }}&lt;/h1&gt;</code></pre><h5 id="blogs">blogs</h5><p><em>global, array-like, not iterable</em></p><p>Just like <code>all_products</code> and <code>blogs</code>, you can access the different blogs of your website (you can have multiple on the same site) via the specific handle of the blog.</p><pre><code class="language-Shopify Liquid">&lt;h1&gt;{{ blogs.myblog.title }}&lt;/h1&gt;</code></pre><p>The above code will output the title of the blog with the handle &apos;myblog&apos;.</p><h5 id="articles">articles</h5><p><em>global, array-like, not iterable</em></p><p>Just like all the global objects above, you can access any article in your store via its handle.</p><h5 id="images">images</h5><p><em>global, array-like, not iterable</em></p><p>You can access any image in your store via its filename (similar to how you would access another resource using it&apos;s handle).</p><h5 id="collections">collections</h5><p><em>global, array-like, iterable</em></p><p>Unlike all the previous global objects mentioned, you <strong><em>can</em></strong> loop through all the collections available in your store in addition to accessing a specific collection via its handle using the <code>collections</code> object.</p><pre><code class="language-Shopify Liquid">{% for collection in collections %} 
	{{ collection.title }} 
{% endfor %}</code></pre><p>The above code will loop through all the collections in your store and output the title of each.</p><h5 id="linklists-links">linklists &amp; links</h5><p><em>global, array-like, iterable</em></p><p>Linklists represent the menu structure you&apos;ve set up in the &apos;navigation&apos; section of your online store admin.</p><p>You might be wondering why Shopify didn&apos;t just call the object a &apos;menu&apos; but calling it a &apos;linklist&apos; instead helps you to think more open-mindedly about these array-like objects.</p><p>Perhaps in future, you may want to display a list of links that aren&apos;t necessarily a &apos;menu&apos; and the <code>linklist</code> object lets you do that as well.</p><p>Just like the <code>collection</code> object, you can loop over linklists or access a particular linklist by its handle. Once inside a linklist, you can access its links via its <code>links</code> attribute, which will give you an iterable list to loop through.</p><p>The tricky thing with linklists and links though is that a single link can have a <code>links</code> object attached to it as well and that&apos;s how you are able to access the sub-links within that link (note: this is limited to three layers deep in Shopify).</p><p>For these nested sub-links, a common convention is to label the second layer of links &apos;childlinks&apos; and the third as &apos;grandchildlinks&apos; to make it easier to understand.</p><pre><code class="language-Shopify Liquid">{% for linklist in linklists %} 
	&lt;div&gt; 
    	&lt;h2&gt;{{ linklist.title }}&lt;h2&gt; 
        &lt;ul&gt; 
        	{% for link in linklist.links %} 
            	&lt;li&gt; 
                	&lt;a href=&quot;{{ link.url }}&quot;&gt;{{ link.title }}&lt;/a&gt; 
                	&lt;ul&gt; 
                    	{% for childlink in link.links %} 
                        	&lt;li&gt;
                            	&lt;a href=&quot;{{ childlink.url }}&quot;&gt;{{ childlink.title }}&lt;/a&gt; 
                                &lt;ul&gt; 
                                    {% for grandchildlink in childlink.links %} 
                                        &lt;li&gt;
                                        	&lt;a href=&quot;{{ grandchildlink.url }}&quot;&gt;{{ grandchildlink.title }}&lt;/a&gt;
                                        &lt;/li&gt; 
                                    {% endfor %} 
                                &lt;/ul&gt;
                            &lt;/li&gt; 
                        {% endfor %} 
                    &lt;/ul&gt;
                &lt;/li&gt; 
             {% endfor %} 
         &lt;/ul&gt;
    &lt;/div&gt; 
{% endfor %}</code></pre><p>As you can see from above, the nesting gets pretty hectic when you have menus that are three layers deep.</p><h5 id="request">request</h5><p><em>global, traditional-style</em></p><p>The <code>request</code> object is a simple helper object to give you access to the domain a customer is visiting from, the shop_locale (ie. the language) of the user and the path to the current page.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/request" rel="noopener">Read more on the official documentation.</a></p><h5 id="scripts">scripts</h5><p><em>global, traditional-style</em></p><p>If your store is on the &apos;Shopify Plus&apos; tier of Shopify, you have access to what&apos;s called &apos;scripts&apos;.</p><p>Scripts are used to create discounts that are applied to a cart and/or to customize the shipping and payment options that are available to your customers.</p><p>Shopify scripts are written in Ruby and use the <a href="https://help.shopify.com/en/manual/apps/apps-by-shopify/script-editor/shopify-scripts" rel="noopener">Shopify Scripts API</a>.</p><p>If you&apos;re interested, <a href="https://help.shopify.com/en/manual/apps/apps-by-shopify/script-editor" rel="noopener">read about it on the official docs</a> but as <a href="https://www.shopifyandyou.com/blogs/news/statistics-about-shopify" rel="noopener">less than 1% of Shopify stores are on Shopify Plus</a>, it won&apos;t be particularly relevant for most users</p><h5 id="settings">settings</h5><p><em>global, traditional-style</em></p><p>The global <code>settings</code> object lets you access the settings of a store&apos;s published theme.</p><p>Remember that settings are defined through the <code>settings_schema.json</code> file in your theme and the stored values are in the <code>settings_data.json</code> file.</p><p>This differs to the <code>settings</code> object that is attached to particular sections (which we&apos;ll talk about a little later).</p><h5 id="cart">cart</h5><p><em>global, traditional-style</em></p><p>The <code>cart</code> object is available from wherever in your Shopify theme and as the name suggests, it holds all the information you might need to access about your shopping cart (such as all the cart items and the total price).</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/cart" rel="noopener">Read more about the cart object on the official docs.</a></p><h5 id="customer">customer</h5><p><em>global, traditional-style</em></p><p>The customer object represents the customer that is logged in to the store. Although it is available as a global object, it will only return an object if a customer is logged in.</p><pre><code class="language-Shopify Liquid">{% if customer %} Hello {{ customer.first_name }} {% endif %}</code></pre><p>The above code checks if a customer is logged in first before rendering the text.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/customer" rel="noopener">Read more about the customer object on the official docs.</a></p><h5 id="shop">shop</h5><p><em>global, traditional-style</em></p><p>The <code>shop</code> object contains information about your store like its name, domain and physical address.</p><h5 id="theme">theme</h5><p><em>global, traditional-style</em></p><p>The <code>theme</code> object allows you to access the id and name of the theme in use.</p><h5 id="routes">routes</h5><p><em>global, traditional-style</em></p><p>This object is not listed as global in the Shopify docs but appears to be available from anywhere within your theme.</p><p>The object allows to generate dynamic URLs to your storefront. <a href="https://help.shopify.com/en/themes/liquid/objects/routes" rel="noopener">Learn more on the official docs</a>.</p><h5 id="canonicalurl">canonical_url</h5><p><em>global, single value</em></p><p>The canonical_url object returns the canonical URL for the current page. The canonical URL is the page&apos;s &quot;default&quot; URL with any URL parameters removed.</p><h5 id="currentpage">current_page</h5><p><em>global, single value</em></p><p><code>current_page</code> returns the number of the page you are on when browsing through paginated content.</p><h5 id="pagedescription">page_description</h5><p><em>global, single value</em></p><p><code>page_description</code> returns the meta (SEO) description of currently viewed page.</p><p>The word &apos;page&apos; in this instance does <em>not</em> refer to the <code>page</code> object/content type in Shopify but rather, any page the user might be looking at, whether that be a product, collection, blog article or Shopify page.</p><h5 id="pagetitle">page_title</h5><p><em>global, single value</em></p><p>Just like <code>page_description</code>, page_title refers to the SEO title of the currently viewed page.</p><p>This differs from <code>page.title</code> which is the title of a particular Shopify page whereas <code>page_title</code> is any page in your store that your customer is viewing.</p><p>I know! The terminology overlaps a little but hopefully that makes sense.</p><h5 id="handle">handle</h5><p><em>global, single value</em></p><p>The <code>handle</code> object is Liquid is a very special one. You can think of it as a unique but human-readable identifier that can be used in various ways.</p><p>Just like we saw before, we can use a resource&apos;s handle to access that particular object from one of the previously mentioned, <code>blogs</code>, <code>articles</code>, <code>collections</code>, <code>pages</code> or <code>products</code> global objects.</p><pre><code class="language-Shopify Liquid">{% for product in collections.featured.products %} 
	{{ product.title }} 
{% endfor %}</code></pre><p>The above code loops through the products contained in the &apos;featured&apos; collection and outputs the title of each product.</p><p>We can also call the <code>handle</code> object directly on any page to check whether we&apos;re on a certain page.</p><pre><code class="language-Shopify Liquid">{% if handle contains &apos;private&apos; %} 
	Don&apos;t show this to anyone! ok? 
{% endif %}</code></pre><p>You might be thinking where does this &apos;handle&apos; come from? The answer is that Shopify automatically generates it for you based off of the title you set for the resource.</p><p>For example, if you created a page called &apos;About Us&apos;, the handle would look something like this: &apos;about-us&apos;.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/handle" rel="noopener">Learn more about how to change your handle in the Shopify admin here</a></p><h5 id="template">template</h5><p><em>global, traditional and single value (both)</em></p><p>The <code>template</code> object defies convention as it will return a single value when called directly but also has attributes.</p><p>If you call <code>template</code> (the name by itself), you will get the name of the template that is being used to render the current page but can also access the name of the template&apos;s parent directory (usually just <code>templates</code>) through the <code>directory</code> attribute, its &apos;suffix&apos; (for when using an alternate template is being used) through the <code>suffix</code> attribute and strangely enough, the name of the template through the <code>name</code> attribute.</p><h4 id="template-specific-objects">Template-specific Objects</h4><p>The following objects are only available in their respective templates (unless accessed as a nested object).</p><ul><li>product</li><li>page</li><li>search</li><li>collection</li><li>article</li><li>blog</li><li>cart</li><li>checkout</li></ul><p>These objects all follow a common pattern in that their names match the template in which they are available. For example, the <em>product</em> object is available in the <em>product</em> template.</p><h5 id="special-mention-the-section-object">Special mention: the &apos;section&apos; object</h5><p>The <code>section</code> object is what you use to access section data in a given section.</p><p>The section data of course, is determined by the JSON &apos;schema&apos; that you create inside the section file combined with the user input through the theme customiser.</p><p>I&apos;m breezing over JSON schemas a little bit here as this post is all about Liquid but you can learn all about JSON schemas <a href="https://skl.sh/2AETO9r" rel="noopener">in lesson 5 of my Skillshare class, &apos;<em>Shopify Theme Programming</em>&apos;</a>.</p><p>For more info on the section object in Liquid, <a href="https://help.shopify.com/en/themes/development/sections" rel="noopener">Check out the official docs</a></p><h4 id="nested-objects">Nested Objects</h4><p>Many of the afore-mentioned objects also have objects inside them and some of these nested objects can appear in multiple places. So let&apos;s list out all these nested objects and under which objects you&apos;ll find them.</p><h5 id="address">address</h5><p><em>checkout, customer, order and shop</em></p><p>The <code>address</code> object comes in a few different forms.</p><p><code>shop.address</code> represents the address of your shop whilst <code>billing_address</code> and <code>shipping_address</code> are two manifestations of the address object that exist on <code>checkout</code>, <code>customer</code> and <code>order</code> objects.</p><p>All of these objects can be summarised by one <code>address</code> object as they all have the same attributes which let you access the various parts of the address such as the first line of the address, the city and the country.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/address#address-address1" rel="noopener">Learn more about the address object on the offical docs.</a></p><h5 id="block">block</h5><p><em>section</em></p><p>Blocks are a feature of Shopify sections that allow the user to add and remove a list of &apos;blocks&apos; which contain a common set of settings.</p><p>A particular block can be accessed by looping through the <code>blocks</code> object nested on the <code>section</code> object.</p><p>To learn more about blocks, <a href="https://help.shopify.com/en/themes/development/sections#blocks" rel="noopener">check out this page on the official documentation</a>.</p><h5 id="setting">setting</h5><p><em>section, block</em></p><p>The <code>setting</code> object holds the attributes of a setting on either a block or section.</p><p>For example, the value of the &apos;image&apos; setting for a particular section can be accessed using <code>section.settings.image</code></p><h5 id="currency">currency</h5><p><em>cart and shop</em></p><p>The <code>currency</code> object exists in two different places.</p><p>One, as an item on <code>shop.enabled_currencies</code> and second, nested in the <code>cart</code> object.</p><p>You can use this object to determine the name, ISO code and symbol of each currency that your store enables or the currency of the cart (respectively).</p><h5 id="discountapplication">discount_application</h5><p><em>cart, checkout and order</em></p><p>The discount objects in Liquid are a little tricky. The discount application_object exists as an item within <code>discount_applications</code> and <code>cart_level_discount_applications</code> both of which are passed around the cart, checkout and order objects.</p><p>As you would suspect, all of its attributes are related to the application of discounts.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/discount-application" rel="noopener">Find out more on the official docs.</a></p><h5 id="discountallocation">discount_allocation</h5><p><em>line_item</em></p><p>I haven&apos;t been able to track down many examples of this object in use but it appears to be a way to access discount information on the <code>line_item</code> object specifically.</p><p><a href="https://help.shopify.com/en/themes/development/discounts" rel="noopener">Check out this article on Shopify&apos;s website for more info.</a></p><h5 id="lineitem">line_item</h5><p><em>cart, checkout, fulfilment and order</em></p><p>Speaking of the line_item object, this object is what you get when you loop through <code>cart.items</code>, <code>checkout.line_items</code>, <code>order.line_items</code> or <code>fulfillment.fulfillment_line_items</code>.</p><p>The object represents a single line in the shopping cart and given that there is just one line item for each distinct product variant in the cart, you can think of a line_item as tightly coupled to a product variant.</p><p>You&apos;ll see a few objects that get shared amongst cart, checkout and order as these objects all share a similar composition with their names mainly representing the state of an order moving through the various stages, all the way from the customer placing their first item in the cart to having that order fulfilled.</p><p>The <code>line_item</code> object has a lot of properties <a href="https://help.shopify.com/en/themes/liquid/objects/line_item" rel="noopener">which you can read about on the official docs</a>.</p><h5 id="shippingmethod">shipping_method</h5><p><em>checkout</em></p><p>The <code>shipping_method</code> object is a simple one. It is available on the <code>checkout</code> object and gives you access to the handle, price (both original and current) and title of the <code>shipping_method</code>.</p><h5 id="fulfillment">fulfillment</h5><p><em>line_item</em></p><p>The <code>fulfillment</code> object appears to be a nested object of the <code>line_item</code> object in Liquid with which you can expose fulfilment details about a product in a customer order.</p><p>After searching through numerous themes, the best example I could find of the fulfillment object is this one in Shopify&apos;s own Debut theme.</p><pre><code class="language-Shopify Liquid">{%- if line_item.fulfillment -%} 
	&lt;div class=&quot;note&quot;&gt; 
    	{%- assign created_at = line_item.fulfillment.created_at | time_tag: format: &apos;date&apos; -%} 
        {{ &apos;customer.order.fulfilled_at_html&apos; | t: date: created_at }}
        &lt;div&gt; 
        	{%- if line_item.fulfillment.tracking_url -%} 
            	&lt;a href=&quot;{{ line_item.fulfillment.tracking_url }}&quot;&gt; {{ &apos;customer.order.track_shipment&apos; | t }} &lt;/a&gt; 
            {%- endif -%} 
        	&lt;div&gt; 
            	{{ line_item.fulfillment.tracking_company }} 
               	{%- if line_item.fulfillment.tracking_number -%} 
                    #{{ line_item.fulfillment.tracking_number }} 
                {%- endif -%}
            &lt;/div&gt; 
       &lt;/div&gt; 
   &lt;/div&gt; 
{%- endif -%}</code></pre><p>Judging from the above code, the <code>fulfilment</code> object is an object for accessing information about the fulfilment of a product (represented as a line item) in a customer order.</p><p>You can always <a href="https://help.shopify.com/en/themes/liquid/objects/fulfillment" rel="noopener">head to the official documentation to learn more about it</a> but as usual, Shopify leaves a lot to the imagination.</p><h5 id="image">image</h5><p><em>collection, article, product, variant and line_item</em></p><p>The use of the image object is pretty common sense. It allows you access the image of a collection, article, product, variant or line_item.</p><p>To display an image, you might simply use the <code>image.src</code> attribute in your own HTML tag but you&apos;re also able to pass the image object through some helpful image filters as well.</p><p>Check out all the attributes you can access through the <code>image</code> object <a href="https://help.shopify.com/en/themes/liquid/objects/image" rel="noopener">here on the docs</a>.</p><h5 id="variant">variant</h5><p><em>product, image and line_item</em></p><p>The definition of a variant is something that confused me when I first started working with Shopify but it&apos;s easy to understand once you grasp it.</p><p>You can think of a variant as the actual product that you deliver to the end customer.</p><p>You might sell a particular type of shoe that comes in various sizes and colours. Each variation of that &apos;product&apos; is a &apos;variant&apos; in Shopify. If the shoes vary only by size then you will have as many variants for that product as you do size options but if you have other options (for colour and material, let&apos;s say), the number of variants grows exponentially as the number of possible combinations are multiplied.</p><p>The <code>variant</code> object is usually accessed via <code>product.variants</code> but you can also find the variants that are associated with images and line items via <code>image.variants</code> and <code>line_item.variant</code>.</p><p>Variants are important in Liquid because the variant (not the product) is what gets added to your cart and turned into line items.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/variant" rel="noopener">Read more about variants on the official docs</a></p><h5 id="product">product</h5><p><em>collection and line_item</em></p><p>The <code>product</code> object (in addition to being available in the &apos;product&apos; template) is also a nested object, available in <code>collection.products</code> and <code>line_item.product</code>.</p><p><code>collection.products</code> is how you would access the products in a particular collection and <code>line_item.product</code> gives you access to the product that is represented in the line item.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/product" rel="noopener">Learn more about the product object on the official docs</a></p><h5 id="transaction">transaction</h5><p><em>checkout and order</em></p><p>I&apos;ve never had to use the transaction object but it appears from the <code>transactions</code> attribute on the <code>checkout</code> and <code>order</code> object, that an order can have multiple transactions and that this object is how you would access them in Liquid.</p><h5 id="policy">policy</h5><p><em>shop</em></p><p>A <code>policy</code> represents an individual policy of the <code>shop.policies</code> object.</p><p>You can also access an individual policy via <code>shop.privacy_policy</code>, <code>shop.refund_policy</code>, <code>shop.shipping_policy</code> and <code>shop.terms_of_service</code>.</p><h5 id="metafield">metafield</h5><p><em>product, collection, customer, order, blog, page and shop</em></p><p>Metafields are an interesting functionality in Shopify that allow you to create your own datasets and include them on products, collections, customers, orders, blogs, pages and your shop.</p><p>A metafield consists of a namespace, a key, a value, and a description (optional).</p><p>I won&apos;t go into too much detail about metafields as you can <a href="https://help.shopify.com/en/manual/products/metafields" rel="noopener">read about it on the docs</a> but in terms of including metafields in your Liquid code, you can access them via the <code>metafields</code> object, nested on the previously mentioned resource objects, followed by the namespace of the metafields you want to access.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/metafield" rel="noopener">Full details on the doc here</a>.</p><h5 id="taxline">tax_line</h5><p><em>order and checkout</em></p><p>This one is pretty basic. If there&apos;s a tax line on your checkout or order, this is where you would access it.</p><h5 id="order">order</h5><p><em>customer and checkout</em></p><p>The <code>order</code> object is usually found on <code>customer.orders</code> but can also be found attached to the checkout object.</p><p>Orders should be pretty easy to understand, they are essentially the future manifestation of a cart that has passed successfully through a checkout.</p><h5 id="productoption">product_option</h5><p><em>product</em></p><p>The <code>product_option</code> object is what you get when you loop through <code>product.options_with_values</code> and contains the name of the possible product options and the possible values within it (among a few other attributes).</p><h5 id="collection">collection</h5><p><em>product</em></p><p>Like <code>product</code>, collection is a template-specific object that you can can also find nested.</p><p>Not only can access a list of products in a particular collection with <code>collection.products</code>, you can also grab the list of collections that include a particular product via <code>product.collections</code></p><h5 id="result">result</h5><p><em>search</em></p><p>A &apos;result&apos; is what you get when you loop through <code>search.results</code>. <code>result</code> is a special object in that it can be an article, page or product. So, it&apos;s not exactly a separate object but a alternate name for the article, page or product object that you retrieve from the list of results on a search page.</p><h5 id="user">user</h5><p><em>article</em></p><p><code>user</code> is a simple object that appears on the <code>article</code> object. Inside you&apos;ll find information about the article&apos;s author.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/article#article-user" rel="noopener">Read more about the user object on the official docs</a></p><h5 id="comment">comment</h5><p><em>article</em></p><p>Similar to <code>user</code>, <code>comment</code> is just the object you would use for retrieving information about a particular comment on an article and can be accessed via <code>article.comments</code></p><h5 id="article">article</h5><p><em>blog</em></p><p>In Shopify you can have multiple blogs and so you would usually display articles by looping through the list of articles on a particular blog via <code>blog.articles</code></p><p>Of course, once you navigate to a particular article, you will have access to the <code>article</code> object. The nested form of this object is for when you&apos;re on the blog template.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/article" rel="noopener">Read more about the article object on Shopify&apos;s official docs.</a></p><h4 id="helper-objects">Helper Objects</h4><p>I call the following objects &apos;Helper Objects&apos; as they simply help us to program in Liquid instead of giving us access data from within our store like the others mentioned above.</p><h5 id="forloop">forloop</h5><p>The <code>forloop</code> object contains attributes of the parent for loop. You can use it to find out the length of the current loop or your position within it (amongst a few other things).</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/for-loops" rel="noopener">You can read more about the forloop object here</a></p><h5 id="font">font</h5><p>The <code>font</code> object helps you to access specific details of a font on the <code>settings</code> object.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/font" rel="noopener">You can read more about the font object here.</a></p><h5 id="form">form</h5><p>Similar to the <code>forloop</code> object, the <code>form</code> object provides attributes for use within the <code>{% form %}</code> Liquid tag.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/form" rel="noopener">More on the form object here</a></p><h5 id="paginate-and-part">paginate and part</h5><p>Just like the <code>form</code> object, the <code>paginate</code> object provides attributes for use within the <code>{% paginate %}</code> Liquid tag. The <code>part</code> object is what you&apos;ll find nested on the <code>paginate</code> object via <code>paginate.parts</code>. A &apos;part&apos; simply represents a link in the pagination&apos;s navigation</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/paginate" rel="noopener">More on the paginate object here</a></p><h5 id="tablerow">tablerow</h5><p>The <code>tablerow</code> object is essentially the same as the <code>forloop</code> object but for tablerows instead.</p><p><a href="https://help.shopify.com/en/themes/liquid/objects/tablerow" rel="noopener">You can read more about the tablerow object here</a></p><h4 id="other-objects">Other Objects</h4><p>Finally, there are a few objects in Liquid that don&apos;t quite fit into the previous categories. Some of these appear to be weird quirks of the language while others can be useful.</p><h5 id="customeraddress">customer_address</h5><p>The <code>customer_address</code> object has <a href="https://help.shopify.com/en/themes/liquid/objects/customer-address" rel="noopener">a lengthy page in Shopify&apos;s official documentation</a> but I personally have never seen it used and it appears to be redundant given that you can access a customer&apos;s address via <code>customer.addresses</code>.</p><h5 id="discount">discount</h5><p>The <code>discount</code> object may be found in the code of older themes but in the current version of Liquid, this object is just for displaying discounts inside notifications or in the Order Printer app. Therefore, it is no longer relevant for theme development.</p><h5 id="recommendations">recommendations</h5><p>The <code>recommendations</code> object in Liquid is a strange one. It is essentially a striped-down collection object that is auto-generated by Shopify via their own algorithm and can be used on the product template to display recommended products.</p><p>The reason why this object is so strange is that you need to use Shopify&apos;s AJAX API in addition to a Liquid loop to get it to work.</p><pre><code class="language-Shopify Liquid">&lt;div id=&quot;recommended-products&quot;&gt; 
	&lt;h2&gt;Recommended: &lt;/h2&gt; 
    {% if recommendations.products_count &gt; 0 %} 
        {% for product in recommendations.products %} 
            {{ product.title | link_to: product.url }} 
        {% endfor %} 
    {% endif %} 
&lt;/div&gt;</code></pre><p>The above code <strong><em>should be</em></strong> enough to render the recommended products to the page but it isn&apos;t</p><p>As it states in the official docs,</p><blockquote>The recommendations object returns products only if it&apos;s used in a theme section that&apos;s rendered via <code>/recommendations/products?section_id=[section_id]&amp;product_id=[product_id]</code></blockquote><p>It took me a while to figure out that the above url was a endpoint of the AJAX API and that in order to get the recommended products to show, you have to add some extra data attributes to the parent div, add in the If statement for <code>recommendations.performed</code> and include the code in its own section.</p><p>The Liquid code turns out looking more like this:</p><pre><code class="language-Shopify Liquid">&lt;div id=&quot;recommended-products&quot; data-product-id=&quot;{{ product.id }}&quot; data-limit=&quot;5&quot;&gt; 
	&lt;h2&gt;Recommended: &lt;/h2&gt; 
    {% if recommendations.performed %} 
    	{% if recommendations.products_count &gt; 0 %} 
        	{% for product in recommendations.products %} 
            	{{ product.title | link_to: product.url }} 
            {% endfor %} 
        {% endif %} 
    {% else %} 
    	&lt;div class=&quot;placeholder&quot;&gt;[Placeholder animation goes here]&lt;/div&gt; 
    {% endif %}
&lt;/div&gt;</code></pre><p>Then you need to send the whole section to the AJAX API, the API will respond with the client-side code and then, you will render that to the page using something like this:</p><pre><code class="language-Javascript">function ProductRecommendations(container) { 
	var $container = (this.$container = $(container)); 
    var productId = $container.data(&apos;product-id&apos;); 
    var limit = $container.data(&apos;limit&apos;); 
    var productRecommendationsUrlAndContainerClass = &apos;/recommendations/products?&amp;section_id=product-recommendations&amp;limit=&apos; + limit + &apos;&amp;product_id=&apos; + productId; 	
    $container.parent().load(productRecommendationsUrlAndContainerClass); }; 
    document.addEventListener(&quot;DOMContentLoaded&quot;, function() { 
    ProductRecommendations($(&apos;#recommended-products&apos;)); 
});</code></pre><p>I figured this out by reading a few articles on Shopify&apos;s website as well as studying how the object is used in popular themes.</p><p>It&apos;s not clear to me why you would need to involve Javascript at all but I guess this is just another quirk of Shopify.</p><h5 id="countryoptiontags-and-allcountryoptiontags">country_option_tags and all_country_option_tags</h5><p>The <code>all_country_option_tags</code> object creates a HTML tag for each country and the <code>country_option_tags</code> object does the same but all for the countries that are included as a shipping zone on the Shipping page of the admin.</p><p>These are handy if you want to create a dropdown (<code>&lt;select&gt;&lt;option&gt;dropdown&lt;/option&gt;&lt;/select&gt;</code>) with these countries as options.</p><h5 id="currenttags">current_tags</h5><p>The <code>current_tags</code> object can be used inside the blog and collection templates and contains all the tags that are being used to filter that collection or blog.</p><p>A common use and pattern for the <code>current_tags</code> object can be seen in this example in the collection template</p><pre><code class="language-Shopify Liquid">&lt;ul&gt; 
	{% for tag in collection.all_tags %} 
        {% if current_tags contains tag %} 
            &lt;li class=&quot;active&quot;&gt;{{ tag | link_to_remove_tag: tag }}&lt;/li&gt;
        {% else %} 
            &lt;li&gt;{{ tag | link_to_add_tag: tag }}&lt;/li&gt; 
        {% endif %} 
    {% endfor %} 
&lt;/ul&gt;</code></pre><hr><h2 id="liquid-tags">Liquid Tags</h2><p>Alright, so that was probably more words on Liquid objects than anyone would want to read in one go. So now, let&apos;s look at how we can combine these objects with useful tags to help our themes to do what we need them to do.</p><p>As previously mentioned, if you want to simply output a value - whether that be data from your store or a variable created inside Liquid - you simply use the curly braces.</p><pre><code class="language-Shopify Liquid">{{ product.title }}</code></pre><p>The rest of the tags can be categorised as:</p><ul><li>Control flow tags</li><li>Iteration tags</li><li>Variable tags, or</li><li>Theme tags</li></ul><h3 id="control-flow-tags">Control Flow Tags</h3><p>Control flow tags are basically just conditionals and they&apos;re quite common-sensical. They include If/then statements, unless/else statements and switch statements.</p><h4 id="if-then">If / Then</h4><p>If a condition is true, perform some code, if not, perform some other code - quite simple.</p><pre><code class="language-Shopify Liquid">{% if shipping_method.title == &apos;International Shipping&apos; %} 
	You&apos;re shipping internationally. Your order should arrive in 2&#x2013;3 weeks. 
{% elsif shipping_method.title == &apos;Domestic Shipping&apos; %} 
	Your order should arrive in 3&#x2013;4 days. 
{% else %} 
	Thank you for your order! 
{% endif %}</code></pre><h4 id="unless-else">Unless / Else</h4><p>The opposite of an If statement, an Unless statement performs some code if the condition inside the unless tag is not true.</p><pre><code class="language-Shopify Liquid">{% unless product.title == &apos;Awesome Shoes&apos; %} 
	You are not buying awesome shoes. 
{% endunless %}</code></pre><h4 id="case-when">Case&#x200A;/&#x200A;When</h4><p>A Case (or switch statement, as you might of heard it being referred to in other languages) tests a particular object or attribute for a range of values.</p><pre><code class="language-Shopify Liquid">{% case shipping_method.title %} 
	{% when &apos;International Shipping&apos; %} 
    	You&apos;re shipping internationally. Your order should arrive in 2&#x2013;3 weeks. 
    {% when &apos;Domestic Shipping&apos; %} 
        Your order should arrive in 3&#x2013;4 days. 
    {% when &apos;Local Pick-Up&apos; %} 
        Your order will be ready for pick-up tomorrow. 
    {% else %} 
        Thank you for your order! 
{% endcase %} </code></pre><p>The above code checks if the value of <code>shipping_method.title</code> is &apos;International Shipping&apos;, &apos;Domestic Shipping&apos;, &apos;Local Pick-Up&apos; or none of the above and for each of these scenarios runs a different line of code.</p><p>The thing to note with conditionals in Liquid are the helpful but tricky <em>truthy</em> and <em>falsey</em> values.</p><p>If you&apos;re experienced with programming in Javascript for instance, you would be aware of <em>truthy</em> and <em>falsey.</em> It&apos;s a concept in which values that aren&apos;t explicitly false or true can still sometimes evaluate to true or false.</p><p>A similar concept applies in Liquid and a common pattern with conditionals is to check if a certain object exists before outputting. We can do this simply by including the object that we want to check directly after the If keyword without any comparison operators.</p><pre><code class="language-Shopify Liquid">{% if item_title %} 
	{{ item_title }} 
{% else %} 
	Object with the name item_title does not exist 
{% endif %}</code></pre><p>In the above example, the text <code>Object with the name item_title does not exist</code> will output unless you created your own Liquid variable with that name.</p><p>The exception is blank objects or values (ie. ones where the value is <code>&quot; &quot;</code> or that don&apos;t exist at all). These are considered <em>truthy</em> in Liquid. So if you expect an object could contain an empty string value or may not exist at all, you can check whether the object is blank using the <code>blank</code> keyword.</p><pre><code class="language-Shopify Liquid">{% if item_title != blank %} 
	{{ item_title }} 
{% endif %}</code></pre><p>This works the same for array-like objects but instead of checking for <code>blank</code>, you need to check the length of the array-like object via it&apos;s <code>size</code> attribute.</p><pre><code class="language-Shopify Liquid">{% if article.tags.size &gt; 0 %} 
	{% for tag in article.tags %} 
        &lt;a href=&quot;{{ blog.url }}/tagged/{{ tag | handle }}&quot;&gt;{{ tag }}&lt;/a&gt; 
    {% endfor %} 
{% else %} 
	No tags 
{% endif %}</code></pre><p>Note that an object that does not exist in Liquid is sometimes known as an <code>EmptyDrop</code>.</p><h3 id="iteration-tags">Iteration tags</h3><p>We&apos;ve already seen a few examples of Iteration Tags already. The most common form is a <em><strong>for loop</strong></em>.</p><h4 id="for-loop">For Loop</h4><pre><code class="language-Shopify Liquid">{% for product in collection.products %} 
	{{ product.title }} 
{% endfor %}</code></pre><p>The text after the &apos;in&apos; on the first line represents the array-like object that you want to loop through and the text between the &apos;for&apos; and &apos;in&apos; represents an individual object which you can call inside the code block (ie. inside the the opening for and closing endfor tags).</p><p>The for loop basically works the same as a for loop in any programming language with the exception of the <strong><em>else</em></strong> statement, which saves you from having to check that an array-like object is empty with an if statement.</p><pre><code class="language-Shopify Liquid">{% for product in collection.products %} 
	{{ product.title }} 
{% else %} 
    The collection is empty. 
{% endfor %}</code></pre><p>Then there&apos;s the <em><strong>break</strong> and <strong>continue</strong></em> keywords which (when called) break out of the loop or skip the current iteration of the loop respectively. These can be handy for more complex Liquid patterns where you&apos;re trying to find a particular object within a collection of objects.</p><p>There&apos;s also the <em><strong>limit, offset, range</strong></em> and <em><strong>reversed</strong></em> parameters but in my experience, they aren&apos;t all too common. You can <a href="https://help.shopify.com/en/themes/liquid/tags/iteration-tags" rel="noopener">learn more about them in the official documentation</a>.</p><h4 id="cycle">Cycle</h4><p><em><strong>Cycle</strong></em> is a special iteration tag that works when nested inside a for loop. You can use <em><strong>cycle</strong></em> to loop through a group of strings and output them in the order that they were passed in as parameters.</p><p>When you first learn Liquid, it&apos;s not immediately clear why you would want to use <em><strong>cycle </strong></em>but I have found one instance where it is used in popular themes and that is to assist in the display of placeholder images.</p><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/Shopify-Placeholder-Products-1080x605.png" class="kg-image" alt="Shopify Liquid - The Ultimate Guide" loading="lazy" width="1080" height="605" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Shopify-Placeholder-Products-1080x605.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Shopify-Placeholder-Products-1080x605.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Shopify-Placeholder-Products-1080x605.png 1080w" sizes="(min-width: 720px) 720px"></figure><p>The above is generated by the following code.</p><pre><code class="language-Shopify Liquid">&lt;div class=&quot;grid grid--uniform&quot;&gt; 
	{% for i in (1..product_limit) %} 
    	&lt;div class=&quot;grid__item grid-product {{ grid_item_width }}&quot; data-aos=&quot;row-of-{{ per_row }}&quot;&gt; 
        	&lt;div class=&quot;grid-product__content&quot;&gt; 
            	&lt;a href=&quot;{{ product.url | within: collection }}&quot; class=&quot;grid-product__link {% if sold_out %} grid-product__link--disabled{% endif %}&quot;&gt; 
                	&lt;div class=&quot;grid-product__image-mask&quot;&gt; 
                    	{% capture current %}{% cycle 1, 2, 3, 4, 5, 6 %}{% endcapture %} 
                        &lt;div class=&quot;image-wrap&quot;&gt;
                        	{{ &apos;product-&apos; | append: current | placeholder_svg_tag: &apos;placeholder-svg&apos; }}
                        &lt;/div&gt; 
                    &lt;/div&gt; 
                    &lt;div class=&quot;grid-product__meta&quot;&gt; 
                    	&lt;div class=&quot;grid-product__title&quot;&gt;
                        	{{ &apos;home_page.onboarding.product_title&apos; | t }}
                        &lt;/div&gt; 
                        &lt;div class=&quot;grid-product__price&quot;&gt;$29&lt;/div&gt;
                    &lt;/div&gt; 
               &lt;/a&gt; 
           &lt;/div&gt; 
      	&lt;/div&gt; 
  	{% endfor %}
&lt;/div&gt;</code></pre><p>On line 7 of the above code, you can see the cycle statement. On the first iteration of the loop, the output of the cycle statement will be 1 and that will be assigned to the <code>current</code> variable for use in the next line to tell Shopify which placeholder image to show. On the second iteration, the value will be 2, so-on and so-forth until the seventh iteration, at which point the value will <em>loop back</em> to 1.</p><p>This is important as there are only 6 product placeholders that Shopify provides and so if you just used the index, you would get an error once you started to look for number 7. Instead (as you can see from the image), the image for the seventh placeholder is the same as the first and the cycle repeats itself.</p><p>The funny thing is that I was able to achieve the same result by replacing</p><pre><code class="language-Shopify Liquid">{% capture current %}{% cycle 1, 2, 3, 4, 5, 6 %}{% endcapture %}</code></pre><p>with</p><pre><code class="language-Shopify Liquid">{% assign current = forloop.index0 | modulo: 6 | plus: 1  %}</code></pre><p>So <code>cycle</code> appears to be another quirk of the language and one that I can&apos;t see as particularly useful.</p><h4 id="tablerow-1">Tablerow</h4><p>Finally, there&apos;s tablerow which generates rows for a HTML table.</p><p>Such a result can be achieved quite easily using a for loop as well so I&apos;m not sure why Shopify decided to create this particular iteration tag.</p><p>I suppose that when you include the &apos;col&apos; parameter you&apos;re able to create tables with less code. I&apos;ve never seen a need for this particular tag, I&apos;ll <a href="https://help.shopify.com/en/themes/liquid/tags/iteration-tags#tablerow" rel="noopener">refer you back to the documentation if you want to learn more about it</a>.</p><h3 id="variable-tags">Variable Tags</h3><p>Variable tags give us theme developers the ability to organise and section our code better by storing data from our objects and attributes into meaningful variables.</p><p>They are also handy for creating boolean flags. For instance, when we might switch a variable to true if a certain condition has been matched in a loop.</p><p>Variables in Liquid work quite similarly to how they exist in most programming languages but in Liquid, we use the <em><strong>assign </strong>keyword.</em></p><h4 id="assign">assign</h4><p>In Liquid, you use <strong><em>assign</em></strong> for both declaring and assigning a variable.</p><pre><code class="language-Shopify Liquid">{% assign current_collection = collection %}</code></pre><p>The above code helps to make the code in the collection template more readable by calling the collection object &apos;current_collection&apos;.</p><p>We could also assign a value of a number or string just as well.</p><pre><code class="language-Shopify Liquid">{% assign colour = &apos;#7ab55c&apos; %}</code></pre><p>You&apos;ll find that assigning your own variables can be essential when doing complex patterns in Liquid.</p><h4 id="capture">capture</h4><p>The capture tag &apos;captures&apos; the string inside of the opening and closing tags and assigns it to a variable. This is how you can perform string concatenation in Liquid (ie. the process of adding strings from various sources together.</p><pre><code class="language-Shopify Liquid">{% capture url %}/collections/{{ collection.handle }}{% endcapture %} 
{{ collection.title | link_to: url }}</code></pre><p>The example above combines the text &apos;/collections/&apos; with a collection&apos;s handle to form a <code>url</code> variable that is then used on the next line to create a link with that collection&apos;s title.</p><h4 id="increment-and-decrement">increment and decrement</h4><p><code>increment</code> creates a new number variable, and increases its value by 1 every time <code>increment</code> is called on the variable while <code>decrement</code> does the same but decreases the value by 1 instead.</p><p>It might be handy as a shorthand to using the <code>plus</code> or <code>minus</code> filter but the major difference is that both <code>increment</code> and <code>decrement</code> will automatically output the new value when called.</p><h3 id="theme-tags">Theme Tags</h3><p>Theme tags include other functions that assist in theme development. They can be used for pagination, theme structuring and more.</p><h4 id="layout-section-and-include">layout, section and include</h4><p>Layout, section and include are all tags that assist in theme structure.</p><p>By default, any template will load with the layout in the <code>theme.liquid</code> file but you can set a template to load with a different layout using the layout tag at the top of the file with the name of the file you want to load (without the .liquid file).</p><pre><code class="language-Shopify Liquid">{% layout &apos;full-width&apos; %} </code></pre><p>The above code will load the <code>full-width.liquid</code> layout file.</p><p>As for the <code>section</code> and <code>snippet</code> tags, they simply load a section directly inside the place where they are called.</p><p>Snippets can be included anywhere (including other snippets) while sections can be included in layout and template files. They work just like the layout tag.</p><pre><code class="language-Shopify Liquid">{% section &apos;header&apos; %} {% include &apos;snippet&apos; %}</code></pre><p>Note that you can also pass variables into snippets but you can <a href="https://help.shopify.com/en/themes/liquid/tags/theme-tags#include" rel="noopener">learn more about that on the official docs</a>.</p><p>For a primer on Shopify theme structure check out <a href="https://www.youtube.com/watch?v=9t6I-YY4o30" rel="noopener">the third video in my YouTube series on Shopify Theme Development</a>.</p><h4 id="comment-1">comment</h4><p>The <code>comment</code> allows you to leave un-rendered code inside a Liquid template. They work the same as comments in any other programming language.</p><pre><code class="language-Shopify Liquid">{% comment %} Store product title in a variable {% endcomment %}
{% assign product_title = product.title %}</code></pre><h4 id="form-1">form</h4><p>The form tag helps you to create a forms in Shopify. It renders a HTML <code>&lt;form&gt;</code> element along with the required <code>&lt;input&gt;</code> elements to submit the form to a particular endpoint.</p><p>To use the tag, include the form type and any parameters to the right of the <code>form</code> keyword. For example, the following code will generate a form for adding a product variant to the cart and requires a product object as a parameter.</p><pre><code class="language-Shopify Liquid">{% form &quot;product&quot;, product %} ... {% endform %}</code></pre><p>To find a list of the various form types, <a href="https://help.shopify.com/en/themes/liquid/tags/theme-tags#form" rel="noopener">head to the Shopify official docs, you can </a>.</p><h4 id="paginate">paginate</h4><p>The <code>paginate</code> tag assists with pagination in Shopify themes. When wrapped around the loop you wish to paginate through, it will automatically limit the amount of results that show up by the number following the <code>by</code> keyword.</p><pre><code class="language-Shopify Liquid">{% paginate collection.products by 5 %} 
	{% for product in collection.products %} 
        &lt;!--show product details here --&gt; 
    {% endfor %} 
{% endpaginate %}</code></pre><h4 id="raw">raw</h4><p>Raw allows you to output Liquid code on a page without it being parsed.</p><pre><code class="language-Shopify Liquid">{% raw %}{{ 5 | plus: 6 }}{% endraw %} equals 11.</code></pre><p>The above code will look like this on the front-end: {{ 5 | plus: 6 }} equals 11.</p><h4 id="style">style</h4><p>The style tag in Liquid is a alternative to the standard HTML style tag. Using the Liquid version over the HTML one assists with live preview in the theme customiser.</p><pre><code class="language-Shopify Liquid">{% style %} 
    .hero__background-color-container { 
    	background-color: {{ section.settings.background_color }} 
    } 
{% endstyle %}</code></pre><h2 id="liquid-filters">Liquid Filters</h2><p>Filters are simple methods that modify the output of numbers, strings, variables and objects and are denoted by a pipe character (<code>|</code>).</p><p>Using filters, you can modify a value in place (using output tags <code>{{ }}</code>) or assign a modified value to new variable.</p><pre><code class="language-Shopify Liquid">{% assign downcased_title = product.title | downcase %}</code></pre><p>The above filter is called a &apos;string filter&apos; as it takes a string and - in this case - makes all characters within it lowercase.</p><p>There are also filters that take a whole object and &apos;filter&apos; out a particular attribute.</p><pre><code class="language-Shopify Liquid">{{ product | img_url: &apos;100x100&apos; }}</code></pre><p>The above filter takes the product object and <em>&apos;filters out&apos;</em> a url for the product with the dimensions set in the parameter (100px x 100px).</p><p>Shopify&apos;s documentation categorises Liquid filters via Array, Color, Font, HTML, Math, Money, String, URL and other filters.</p><h3 id="array-filters">Array filters</h3><p>Arrays are one area in which the limitations of Liquid become apparent.</p><p>Shopify Liquid is like a dumbed down programming language and common things are often quite simple to achieve in Liquid (like the example above of outputting a product image) but things can get really tricky (and sometimes impossible) when trying to do more complex calculations.</p><p>One area where you will notice this is with arrays.</p><h4 id="first-and-last">first and last</h4><p>Using the filters <code>first</code> or <code>last</code>, you can access the first or last item in an array.</p><pre><code class="language-Shopify Liquid">{{ product.tags | first }}</code></pre><p>Note that you could also access the first item of an array by its 0 index.</p><pre><code class="language-Shopify Liquid">{{ product.tags[0] }}</code></pre><p>Changing the above number to 1 would give you access to the second item in the array, 2 to the third and so-on so-forth.</p><h4 id="size">size</h4><p>The <code>size</code> filter (when call on an array) returns the number of items in that array.</p><pre><code class="language-Shopify Liquid">{{ collections.featured.products | size }}</code></pre><p>Note that you can also use the same filter on a string to return the amount of characters in that string.</p><pre><code class="language-Shopify Liquid">{{ &apos;Learning Liquid is so fun!&apos; | size }}</code></pre><p>The above code will return 26 as that is how many characters make up that particular string.</p><h4 id="join-function join() { [native code] }1">join</h4><p>The <code>join</code> filter takes an array of values and converts it into a single string separated by the parameter that you set after the join keyword.</p><pre><code class="language-Shopify Liquid">{{ product.tags | join: &apos;, &apos; }}</code></pre><p>The above code will output a list of product tags as a string with each item separated by a comma.</p><h4 id="concat-function concat() { [native code] }1">concat</h4><p>The <code>concat</code> filter enables you to combine two arrays together. However, it will not remove duplicate entries from the concatenated array unless you also use the uniq filter.</p><pre><code class="language-Shopify Liquid">{% assign fruits = &quot;apples, oranges, peaches, tomatoes&quot; | split: &quot;, &quot; %} 
{% assign vegetables = &quot;broccoli, carrots, lettuce, tomatoes&quot; | split: &quot;, &quot; %} 
{% assign plants = fruits | concat: vegetables %}</code></pre><p>The above &apos;plants&apos; variable will contain an array with apples, oranges, peaches, tomatoes, broccoli, carrots, lettuce and tomatoes.</p><p>Note the &apos;split&apos; filter. That one is considered a string filter that we will cover in a future section but in this example, it essentially does the opposite of the previous join filter.</p><h4 id="map-function map() { [native code] }1">map</h4><p>The <code>map</code> filter allows you to create an array based on a nested attribute within another array.</p><pre><code class="language-Shopify Liquid">{% assign collection_titles = collections | map: &apos;title&apos; %}</code></pre><p>The above code creates an array of collection titles. You can think of it as a function that loops through all the collections, finds the title attribute for each and then creates a new array with all of those titles.</p><h4 id="reverse-function reverse() { [native code] }1">reverse</h4><p>A simple array filter that reverses the order of an array.</p><h4 id="sort-function sort() { [native code] }1">sort</h4><p>As the name suggests, the <code>sort</code> filter sorts the elements of an array by a given attribute of an element in the array.</p><pre><code class="language-Shopify Liquid">{% assign products = collection.products | sort: &apos;price&apos; %} 
{% for product in products %} 
	&lt;h4&gt;{{ product.title }}&lt;/h4&gt; 
{% endfor %}</code></pre><p>When sorting numbers, it appears to sort from smallest to biggest and when sorting text, it appears to sort in alphabetical order with uppercase characters coming before lowercase characters.</p><p>If you&apos;d like the order in reverse of that however, you can always chain a <code>reverse</code> filter to the end.</p><h4 id="where">where</h4><p>The <code>where</code> filter allows you to filter down an array based on a certain property and value for each item.</p><p>For example,</p><pre><code class="language-Shopify Liquid">{% assign shoes = collection.products | where: &quot;type&quot;, &quot;kicks&quot;%} 
{% for product in shoes %} 
	- {{ product.title }} 
{% endfor %}</code></pre><p>outputs the same as</p><pre><code class="language-Shopify Liquid">{% for product in collection.products %} 
	{% if product.type == &quot;kicks&quot; %} 
    	- {{ product.title }} 
    {% endif %} 
{% endfor %} </code></pre><h4 id="uniq">uniq</h4><p>The <code>uniq</code> filter (short for &apos;unique&apos;) filters out duplicate values in an array.</p><p>For example, if we take two lists which could have duplicate values and concatenate them, Liquid will not merge the duplicate values by default.</p><pre><code class="language-Shopify Liquid">{% assign heavyweight = &quot;Stipe, Daniel, Junior, Curtis, Derek&quot; | split: &quot;, &quot; %} 
{% assign pound4pound = &quot;Jon, Henry, Stipe, Amanda&quot; | split: &quot;, &quot; %} 
{% assign fighters = heavyweight | concat: pound4pound %}</code></pre><p>The <code>fighters</code> array in this instance would contain &apos;Stipe&apos; twice as his name appears in both lists.</p><p>To fix this, we would simply chain a <code>uniq</code> filter on the end.</p><pre><code class="language-Shopify Liquid">{% assign fighters = heavyweight | concat: pound4pound | uniq %}</code></pre><p>The fighters array will now contain each fighter&apos;s first name only once, even if it appears in both lists.</p><h3 id="string-filters">String Filters</h3><p>Right up there with array filters in terms of importance (in my opinion) are the string filters which simply modify the output of strings.</p><p>There are over 30 different string filters in Liquid and so I won&apos;t go over all of them individually here but you can <a href="https://help.shopify.com/en/themes/liquid/filters/string-filters" rel="noopener">find the full list on the official docs</a>.</p><h4 id="append-prepend">append &amp; prepend</h4><p><code>append</code> and <code>prepend</code> appends (adds a string value to the end of) and prepends (adds a string value to the beginning of) the string being acted on.</p><pre><code class="language-Shopify Liquid">{{ &apos; Liquid &apos; | prepend: &quot;Hello&quot; | append: &quot;fans!&quot; }}</code></pre><p>The above Liquid tag will render as &quot;Hello Liquid fans!&quot;.</p><h4 id="upcase-downcase">upcase &amp; downcase</h4><p>As the names suggest, these filters will either captilize every letter of a string or lowercase every letter.</p><p>These filters are particularly useful for testing the equality of two strings as the equality operator &quot;==&quot; is case-sensitive.</p><p>For example:</p><pre><code class="language-Shopify Liquid">{% assign product_type_1 = &quot;Shoe&quot; %} 
{% assign product_type_2 = &quot;shoe&quot; %} 
{% if product_type_1 == product_type_2 %} 
	True 
{% else %}
	False 
{% endif %}</code></pre><p>The above code will output &apos;False&apos; as the &apos;s&apos; in shoe is a capital letter in one string and not the other.</p><p>To force the comparison to not be case-sensitive, we can simply make sure all the characters are converted to uppercase or lower case using the <code>upcase</code> or <code>downcase</code> filter before comparison like such:</p><pre><code class="language-Shopify Liquid">{% assign product_type_1 = &quot;Shoe&quot; | downcase %} 
{% assign product_type_2 = &quot;shoe&quot; | downcase %} 
{% if product_type_1 == product_type_2 %}
	True 
{% else %}
	False 
{% endif %}</code></pre><p>With the use of the <code>downcase</code> filter for both, the output will now be True instead of False.</p><h4 id="remove-removefirst-replace-and-replacefirst">remove, remove_first, replace and replace_first</h4><p>As the names suggest, these filters remove or replace occurrences of a substring from a string.</p><ul><li><code>remove</code> will remove a substring from wherever it appears in the input string</li><li><code>remove_first</code> will remove the first occurrence of a substring in the input string</li><li><code>replace</code> will remove a substring from wherever it appears in the input string and replace it with another string that you specify, and</li><li><code>replace_first</code> will replace the first occurrence of a substring in the input string</li></ul><p>Here are all of them in action</p><pre><code class="language-Shopify Liquid">{{ &quot;Hello, world. Goodbye, world.&quot; | remove: &quot;world&quot; }} --&gt; &quot;Hello, . Goodbye, .&quot; 
{{ &quot;Hello, world. Goodbye, world.&quot; | remove_first: &quot;world&quot; }} --&gt; &quot;Hello, . Goodbye, world.&quot; 
{{ &quot;Awesome Shoes&quot; | replace: &apos;Awesome&apos;, &apos;Mega&apos; }} --&gt; &quot;Mega Shoes&quot; 
{{ &quot;Awesome Awesome Shoes&quot; | replace_first: &apos;Awesome&apos;, &apos;Mega&apos; }} --&gt; &quot;Mega Awesome Shoes&quot;</code></pre><h4 id="strip-lstrip-rstrip-striphtml-and-stripnewlines">strip, lstrip, rstrip, strip_html and strip_newlines</h4><p>These are all filters for stripping content from a string. <code>lstrip</code> strips tabs, spaces, and newlines (all whitespace) from the left side of a string, <code>rstrip</code> does the same but for just the right side and <code>strip</code> does both (ie. strips whitespace from both sides).</p><p>As the names suggest, <code>strip_html</code> will remove any HTML tags from a string and <code>strip_newlines</code> will remove any new lines from a string.</p><h4 id="truncate-truncatewords">truncate &amp; truncatewords</h4><p><code>truncate</code> &apos;truncates&apos; a string down to the number of characters passed as the first parameter with an ellipsis (...) appended to the end.</p><p><code>truncatewords</code> on the other hand &apos;truncates&apos; a string down to the a number of words (as opposed to characters).</p><p>Both filters will apply an ellipsis unless otherwise instructed and for <code>truncate</code>, the ellipsis is included in the character count.</p><p><a href="https://help.shopify.com/en/themes/liquid/filters/string-filters#truncate" rel="noopener">See the official docs for more info</a>.</p><h4 id="urlencode-urlescape-and-urlparamescape">url_encode, url_escape and url_param_escape</h4><p>All of these filters assist in filtering out and replacing URL-unsafe characters in a string.</p><p>As it&apos;s often rare that you would need these, I&apos;ll refer you to the <a href="https://help.shopify.com/en/themes/liquid/filters/string-filters#url_encode" rel="noopener">official docs to learn more about these filters and their differences</a>.</p><h4 id="md5-sha1-sha256-hmacsha1-and-hmacsha256">md5, sha1, sha256, hmac_sha1 and hmac_sha256</h4><p>These are rare filters which are all concerned with converting strings into &apos;hashes&apos;. <code>md5</code> converts a string into a MD5 hash, <code>sha1</code> converts a string into a SHA-1 hash, <code>sha256</code> into a SHA-256 hash and so on.</p><p>If you don&apos;t know what a hash is then don&apos;t worry. You probably don&apos;t need to know what these are.</p><h4 id="camelcase">camelcase</h4><p>Camelcase is the practice of writing phrases such that each word or abbreviation in the middle of the phrase begins with a capital letter, with no intervening spaces or punctuation. Using the <code>camelcase</code> filter, you can convert a string to this particular format.</p><pre><code class="language-Shopify Liquid">{{ &apos;coming-soon&apos; | camelcase }}</code></pre><p>The above snippet will return &quot;ComingSoon&quot;.</p><h4 id="capitalize">capitalize</h4><p>The <code>capitalize</code> filter capitalizes the first word in a string.</p><h4 id="escape">escape</h4><p>The <code>escape</code> filter is one that helps you to &apos;escape&apos; HTML. You can think of it like <code>strip_html</code> but instead of simply removing HTML, the escape filter replaces it with special characters that are not &apos;parsed&apos; by your browser.</p><p>If you <em>escape</em> a string before outputting it in Liquid, then the tags will show up rather than being interpreted as HTML.</p><p>For example, <code>{{ &apos;&lt;h1&gt;Hello!&lt;/h1&gt;&apos; | escape }}</code> will return &apos;&lt;h1&gt;Hello!&lt;/h1&gt;&apos; explicitly rather than create a H1 tag and the result in the HTML markup of you page would be &amp;lt;h1&amp;gt;Hello!&amp;lt;/h1&amp;gt;</p><h4 id="handlehandleize">handle/handleize</h4><p>The <code>handleize</code> filter formats a string into a Liquid handle. This is a process that happens automatically in Shopify when you create a new product, collection or similar. Just like how <a href="https://help.shopify.com/en/themes/liquid/basics/handle" rel="noopener">Shopify creates a handle out of your product title</a>, you can perform that same process on any string with this filter.</p><h4 id="newlinetobr">newline_to_br</h4><p>This one is pretty simple, it inserts a linebreak HTML tag (&lt;code<br>) in front of each line break in a string.</p><h4 id="pluralize">pluralize</h4><p>If you&apos;re outputting a unit value in Liquid, you can avoid using an if statement to determine the singular or pluralized version of the unit by using this <code>pluralize</code> filter.</p><p>For instance,</p><pre><code class="language-Shopify Liquid">{{ cart.item_count }} {{ cart.item_count | pluralize: &apos;item&apos;, &apos;items&apos; }}</code></pre><p>In this example, if the item count was 1, the output would be &quot;1 item&quot;. If it was 3, the output would be &quot;3 items&quot;.</p><h4 id="split">split</h4><p>We saw the <code>split</code> filter earlier when we were looking at array filters. It allows us to create an array from a string like such:</p><pre><code class="language-Shopify Liquid">{% assign fruits = &quot;apples, oranges, peaches, tomatoes&quot; | split: &quot;, &quot; %}</code></pre><p>The above <code>fruits</code> object will now hold an array with an item for each fruit name.</p><h4 id="slice-function slice() { [native code] }1">slice</h4><p>The <code>slice</code> filter allows us to create a substring. It takes two parameters, the first for the position at which to start cutting the string and second for the length of substring (defaults to 1 if no value is provided).</p><pre><code class="language-Shopify Liquid">{{ &quot;block-120&quot; | slice: 6, 3 }}</code></pre><p>The above will slice the input string from after the dash and output the last part of the string, &quot;120&quot;.</p><h3 id="url-filters">URL Filters</h3><p>All files (including images, CSS files and Javascript files) that you upload to your Shopify store will be dynamically stored in Shopify&apos;s Content Delivery Network (CDN). This means that anytime you want to retrieve an asset in your theme, you&apos;re most likely going to have to use a URL filter.</p><p>These filters usually take a relative path or filename and turn it into fully formed URL. Let&apos;s have a look!</p><h4 id="asseturl">asset_url</h4><p>This filter takes the filename of an asset in your theme&apos;s asset folder and returns a fully formed URL.</p><pre><code class="language-Shopify Liquid">{{ &apos;shop.css&apos; | asset_url }}</code></pre><p>The result of the above would look something like this <code>//cdn.shopify.com/s/files/1/0087/0462/t/394/assets/shop.css?28253</code>.</p><p>As you can see, you have the domain of cdn.shopify.com, followed by a few keywords, slashes and digits, followed by the directory/file name and ending with a version number for the asset.</p><p>This is what I mean by &apos;fully formed URL&apos;. To figure out this URL ourselves is near impossible and that&apos;s why we need these filters.</p><h4 id="imgurl">img_url</h4><p>As you may have guessed, the <code>img_url</code> filter generates a URL path to an image. It can be used in a variety of ways.</p><p>For instance,</p><pre><code class="language-Shopify Liquid">{{ variant | img_url }}, 
{{ variant.image | img_url }}, and 
{{ variant.image.src | img_url }}</code></pre><p>... will all return the variant&apos;s image url.</p><p>As you can see, it&apos;s quite flexible and can be used directly on any product, variant, line item, collection, article or image object.</p><p>Usually, you&apos;ll want to pass in a parameter to control the size of the img with the filter. By default, Shopify will serve a 100px width version of your image which is usually too small. This encourages you to think about how large you actually need the image to be as you&apos;ll be specifying the exact width (and height if you like) of the image that gets served from the CDN.</p><p>To learn more about the size parameter as well as the other parameters like crop, scale and format, <a href="https://help.shopify.com/en/themes/liquid/filters/url-filters#img_url" rel="noopener">check out the official documentation</a>.</p><h4 id="assetimgurl">asset_img_url</h4><p>A hybrid of the last two, <code>asset_img_url</code> returns the asset URL of an image in the &quot;assets&quot; folder of a theme and also accepts an image size parameter.</p><pre><code class="language-Shopify Liquid">{{ &apos;logo.png&apos; | asset_img_url: &apos;300x&apos; }}</code></pre><h4 id="fileurl">file_url</h4><p>Use this filter to form a url based on a filename that you&apos;ve uploaded to the &apos;files&apos; section of your Shopify admin.</p><pre><code class="language-Shopify Liquid">{{ &apos;size-chart.pdf&apos; | file_url }}</code></pre><h4 id="fileimgurl">file_img_url</h4><p>Just like we saw with <code>asset_url</code> and <code>asset_img_url</code>, when the file we want to access from the files section of our store is an image, we can use the <code>file_img_url</code> filter to set an image size parameter.</p><pre><code class="language-Shopify Liquid">{{ &apos;logo.png&apos; | file_img_url: &apos;1024x768&apos; }}</code></pre><h4 id="customerloginlink">customer_login_link</h4><p>This filter turns a string of your choice into a text link to the customer login page.</p><pre><code class="language-Shopify Liquid">{{ &apos;Log in&apos; | customer_login_link }}</code></pre><p>The above code would return something like this: <code><a href="https://www.christhefreelancer.com/account/login">Log in</a></code>.</p><h4 id="globalasseturl-and-shopifyasseturl">global_asset_url and shopify_asset_url</h4><p>Both these filters allow you to access the url for &apos;global assets&apos; that are found on Shopify&apos;s servers.</p><p>A full list of the different global assets can be found <a href="https://help.shopify.com/en/themes/liquid/filters/url-filters#global_asset_url" rel="noopener">here on the official docs</a>.</p><h4 id="linkto-linktovendor-linktotype-linktotag-linktoaddtag-and-linktoremovetag">link_to, link_to_vendor, link_to_type, link_to_tag, link_to_add_tag and link_to_remove_tag</h4><p>All of these filters help you create a link tag.</p><p>The first one, the generic <code>link_to</code> tag is simply an alternative to writing a link tag in HTML.</p><p>The code...</p><pre><code class="language-Shopify Liquid">{{ &apos;Shopify&apos; | link_to: &apos;https://www.shopify.com&apos;,&apos;A link to Shopify&apos; }}</code></pre><p>... will render <code><a href="https://www.shopify.com">Shopify</a></code></p><p>The others take the name of a vendor, type or tag and generates a link to it.</p><p><code>link_to_vendor</code> and <code>link_to_type</code> take an input string and create a link to filter by that vendor or type.</p><p>For instance,</p><pre><code class="language-Shopify Liquid">{{ &quot;Nike&quot; | link_to_vendor }}</code></pre><p>... will create a link to a page with products of just the vendor &quot;Nike&quot; and...</p><pre><code class="language-Shopify Liquid">{{ &quot;jeans&quot; | link_to_type }}</code></pre><p>... will create a link to a page with products with the type of &quot;jeans&quot;.</p><p><code>link_to_tag</code> works in exactly the same way but for tags, there are two additional filters that let you add and remove tags to/from your current list of tag filters.</p><p>This way, if you can provide users the option to filter by more than one tag.</p><p>For full details, <a href="https://help.shopify.com/en/themes/liquid/filters/url-filters#link_to" rel="noopener">check out the page on the official docs</a>.</p><h4 id="sortby">sort_by</h4><p>This filter takes a collection url and adds the necessary query parameter to sort the results of a collection.</p><pre><code class="language-Shopify Liquid">{{ collection.url | sort_by: &apos;best-selling&apos; }}</code></pre><p>The above code would output something like <code>/collections/widgets?sort_by=best-selling</code>.</p><h4 id="urlfortype-and-urlforvendor">url_for_type and url_for_vendor</h4><p>Similar to <code>link_to_type</code> and <code>link_to_vendor</code>, these generate just the url of a destination page that filters products by type and vendor.</p><h4 id="within">within</h4><p>The <code>within</code> filter creates a <em>collection-aware</em> product URL. Basically, it prepends <code>/collections/collection-handle</code> to a product URL, where <code>collection-handle</code> is the handle of the collection that is currently being viewed.</p><p>As it states in the docs,</p><blockquote>When a product is collection-aware, its product template can access the collection output of the collection that it belongs to. This allows you to add in collection-related content, such as related products.</blockquote><pre><code class="language-Shopify Liquid">&lt;a href=&quot;{{ product.url | within: collection }}&quot;&gt;{{ product.title }}&lt;/a&gt;</code></pre><h4 id="paymenttypeimgurl">payment_type_img_url</h4><p>Finally, <code>payment_type_img_url</code> returns the URL of the payment type&apos;s SVG image. Used in conjunction with the <code>shop.enabled_payment_types</code> variable.</p><p>As it&apos;s not all that common, I&apos;ll <a href="https://help.shopify.com/en/themes/liquid/filters/url-filters#payment_type_img_url" rel="noopener">refer you to the official docs to learn more about it</a>.</p><h3 id="html-filters">HTML Filters</h3><p>HTML Filters have a similar function to HTML helper functions in other programming languages. They create HTML elements based on Liquid properties or a store&apos;s assets.</p><h4 id="imgtag">img_tag</h4><p>The <code>img_tag</code> filter simply acts as an alternative to writing an image tag in HTML with the added benefit of being able to extract an image url from an object containing an image.</p><p>What I mean by that is that you can use the filter to create a tag of an already formed url like so</p><pre><code class="language-Shopify Liquid">{{ &apos;logo.png&apos; | asset_url | img_tag: &apos;Company Logo&apos;, &apos;cssclass1 cssclass2&apos; }}</code></pre><p>Where the first parameter is for the alt attribute of the image and the second is for any classes.</p><p>Or, you can call the filter directly on an object like so.</p><pre><code class="language-Shopify Liquid">{{ collection | img_tag: &apos;alternate text&apos;, &apos;css-class&apos;, &apos;large&apos; }}</code></pre><p>The optional third parameter is specifying the size of the resulting image and saves you from having to use an <code>img_url</code> filter before it in order to specify size.</p><h4 id="stylesheettag-and-scripttag">stylesheet_tag and script_tag</h4><p>These tags are handy for generating the necessary stylesheet and script tags for bringing stylesheets and javascript files into your project.</p><p>If you&apos;ve dived into your <code>theme.liquid</code> file before, you might have seen something like this:</p><pre><code class="language-Shopify Liquid">{{ &apos;application.css.scss&apos; | asset_url | stylesheet_tag }} 
{{ &apos;application.js&apos; | asset_url | script_tag }}</code></pre><p>Both of these tags take the filename of the asset and using the <code>asset_url</code> filter we saw earlier, it creates a fully-formed asset url and then creates the necessary tag to include the CSS and JS in the project.</p><h4 id="currencyselector-paymentbutton-timetag-and-paymenttypesvgtag">currency_selector, payment_button, time_tag and payment_type_svg_tag</h4><p>The other HTML filters assist in generating a drop-down list that customers can use to select an accepted currency on your storefront, creating a dynamic checkout button for a product, converting a timestamp into a &#xA0;tag and generating an <code>&lt;svg&gt;</code> tag of the requested payment type image for inlining purposes, respectively.</p><p>You can <a href="https://help.shopify.com/en/themes/liquid/filters/html-filters" rel="noopener">learn more about these less common filters on the official docs</a>.</p><h3 id="math-filters">Math Filters</h3><p>In Liquid, any math you wish to perform inside your templates needs to be done with the use of a Math filter.</p><p>The biggest limitation to using Math filters for mathematical operations is that filters in Liquid always operate left to right in a linear chain and therefore, there is no way to change the order of operations except for separating out complex calculations into multiple variables.</p><p>For instance, here are two examples I use in my Shopify Theme Programming class</p><pre><code class="language-Shopify Liquid">{% assign average_price = 50 | plus: 20 | plus: 30 | divided_by: 3 %}</code></pre><p>In the above calculation, the left to right order of operations in Liquid actually produces the intended result. In regular math, you would need to use parentheses to make sure all the addition happens first before the division as <em>division</em> comes before <em>addition</em> in regular math.</p><p>What if for instance though, we have a customer who buys 2 shirts at $8 each. He also buys two pairs of shorts for $20 each that each get a $5 discount. Now, in order to control the order of operations, we need to separate parts of the equation into seperate variables and then combine them.</p><pre><code class="language-Shopify Liquid">{% assign cost_of_shirts = 8 | times: 2 %} 
{% assign cost_of_shorts = 20 | minus: 5 | times: 2 %} 
{% assign cost = cost_of_shirts | plus: cost_of_shorts %}</code></pre><p>As you can see, the Math filters in Liquid follow a pretty human readable naming convention.</p><p>If you would like to read about all the Math filters available in Liquid, you can <a href="https://help.shopify.com/en/themes/liquid/filters/math-filters" rel="noopener">do so here on the official docs</a>.</p><h3 id="money-filters">Money Filters</h3><p>Money filters are super simple (but handy) filters for formatting prices.</p><p>In Liquid, the raw value of a price is represented in cents (not dollars or euros) as technically, you can&apos;t have a price of lower than one cent. Therefore, in order to make your prices human-readable, you&apos;ll need to use a money filter.</p><ul><li>The <code>money</code> filter formats the price based on the shop&apos;s <strong>HTML without currency</strong> setting</li><li>The <code>money_with_currency</code> filter formats the price based on the shop&apos;s <strong>HTML with currency</strong> setting.</li><li>The <code>money_without_trailing_zeros</code> filter formats the price based on the shop&apos;s <strong>HTML with currency setting</strong> and excludes the decimal point and trailing zeros.</li><li>Finally, the <code>money_without_currency</code> filter formats the price using a decimal.</li></ul><p>To go in-depth with money filters, <a href="https://help.shopify.com/en/themes/liquid/filters/money-filters" rel="noopener">check out the page on the official docs</a>.</p><h3 id="other-filters">Other Filters</h3><p>While Shopify&apos;s documentation organises the remaining filters by a few extra categories, I&apos;ll lump them altogether as we&apos;ve already covered the most important ones.</p><h4 id="color-filters">Color Filters</h4><p>As the name suggests, Color filters take a colour value (either a hex, hsla or rgba value) and modify it in some way.</p><pre><code class="language-Shopify Liquid">{{ &apos;rgba(122, 181, 92, 0.5)&apos; | color_to_hex }}</code></pre><p>The above example simply takes an rgba colour code and converts it to hex.</p><p>In this instance, the output would be #7ab55c.</p><p>You can read the <a href="https://help.shopify.com/en/themes/liquid/filters/color-filters" rel="noopener">full list of Color filters on Shopify&apos;s official documentation</a>.</p><h4 id="font-filters">Font Filters</h4><p>Font filters are to be used exclusively on font objects. You can use font filters to help load fonts or to obtain font variants.</p><p>Again, I&apos;ll refer to <a href="https://help.shopify.com/en/themes/liquid/filters/font-filters" rel="noopener">the official docs here if you&apos;d like to learn more</a>.</p><h4 id="the-rest">The rest</h4><p>Looking through the remaining filters, I can see a few that I would find useful. One, the <code>date</code> filter for formatting a date, second, the <code>default</code> filter for specifying a default value and third, the <code>json</code> filter for exposing objects in JSON format to your front-end so that you can use them in Javascript.</p><p>If you&apos;d like to read more about these filters as well as the 8 remaining, <a href="https://help.shopify.com/en/themes/liquid/filters/additional-filters" rel="noopener">check out this page on the official documentation</a>.</p><h2 id="conclusion">Conclusion</h2><p>Whoosh! That was quite the blog post huh! I probably could have made this into an eBook instead but for now, this&apos;ll stay a blog post.</p><p>I know I went into a lot of detail here (and left out a lot of detail at the same time) but my intention was explain Shopify Liquid concepts rather than list off information that can already be found in the official documentation.</p><p>If you&apos;d like to actually put what you&apos;ve learned here today into practice, I&apos;ve created a <a href="https://skl.sh/2AETO9r" rel="noopener">Skillshare class that takes the Shopify Liquid theory that you&apos;ve learned in this post and applies it to an actual theme. Go check it out!</a></p><p>Otherwise, leave a comment below and let me know how you find the guide. Too much information? What would you like to know more about? Let me know!</p><p>Thanks for reading.</p><p>Until next time,<br>Chris</p>]]></content:encoded></item><item><title><![CDATA[Where to Work in Canggu, Bali (Cafes and Coworking Spaces)]]></title><description><![CDATA[<p><em>First published June 6 2018, Updated December 20 2018</em></p><p>Canggu is the new hottest region in Bali for digital nomads and if you check out the cafe scene here, you&apos;ll understand why.</p><p>I started off with a small list of spaces to check out and to be honest,</p>]]></description><link>https://www.christhefreelancer.com/coworking-cafes-canggu-bali/</link><guid isPermaLink="false">60ac2eabfcfa4a6b50182a4c</guid><category><![CDATA[Lifestyle]]></category><category><![CDATA[Coworking]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Wed, 19 Dec 2018 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/Canggu-Coworking-Cafes.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.christhefreelancer.com/content/images/2021/05/Canggu-Coworking-Cafes.jpg" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)"><p><em>First published June 6 2018, Updated December 20 2018</em></p><p>Canggu is the new hottest region in Bali for digital nomads and if you check out the cafe scene here, you&apos;ll understand why.</p><p>I started off with a small list of spaces to check out and to be honest, I wasn&apos;t expecting much. However, after visiting over 10 work friendly cafes in Canggu, I&apos;m still having to add more to the list.</p><p>The truth is that almost any cafe or restaurant in Canggu with wifi available is a fair enough location to take out your computer - Even my local <em>Warung </em>(Indonesian restaurant) has wifi for guests!</p><p>Of course, you&apos;ve got some pretty serious coworking spaces in Canggu as well and so in this article, I&apos;ll be sure to cover them also.</p><p>All in all, I checked out 14 coworking spaces and cafes for remote work and without further ado, let&apos;s jump straight into what I found!</p><p><em>Note: In order to take into account the prices of each, I bought the same item (an Iced Latte) at all 14 and have included the cost as the &apos;Iced Coffee Index&apos;</em></p><h2 id="machinery"><a href="https://www.facebook.com/MachineryCafeBali/" rel="noopener">Machinery</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/machinery-canggu.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/machinery-canggu.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/machinery-canggu.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/machinery-canggu.jpg 1080w"></figure><p><em>Location: Jalan Pantai Batu Bolong| Iced Coffee Index: 38k IDR ( $2.70 USD)</em></p><p>One thing that I had heard before coming to Bali was that while Wifi was ubiquitous in Canggu, many of the cafes were set outside and did not have air conditioning. So, for the first space I checked out, I gravitated towards <em><a href="https://www.facebook.com/MachineryCafeBali/" rel="noopener">Machinery</a>, </em>a indoor cafe with laptop workers always visible inside as I drove past.</p><p>It&apos;s a little small but with good availability of power points and fast internet.</p><p><strong>Hours: </strong>7:30am to 8pm everyday</p><p><strong>Noise Level: </strong>Not the quietest, music playing.</p><p><strong>Ergonomics: </strong>Not the best. Chairs are either couches against the wall or wooden chairs with a single cushion on them. Tables with gaps, not the best.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>Machinery Cafe</td><td>14.1 Mbps</td><td>28.2 Mbps</td><td>40 ms</td><td>12:46 pm</td></tr></tbody></table><!--kg-card-end: html--><h2 id="kembali-bembuk"><a href="https://www.kembalibumbak.com/" rel="noopener">Kembali Bembuk</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Kembali-Bembuk.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Kembali-Bembuk.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Kembali-Bembuk.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Kembali-Bembuk.jpg 1080w"></figure><p><em>Location: Jalan Bumbak Dauh| Iced Coffee Index: 34.5k IDR ($2.45 USD)</em></p><p><a href="https://www.kembalibumbak.com/" rel="noopener">Kembali</a> was a recommendation by our good friend Loukman Nacik, who - if you haven&apos;t already <a href="https://www.youtube.com/watch?v=UPsIuYPnWjg" rel="noopener">seen on my YouTube channel</a> - is a man of style and taste.</p><p>Pictured above is the outdoor seating area with a little bit of a view of the inside cafe. Not shown in the picture however are the circular tables surrounded by gardens and an umbrella for shade. Beautiful but not the best for work (in my humble opinion).</p><p>I give this space my tick of approval for ambiance but as a work space, I&apos;m just a little bit more particular when it comes to ergonomics.</p><p><strong>Hours: </strong>7am to 10pm everyday</p><p><strong>Noise Level: </strong>There is music but it&apos;s not too obnoxious.</p><p><strong>Ergonomics: </strong>Poor. Metal chairs, couches and benches.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>KEMBALI</td><td>19.3 Mbps</td><td>3.57 Mbps</td><td>3 ms</td><td>12:48 pm</td></tr></tbody></table><!--kg-card-end: html--><h2 id="district-canggu"><a href="https://districtcanggu.com/" rel="noopener">District Canggu</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/district-canggu.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/district-canggu.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/district-canggu.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/district-canggu.jpg 1080w"></figure><p><em>Location: Jalan Pantai Berawa| Iced Coffee Index: 45k IDR ($3.2 USD) | <a href="https://districtcanggu.com/coworking" rel="noopener">Click here for coworking prices</a></em></p><p><a href="https://districtcanggu.com/" rel="noopener">District</a> is an interesting space in the sense that it&apos;s both a cafe and a coworking space.</p><p>Pictured above is the downstairs area where there is a slight breeze from the rice paddies but of course, no air conditioning. The upstairs area looks very similar but is reserved for coworking members.</p><p>Upstairs, they advertise high-speed (45 mbps) fibreoptic broadband (with 30 mbps backup) at the &apos;competitive price&apos; of 44k IDR per hour ($3.17 USD) all the way up to 1.65m IDR ($118.8 USD) for the month.</p><p><strong>Hours: </strong>8am to 10pm daily</p><p><strong>Noise Level: </strong>Low</p><p><strong>Ergonomics:</strong> Metal chairs but at least they have seat backs!</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>DISTRICTCANGGU</td><td>4.87 Mbps</td><td>4.59 Mbps</td><td>51 ms</td><td>1pm</td></tr></tbody></table><!--kg-card-end: html--><h2 id="nude"><a href="https://www.nudeincanggu.com/" rel="noopener">Nude</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/nude-canggu.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/nude-canggu.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/nude-canggu.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/nude-canggu.jpg 1080w"></figure><p><em>Location: Jalan Pantai Berawa | Iced Coffee Index: 28.5k IDR ($2.03 USD)</em></p><p><a href="https://www.nudeincanggu.com/" rel="noopener">Nude</a> is another recommendation from our friend Loukman but by the looks of things, is quite popular with a few other nomads around Canggu.</p><p>Predominantly a lunch and breakfast spot, the air conditioned room appears to get crowded after lunch. With power points only against the walls, we lasted as long as the charge on our computers.</p><p><strong>Hours: </strong>7am to 10pm daily</p><p><strong>Noise Level: </strong>Music is a little loud in the aircon room</p><p><strong>Ergonomics: </strong>Not the worst but far from an office setup</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>@nudecanggu</td><td>4.91 Mbps</td><td>1.44 Mbps</td><td>42 ms</td><td>2pm</td></tr></tbody></table><!--kg-card-end: html--><h2 id="bahn-mi-and-beans"><a href="http://banhmiandbeans.com/" rel="noopener">Bahn Mi and Beans</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Bahn-Mi-Beans-16-9-1080x608.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Bahn-Mi-Beans-16-9-1080x608.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Bahn-Mi-Beans-16-9-1080x608.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Bahn-Mi-Beans-16-9-1080x608.jpg 1080w"></figure><p><em>Location: Jalan Raya Semat | Iced Coffee Index: 25k IDR ($1.78 USD)</em></p><p>With one of the fastest upload speeds that I tested in Canggu, <a href="http://banhmiandbeans.com/" rel="noopener">Bahn Mi and Beans</a> came out as a bit of dark horse.</p><p>There&apos;s not a lot of hype around Bahn Mi and Beans as it isn&apos;t the trendiest cafe in Canggu but perhaps it&apos;s a good thing, as after lunch I&apos;ve found the place to be quite deserted and easy to stay focused.</p><p><strong>Hours: </strong>8am to 9pm daily</p><p><strong>Noise Level: </strong>Some music but not annoying</p><p><strong>Ergonomics: </strong>Good but only on the main table (to the left as you come in)</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>Bahn Mi &amp; Beans</td><td>8.34 Mbps</td><td>17.8 Mbps</td><td>50 ms</td><td>11:46am</td></tr></tbody></table><!--kg-card-end: html--><h2 id="matra-coliving-space"><a href="https://www.matrabali.com/" rel="noopener">Matra Coliving Space</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Matra-Coliving-Space-1080x608.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Matra-Coliving-Space-1080x608.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Matra-Coliving-Space-1080x608.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Matra-Coliving-Space-1080x608.jpg 1080w"></figure><p><em>Location: Jalan Tegel Sari | Iced Coffee Index: 27k IDR ($1.92 USD) | Coworking without purchase (Higher Speed): 100k IDR per day ($7.11 USD)</em></p><p>Located a 5 minute walk from my villa is this coliving space called <a href="https://www.matrabali.com/" rel="noopener">Matra</a> and the funny thing is, you don&apos;t need to even be staying there to use the coworking space.</p><p>That&apos;s right! <a href="https://www.matrabali.com/" rel="noopener">Matra</a> charges for just for internet and not the use of the space. A purchase at the cafe is enough to use their free tier of internet.</p><p>Surely this deal can&apos;t last forever and I&apos;m probably shooting myself in the foot by giving the secret away but hell! Even if they charged a fair monthly rate, I&apos;d be down. I just don&apos;t know if it&apos;s worth the 100k IDR ($7.11 USD) per day for the slightly faster internet (see speed test result below).</p><p><strong>Hours: </strong>24/7</p><p><strong>Noise Level: </strong>Low</p><p><strong>Ergonomics: </strong>Great</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td>&#xA0;</td><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>PAID</td><td>Matra Coliving</td><td>11.43 Mbps</td><td>11.14 Mbps</td><td>6 ms</td><td>10:40 am</td></tr><tr><td>FREE</td><td>Matra Coliving</td><td>1.98 Mbps</td><td>1.93 Mbps</td><td>14 ms</td><td>10:40 am</td></tr></tbody></table><!--kg-card-end: html--><h2 id="crate"><a href="http://cratebali.com/" rel="noopener">Crate</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Crate-Canggu-1080x608.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Crate-Canggu-1080x608.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Crate-Canggu-1080x608.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Crate-Canggu-1080x608.jpg 1080w"></figure><p><em>Location: Jalan Canggu Padang Linjong| Iced Coffee Index: 35k IDR ($2.47 USD)</em></p><p>I&apos;ll be honest. I took my speed test, recorded the iced coffee price and took my photos before I even made it to the front of the line. After which, I left straight away.</p><p>Apart from having the opportunity to get those Instagram bangers under the umbrellas where you can look out over the lawn, I can&apos;t see how <a href="http://cratebali.com/" rel="noopener">Crate</a> can be a productive space.</p><p>Now of course, I came at a busy time but even still, I&apos;m not seeing seat backs or power points anywhere. Yeah, I think I&apos;ll pass.</p><p><strong>Hours: </strong>6am to 5pm daily</p><p><strong>Noise Level: </strong>High when busy</p><p><strong>Ergonomics: </strong>Bad. No seatbacks</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>Crate Cafe</td><td>6.67 Mbps</td><td>0.64 Mbps</td><td>44 ms</td><td>1pm</td></tr></tbody></table><!--kg-card-end: html--><h2 id="cafe-vida"><a href="http://cafe-vida-bali.business.site/" rel="noopener">Cafe Vida</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Cafe-Vida-1080x608.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Cafe-Vida-1080x608.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Cafe-Vida-1080x608.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Cafe-Vida-1080x608.jpg 1080w"></figure><p><em>Location: Jalan Pantai Batu Bolong | Iced Coffee Index: 38.2K IDR ($2.69 USD)</em></p><p>I don&apos;t know if you&apos;ve ever been to Ubud but I feel transported there whenever I visit <a href="http://cafe-vida-bali.business.site/">Cafe Vida</a>. The cafe has an earthy garden feel with traditional balinese architecture in the back.</p><p>I decided to check it out after one of our earlier roommates at the villa mentioned it but it&apos;s definitely not my vibe and if it was, I&apos;d probably rather just go to Ubud lol!</p><p><strong>Hours: </strong>7am to 10:30pm daily</p><p><strong>Noise Level: </strong>Music and loud when crowded</p><p><strong>Ergonomics: </strong>Standard for a cafe</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>Vida Garden Cafe</td><td>2.00 Mbps</td><td>9.25 Mbps</td><td>&#xA0;40 ms</td><td>1:15pm</td></tr><tr><td>Vida Cafe Bar</td><td>9.77 Mbps</td><td>10.40 Mbps</td><td>38 ms</td><td>1:35pm</td></tr></tbody></table><!--kg-card-end: html--><h2 id="sprout-cafe"><a href="http://sproutbali.com/" rel="noopener">Sprout Cafe</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Sprout-Cafe-1080x608.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Sprout-Cafe-1080x608.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Sprout-Cafe-1080x608.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Sprout-Cafe-1080x608.jpg 1080w"></figure><p><em>Location: Jalan Raya Semat No.18| Iced Coffee Index: 37k IDR ($2.66 USD)</em></p><p>Across from Bahn Mi and Beans and tucked away behind a garden wall is <a href="http://sproutbali.com/" rel="noopener">Sprout</a> which, if you manage to get a table against the wall, is quite a comfortable and quiet space to work.</p><p><strong>Hours: </strong>7am to 6pm daily</p><p><strong>Noise Level: </strong>Not bad from memory</p><p><strong>Ergonomics: </strong>Good if you can get a seat against the wall, otherwise no.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>Sprout Wifi</td><td>8.25 Mbps</td><td>1.71 Mbps</td><td>57 ms</td><td>2pm</td></tr></tbody></table><!--kg-card-end: html--><h2 id="dojo"><a href="http://www.dojobali.org/en" rel="noopener">Dojo</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Dojo-Coworking-space-1080x607.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="607" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Dojo-Coworking-space-1080x607.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Dojo-Coworking-space-1080x607.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Dojo-Coworking-space-1080x607.jpg 1080w"></figure><p><em>Location: Jalan Batu Mejan No. 88 (Echo Beach)| Iced Coffee Index: 35k IDR ($2.52 USD) | <a href="http://www.dojobali.org/en#pricing" rel="noopener">Click here for coworking prices</a></em></p><p>No list of workspaces in Canggu would be complete without including <a href="http://www.dojobali.org/en" rel="noopener">Dojo</a>. It&apos;s become an institution of the remote work scene in Canggu and it&apos;s almost safe to assume that any other nomad you meet in Canggu has heard about it or worked out of there at some point.</p><p><a href="https://www.youtube.com/watch?v=_jsgVmjR9U0" rel="noopener">Dojo is the coworking space that introduced me to Canggu back in 2016</a> and is the space I choose to set up at during May and June this year while staying in Canggu.</p><p>It has an amazing community and great internet but it&apos;s not at all corporate - not that I&apos;m complaining about that!</p><p><strong>Hours: </strong>24/7 for members</p><p><strong>Noise Level: </strong>Low</p><p><strong>Ergonomics: </strong>Great in some rooms but Dojo is not a corporate vibe at all, so don&apos;t expect office chairs</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;Dojo Hotspot</td><td>&#xA0;45.67 Mbps</td><td>&#xA0;37.77 Mbps</td><td>&#xA0;40 ms</td><td>&#xA0;2pm</td></tr></tbody></table><!--kg-card-end: html--><h2 id="cinta-cafe"><a href="https://www.facebook.com/CintaCanggu/" rel="noopener">Cinta Cafe</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Cinta-cafe-1080x608.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Cinta-cafe-1080x608.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Cinta-cafe-1080x608.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Cinta-cafe-1080x608.jpg 1080w"></figure><p><em>Location: Jalan Pantai Berawa| Iced Coffee Index: 35k IDR ($2.52 USD) (Menu Price)</em></p><p>Located next to District and with a similar layout, I was expecting almost a carbon copy of District. However, at <a href="https://www.facebook.com/CintaCanggu/" rel="noopener">Cinta</a> I found the internet to be a step up from District&apos;s free tier and with more space, it became my preferred location to District.</p><p><a href="https://www.facebook.com/CintaCanggu/" rel="noopener">Cinta</a> is the new favourite of my friend Loukman (who I&apos;ve mentioned throughout this article) and is well-recommended, especially for breakfast.</p><p><strong>Hours: </strong>8am to 5pm</p><p><strong>Noise Level: </strong>Low</p><p><strong>Ergonomics: </strong>Not bad for a cafe</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>Cinta Cafe</td><td>&#xA0;24 Mbps</td><td>&#xA0;87.5 Mbps</td><td>&#xA0;3ms</td><td>&#xA0;12pm</td></tr></tbody></table><!--kg-card-end: html--><h2 id="tropical-nomad-canggu"><a href="http://tropicalnomad.org/">Tropical Nomad Canggu</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/tropical-nomad-canggu-1080x608-1.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/tropical-nomad-canggu-1080x608-1.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/tropical-nomad-canggu-1080x608-1.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/tropical-nomad-canggu-1080x608-1.jpg 1080w"></figure><p><em>Location: Right next to Pretty Poison on Canggu&apos;s famous shortcut| Cafe currently being built so no Iced-coffee index yet ;)</em></p><p><a href="http://tropicalnomad.org/">Tropical Nomad</a> is the newest coworking spot in Canggu and I fell in love with it at first sight.</p><p>The location is just beautiful! and super convenient (on the famous Canggu shortcut). Very tropical, very Instagrammable, very Canggu ;)</p><p>In terms of functionality, I can only fault this place on ergonomics as the chairs might be super sexy but not so great for long periods on the computer.</p><p><strong>Hours: </strong>Open 24hrs for members</p><p><strong>Noise Level: </strong>Low</p><p><strong>Ergonomics: </strong>Not great. The space looks super sexy but the chairs aren&apos;t the most ergonomic.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>Tropical Nomad Member</td><td>63.43</td><td>72.69</td><td>25</td><td>8:52am</td></tr></tbody></table><!--kg-card-end: html--><h2 id="outpost-canggu"><a href="https://www.outpost-asia.com/location/canggu">Outpost Canggu</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/outpost-canggu.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1920" height="1080" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/outpost-canggu.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/outpost-canggu.jpg 1000w, https://www.christhefreelancer.com/content/images/size/w1600/2021/06/outpost-canggu.jpg 1600w, https://www.christhefreelancer.com/content/images/2021/06/outpost-canggu.jpg 1920w" sizes="(min-width: 1200px) 1200px"></figure><p><em>Location: Jalan Raya Semat| Don&apos;t know if they do Iced Coffee but a hot one was 25k IDR ($1.72 USD)</em></p><p>If you&apos;re looking for the most productive workspace in Canggu, then look no further! Outpost&apos;s new Canggu location is your best spot to dig into some proper work.</p><p>I spent two weeks at <a href="https://www.outpost-asia.com/location/canggu">Outpost Canggu</a>, taking part in one of their programs called &apos;Life Design Lab&apos; back in October and I&apos;m in agreeance with multiple others that believe this space is the most productive in Canggu.</p><p><strong>Hours: </strong>Open 24hrs for members</p><p><strong>Noise Level: </strong>Low</p><p><strong>Ergonomics: </strong>Best in Canggu! Yay for office chairs!</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>Outpost</td><td>22.60</td><td>21.74</td><td>8</td><td>8:10pm - OCT 15</td></tr></tbody></table><!--kg-card-end: html--><h2 id="third-spaceclosed"><a href="http://www.thirdspacebali.com/" rel="noopener">Third Space</a> - CLOSED</h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Third-Space-1080x608-1.jpg" class="kg-image" alt="Where to Work in Canggu, Bali (Cafes and Coworking Spaces)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Third-Space-1080x608-1.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Third-Space-1080x608-1.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Third-Space-1080x608-1.jpg 1080w"></figure><p><em>Location: Jalan Bumbak Dauh No.90| Iced Coffee Index: 35k IDR ($2.53 USD) from the cafe downstairs | <a href="https://www.facebook.com/thirdspacebali/photos/a.932242993607873.1073741828.919606438204862/987256564773182/?type=3&amp;theater" rel="noopener">Check their Facebook page for prices</a></em></p><p><a href="http://www.thirdspacebali.com/" rel="noopener">Third Space</a> was a coworking space that I discovered while driving to Kembali Bumbek. Their slogan was &apos;<em>Work away from Work&apos; </em>and they called themselves a boutique coworking space.</p><p>I felt it&apos;s appropriate that the space sat above a furniture and coffee shop in the Umalas area as the interior was really what set this space apart.</p><p>What I really liked about <a href="http://www.thirdspacebali.com/" rel="noopener">Third Space</a> was the attention to detail which was most noticeable when you saw the power points embedded elegantly into each desk featuring international power and USB ports.</p><p><strong>Hours: </strong>Mon - Fri: 7am to midnight, Weekends: 9am to 6pm &#xA0;Permanently closed :(</p><p><strong>Noise Level: </strong>Low</p><p><strong>Ergonomics: </strong>Trendy chairs with cushions. Still not office ergonomics but better than a cafe</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;Thirdspace Unifi</td><td>&#xA0;21.46 Mbps</td><td>&#xA0;15.55 Mbps</td><td>&#xA0; 63 ms</td><td>&#xA0;12:37pm</td></tr><tr><td>&#xA0;Thirdspace Meeting Room</td><td>&#xA0;41.47 Mbps</td><td>&#xA0;8.46 Mbps</td><td>&#xA0;4 ms</td><td>&#xA0;12:41pm</td></tr></tbody></table><!--kg-card-end: html--><h2 id="special-mentions">Special Mentions</h2><p><strong><a href="https://www.nalubowls.com/nalu-bowls-dojo-bali/" rel="noopener">Nalu Bowls</a>: </strong>Want to do some work over lunch? Situated right next to Dojo, Nalu Bowls allows you to essentially &apos;borrow&apos; Dojo&apos;s wifi for a few hours with a purchase of one of their smoothie bowls.</p><p><strong><a href="https://www.finnsrecclub.com/facilities/business-centre/" rel="noopener">Finns Recreation Club Business Centre</a>: </strong>Probably the closest to a corporate coworking space you&apos;ll find in Canggu and super pricey at 500k IDR per day ($36 USD)</p><p><strong><a href="https://www.facebook.com/Betelnut-Cafe-289844997715255/" rel="noopener">Betelnut Caf&#xE9;</a>: </strong>Never been but <a href="https://livelikecatie.com/best-cafes-work-bali" rel="noopener">recommended by Catie Leta</a></p><p><strong><a href="http://www.milkandmadu.com/" rel="noopener">Milk &amp; Madu</a>: </strong>Awesome breakfast and great view. Didn&apos;t test the wifi but you could totally work out of there.</p><p><strong><a href="http://milu-bali.business.site/" rel="noopener">Milu by Nook</a>: </strong>Again, I didn&apos;t work out of this one but it was beautiful and my first cafe experience in Canggu. A saw a couple of people there on their computers too</p><p><a href="http://metta-cafe.business.site/" rel="noopener"><strong>Metta Cafe</strong></a><strong> &amp; <a href="http://cocomocanggu.business.site/" rel="noopener">Cocomo</a></strong>: Recommendations from my friend, <a href="http://livinthatlife.com/cafes-to-work-at-in-canggu-bali/" rel="noopener">Riley Bennett</a>. They made it on my shortlist to check out but I didn&apos;t get around to it in the end.</p><h2 id="summary">Summary</h2><p>To be honest, I grew tired of checking out new spaces in Canggu as the list of cafes you can work from here is near infinite.</p><p>Especially now that I have my go-to space at Dojo, I&apos;m not too tempted to experience coworking in cafes without air conditioning or high speed internet (ie. more than 10mbps up and down).</p><p>That being said, if you&apos;re considering Canggu and concerned about finding a place to get your work done, do not fear! You have a ton of options.</p><p>Been to Canggu before? What are your favourite spots to work or study? Let me know in the comments.</p><p>Until next time,</p><p>Chris</p>]]></content:encoded></item><item><title><![CDATA[7 Coworking spaces in Bali for Digital Nomads (Updated)]]></title><description><![CDATA[<p>It&apos;s now been just over a month that I&apos;ve been back in Bali and I think it&apos;s probably about time I updated this blog post on the top coworking spaces in Bali (originally published in March 2016).</p><p><em>PS: I just updated it again (December</em></p>]]></description><link>https://www.christhefreelancer.com/coworking-spaces-bali-digital-nomads/</link><guid isPermaLink="false">60ac2d8bfcfa4a6b50182a3c</guid><category><![CDATA[Lifestyle]]></category><category><![CDATA[Coworking]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Wed, 19 Dec 2018 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/bali-coworking-Collage.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.christhefreelancer.com/content/images/2021/05/bali-coworking-Collage.jpg" alt="7 Coworking spaces in Bali for Digital Nomads (Updated)"><p>It&apos;s now been just over a month that I&apos;ve been back in Bali and I think it&apos;s probably about time I updated this blog post on the top coworking spaces in Bali (originally published in March 2016).</p><p><em>PS: I just updated it again (December 2018). Bali is developing so quick!</em></p><p>Back in 2016, I was a bright-eyed and bushy-tailed digital nomad on the very first stop of my &apos;digital nomad journey&apos; and this post was one of my very first.</p><p>Not only has my blogging hopefully gotten better since 2016 but two years on, I&apos;ve discovered that some of the spaces that I originally covered in this post have now closed down and new ones have opened.</p><p>So, in this updated article on Bali&apos;s top coworking spaces, I&apos;m about to provide a well-needed revamp on one of my classics. Here goes!</p><h2 id="the-coworking-scene-in-bali">The Coworking Scene in Bali</h2><p>Overall, you may find the range of quality coworking spaces in Bali quite surprising. I mean, Bali is a just holiday island right?</p><p>Well, in 2018, regardless of whether you stay in Seminyak, Ubud or Canggu, there are quality coworking spaces to be found.</p><p>When I arrived back in 2016, I was super excited to check out spots like <a href="https://hubud.org/" rel="noopener">Hubud</a> (the original coworking space in Bali) and gave myself a week to find and review the various others on the island. During that time, I covered 6 coworking spaces in my 3rd ever &apos;Digital Nomad Vlog&apos; (embedded below).</p><figure class="kg-card kg-embed-card"><iframe src="https://www.youtube.com/embed/7uMr2cPSVOY" width="1000" height="460" frameborder="0" allowfullscreen="allowfullscreen"></iframe></figure><p>Coming back in 2018, I was able to finally visit a few spaces that I either missed last time or that had just recently opened. These include spaces like <a href="https://www.biliqbali.com/" rel="noopener">Biliq</a>, <a href="https://www.facebook.com/thirdspacebali/" rel="noopener">Third Space</a> and <a href="https://www.outpost-asia.com/" rel="noopener">Outpost</a>, all of which I will include in this article.</p><p><em>Edit: Third Space closed shortly after updating this article but Tropical Nomad and Outpost Canggu are great and now open in Canggu!</em></p><p>So, without further ado, let&apos;s get into the list!</p><h2 id="1-hubud"><a href="http://www.hubud.org/" rel="noopener">1. Hubud</a></h2><p><em>in Ubud | $20 USD per day | $60-275 USD per month</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Hubud-Screenshot-1024x576.jpg" class="kg-image" alt="7 Coworking spaces in Bali for Digital Nomads (Updated)" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Hubud-Screenshot-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Hubud-Screenshot-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Hubud-Screenshot-1024x576.jpg 1024w"></figure><p><a href="https://hubud.org/" rel="noopener">Hubud</a> is Bali&apos;s first coworking space and it often considered the benchmark digital nomad coworking space on the island. Therefore, it probably deserves to be mentioned first.</p><p>Back in 2016, I spent 2 weeks at <a href="https://hubud.org/" rel="noopener">Hubud</a> and had nothing but positive things to say.</p><p>The space offers timed memberships from 25 hours to unlimited ranging from 60-275 US Dollars per month. At this price-tag, <a href="http://www.hubud.org/" rel="noopener">Hubud</a> is probably one of the most expensive coworking spaces in Indonesia but if you can afford it, I&apos;d say it&apos;s definitely worth it.</p><p>The space has one of the best communities you will find in a coworking space and with events being run almost daily, there&apos;s always something going on. I met a lot of cool people from my brief time at <a href="http://www.hubud.org/" rel="noopener">Hubud</a>, some of which are now my good friends.</p><p><em>If you&apos;re interested in Hubud, <a href="https://www.youtube.com/watch?v=CqKYqpiMGUQ" rel="noopener">check out my interview with one of the founders, Steve Munroe</a> and <a href="https://www.youtube.com/watch?v=O_Nnjs32iHs" rel="noopener">watch my first week working out of Hubud</a>.</em></p><h2 id="2-lineup-hub"><a href="http://lineuphub.co/" rel="noopener">2. Lineup Hub</a></h2><p><em>in Seminyak | Day pass: $10 USD | ~$160 USD per month</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Lineup-Hub-Screenshot-1024x576.jpg" class="kg-image" alt="7 Coworking spaces in Bali for Digital Nomads (Updated)" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Lineup-Hub-Screenshot-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Lineup-Hub-Screenshot-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Lineup-Hub-Screenshot-1024x576.jpg 1024w"></figure><p>Back in 2016, after two weeks in Ubud, I positioned myself in Seminyak near <a href="http://lineuphub.co/" rel="noopener">Lineup Hub</a> for the next two weeks. I had little knowledge about the other spaces on this list (apart from <a href="http://www.hubud.org/" rel="noopener">Hubud</a>) and thought that this space was &apos;the space&apos; on the West Coast.</p><p>In reality, <a href="http://lineuphub.co/" rel="noopener">Lineup Hub</a> turned out to be more of an internet cafe than a coworking space. The whole bottom floor is basically rows of computers while the second floor offers a small space to bring your own computer and sit on bean bags.</p><p><a href="http://lineuphub.co/" rel="noopener">Lineup Hub</a> was in major contrast to my experience at Hubud where the place was lively with activity and events. Instead, <a href="http://lineuphub.co/" rel="noopener">Lineup Hub</a> was very quiet and not at all social.</p><p>Looking back on this evaluation after 2 years, it seems a little harsh but after starting with <a href="https://hubud.org/" rel="noopener">Hubud</a>, my expectation was set quite high. I&apos;m sure <a href="http://lineuphub.co/" rel="noopener">Lineup</a> is probably good value for those that want to work in Seminyak but since that visit in 2016, I haven&apos;t been back.</p><h2 id="3-kumpul"><a href="https://www.kumpul.co/" rel="noopener">3. Kumpul</a></h2><p><em>in Kuta and Denpasar (used to be in Sanur) | 200k rupiah per day | 900k-2.5m rupiah per month (prices for the Sanur location, <a href="https://www.kumpul.co/" rel="noopener">check the website</a> for new details)</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Kumpul-Screenshot-1024x576.jpg" class="kg-image" alt="7 Coworking spaces in Bali for Digital Nomads (Updated)" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Kumpul-Screenshot-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Kumpul-Screenshot-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Kumpul-Screenshot-1024x576.jpg 1024w"></figure><p>I&apos;m not quite sure what happened to <a href="https://www.kumpul.co/" rel="noopener">Kumpul</a> but it&apos;s safe to say that their location in Sanur is no longer operational. If you search for Kumpul now in Google, you&apos;ll see they still have<a href="https://www.facebook.com/KumpulCoworkingSpace/" rel="noopener"> a Facebook page</a> and <a href="https://www.kumpul.co/" rel="noopener">a website</a> but the location that shows up on Google&apos;s sidebar is Kumpul di Kembali.</p><p>Checking their website, they seem to have two locations now, one on Sunset Road in Kuta called Kembali and another in South Denpasar called Colony. So it seems that <a href="https://www.kumpul.co/" rel="noopener">Kumpul</a> is now a parent brand that manages a few different spaces. A little confusing - to me, at least.</p><p>As for the original space I checked out, it was in this cool building in Sanur with a cafe to the bottom from which you could bring up food and drink while working. The clientele was a little more local as Sanur is not as big of a tourism location as say the west coast but I remember the founders being very welcoming and nice.</p><h2 id="4-dojo"><a href="http://www.dojobali.org/" rel="noopener">4. Dojo</a></h2><p><em>in Canggu | ~$16 USD per day | ~$58 - 213 USD per month (depending on hours)</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Dojo-Screenshot-1024x576.jpg" class="kg-image" alt="7 Coworking spaces in Bali for Digital Nomads (Updated)" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Dojo-Screenshot-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Dojo-Screenshot-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Dojo-Screenshot-1024x576.jpg 1024w"></figure><p>Back in 2016, I visited the up and coming area of Canggu to check out this space called <a href="http://www.dojobali.org/" rel="noopener">Dojo</a> and I was blown away. This time in Bali, Dojo has become my go-to coworking space.</p><p>At the time of first writing this article, <a href="http://www.dojobali.org/" rel="noopener">Dojo</a> had been open less than 6 months and back then, they were growing fast. Nowadays, Dojo is often crowded and has become an institution in Canggu.</p><p><a href="http://www.dojobali.org/" rel="noopener">Dojo</a> offers a thriving community and unique resort-style working space, 300m from the sand at Canggu&apos;s Echo Beach. It embodies the surfer/hipster culture of Canggu and is popular with a younger crowd of digital nomads.</p><p>For me, <a href="http://www.dojobali.org/" rel="noopener">Dojo</a> has the best community out of any coworking space on the west coast however, if you&apos;re the kind of person that likes a quiet space with little distractions, <a href="http://www.dojobali.org/" rel="noopener">Dojo</a> is probably not your ideal.</p><p><em>If you&apos;re interested in Dojo, <a href="https://www.youtube.com/watch?v=_jsgVmjR9U0" rel="noopener">check out my interview with the founder Michael Craig</a></em></p><h2 id="5-outpost-ubud"><a href="http://www.outpost-asia.com/" rel="noopener">5. Outpost Ubud</a></h2><p><em>in Ubud | $16.50 USD per day | $49-229 USD per month (depending on hours)</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Outpost-in-Ubud-1080x606.jpg" class="kg-image" alt="7 Coworking spaces in Bali for Digital Nomads (Updated)" loading="lazy" width="1080" height="606" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Outpost-in-Ubud-1080x606.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Outpost-in-Ubud-1080x606.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Outpost-in-Ubud-1080x606.jpg 1080w"></figure><p>During my first time in Ubud, I didn&apos;t end up visiting <a href="http://www.outpost-asia.com/" rel="noopener">Outpost</a> so this year, when I returned to Bali, I made sure to give it a visit, not just to update this post but to cover it in <a href="https://www.youtube.com/watch?v=1xXpIODiaJg" rel="noopener">my video on Bali&apos;s coliving spaces</a>.</p><p>Even in 2016, I knew I needed to include <a href="http://www.outpost-asia.com/" rel="noopener">Outpost</a> in this article so I let the space&apos;s founder, David Abraham make a statement.</p><blockquote>Imagine what Google would offer if they opened up an office in Bali. That&#x2019;s Outpost. You want to go swimming? We have two pools and a river. Thirsty? We deliver coconuts to your desk. Neck hurt from staring at your screen? We have a masseur on staff.<br><br>People come to Bali and have amazing experiences. Our mission is to ensure they&apos;re productive too. At the most basic, that means comfy chairs, big desks and a community of successful people. (And of course, stable and redundant internet connections.) Our focus on productivity makes good business sense. Members stay longer because they accomplishing more. And although we&#x2019;ve only been opened (soft) for five months, we noticed members are coming back to the largest co-working facility on the island.<br><br><em>David Abraham, Founder of Outpost (written back in 2016)</em></blockquote><p>Now that I have some experience at <a href="http://www.outpost-asia.com/" rel="noopener">Outpost</a> (albeit very brief), I can now confirm that Outpost is a very well-done coworking space. They&apos;ve designed it to be both productive and social and with the coliving space down the road, you can live, work and hang out all within Outpost&apos;s grounds.</p><p><em>Note: Outpost has a second location now in Canggu. See below!</em></p><h2 id="6-outpost-canggu">6. <a href="https://www.outpost-asia.com/location/canggu">Outpost Canggu</a></h2><p><em>in Canggu | $15 USD per day | $49-180 USD per month (depending on hours)</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/outpost-canggu-1080x608.jpg" class="kg-image" alt="7 Coworking spaces in Bali for Digital Nomads (Updated)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/outpost-canggu-1080x608.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/outpost-canggu-1080x608.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/outpost-canggu-1080x608.jpg 1080w"></figure><p>The Canggu edition of Outpost opened up earlier this year (2018) and seemed to have plenty of members by the time I showed up in October.</p><p>I spent two weeks at <a href="https://www.outpost-asia.com/location/canggu">Outpost Canggu</a>, taking part in one of their programs called Life Design Lab and I&apos;m in agreeance with multiple others that believe this space is the most productive in Canggu.</p><p>As much as I appreciate the community and events calendar at <a href="https://www.outpost-asia.com/location/canggu">Outpost Canggu</a>, my favourite aspect of the space is its ergonomics and productive vibe.</p><h2 id="7-biliq-cosharing-space"><a href="https://www.biliqbali.com/" rel="noopener">7. Biliq CoSharing Space</a></h2><p><em>in Seminyak | $2.16 USD per hour up to $170 USD per month</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Biliq-Coworking-space-1080x608.jpg" class="kg-image" alt="7 Coworking spaces in Bali for Digital Nomads (Updated)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Biliq-Coworking-space-1080x608.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Biliq-Coworking-space-1080x608.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Biliq-Coworking-space-1080x608.jpg 1080w"></figure><p><a href="https://www.biliqbali.com/" rel="noopener">Biliq Cosharing Space</a> in Seminyak is the first coworking space in Bali to offer per-minute pricing but what&apos;s perhaps more impressive, is the space itself.</p><p>I was invited by the space&apos;s founders Hansen and Jess to come and see for myself what Biliq was all about and I&apos;m glad I made the 25 minute drive out from Canggu.</p><p>In contrast to the other coworking spaces that I&apos;d experienced in Seminyak, <a href="https://www.biliqbali.com/" rel="noopener">Biliq</a> stood well above the rest. Whether you sit in the shaded area or inside, there is plenty of natural light and four Skype rooms that are currently available for free (as a part of your membership).</p><p>Overall, <a href="https://www.biliqbali.com/" rel="noopener">Biliq</a> is a really awesome coworking space that gives me more reason to consider Seminyak on my next visit to Bali.</p><h2 id="8-tropical-nomad-canggu">8. <a href="http://tropicalnomad.org/">Tropical Nomad Canggu</a></h2><p><em>in Canggu | From $31 USD to $160 USD per month (depending on hours)</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/tropical-nomad-canggu-1080x608.jpg" class="kg-image" alt="7 Coworking spaces in Bali for Digital Nomads (Updated)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/tropical-nomad-canggu-1080x608.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/tropical-nomad-canggu-1080x608.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/tropical-nomad-canggu-1080x608.jpg 1080w"></figure><p><a href="http://tropicalnomad.org/">Tropical Nomad</a> is the newest coworking space in Canggu and I fell in love with it at first sight.</p><p>The location is just beautiful! and super convenient (on the famous Canggu shortcut). Very tropical, very Instagrammable, very Canggu ;)</p><p>In terms of functionality, I can only fault this place on ergonomics as the chairs might be super sexy but not so great for long periods on the computer.</p><h2 id="closed-third-space">CLOSED: <a href="https://www.facebook.com/thirdspacebali/" rel="noopener">Third Space</a></h2><p><em>in Umalas (near Canggu) | ~$15 USD per day | ~$160 - $200 USD per month</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Third-Space-1080x608.jpg" class="kg-image" alt="7 Coworking spaces in Bali for Digital Nomads (Updated)" loading="lazy" width="1080" height="608" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Third-Space-1080x608.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Third-Space-1080x608.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Third-Space-1080x608.jpg 1080w"></figure><p>Third Space was a boutique coworking space in the Umalas area of Canggu that I was really disappointed to see close down shortly after opening.</p><p>I feel it&#x2019;s appropriate that the space sits above a furniture and coffee shop in the Umalas area as the interior is really what sets this space apart.</p><p>What I really liked about <a href="https://www.facebook.com/thirdspacebali/" rel="noopener">Third Space</a> was the attention to detail which was most noticeable when you saw the power points embedded elegantly into each desk featuring international power and USB ports.</p><p>During my last update of this article, I got to meet the founder and have a chat about why she started it to begin with. Turns out, she&apos;d tried working out of some of the other spots in Canggu (Cafes and Coworking Spaces) but felt there was a gap for a quiet and productive space that supports remote work more than a cafe but while still capturing the vibe of the area.</p><p>Loved the idea. Shame to see it go.</p><h1 id="closed-sanur-space">CLOSED: <a href="https://www.facebook.com/TheSanurSpace/" rel="noopener">Sanur Space</a></h1><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/The-Sanur-Space.jpg" class="kg-image" alt="7 Coworking spaces in Bali for Digital Nomads (Updated)" loading="lazy" width="720" height="480" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/The-Sanur-Space.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/The-Sanur-Space.jpg 720w"><figcaption>Photo courtesy of Tech in Asia</figcaption></figure><p><a href="https://www.facebook.com/TheSanurSpace/" rel="noopener">Sanur Space</a> was basically a quiet home in a quiet area. As you&apos;ll <a href="https://www.youtube.com/watch?v=7uMr2cPSVOY" rel="noopener">see from the video above</a>, we saw only one person working there when we visited on that late Thursday afternoon.</p><p>After visiting Biliq recently however, they alerted me to the fact that Sanur Space is now permanently closed so this section will serve merely as a special mention.</p><h2 id="summary">Summary</h2><p>It seems that each time I come back to Bali I&apos;m met with new surprises. In 2016, I knew about <a href="http://www.hubud.org/" rel="noopener">Hubud</a> from its reputation but being there was just something else and <a href="http://www.dojobali.org/" rel="noopener">Dojo</a> was also such a great find. In 2018, I discovered <a href="https://www.biliqbali.com/" rel="noopener">Biliq</a> and <a href="https://www.facebook.com/thirdspacebali/" rel="noopener">Third Space</a>.</p><p>I see Bali as a huge hub for &apos;Destination Working&apos; and I think it&apos;s almost safe to say that it&apos;s now my favourite place to live and work remotely. It&apos;s a location that might be seen as just a holiday destination by some but for me, it&apos;s got everything you need to settle in for the long-term as a remote worker.</p><p>Originally, I ended this article with a statement, &apos;<em>One thing is for sure, I will be coming back</em>.&apos; and so I guess it just was a matter of time before I was back in Bali. This time is no exception and I&apos;m sure you&apos;ll see me back again very soon.</p><p>Until next time,<br>Chris</p>]]></content:encoded></item><item><title><![CDATA[My Digital Nomad Workflow: How I Stay Productive Working From Anywhere]]></title><description><![CDATA[<p>A common question I get asked is some sort of variant on &apos;<em>How do you stay disciplined and productive while travelling and working from various locations?&apos;.</em></p><p>I think for the majority of the working world, their tasks are laid out for them. They have a job description or</p>]]></description><link>https://www.christhefreelancer.com/my-digital-nomad-workflow/</link><guid isPermaLink="false">60ac2c75fcfa4a6b50182a30</guid><category><![CDATA[Work]]></category><category><![CDATA[Remote Work]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Thu, 23 Aug 2018 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/digital-nomad-workflow.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.christhefreelancer.com/content/images/2021/05/digital-nomad-workflow.png" alt="My Digital Nomad Workflow: How I Stay Productive Working From Anywhere"><p>A common question I get asked is some sort of variant on &apos;<em>How do you stay disciplined and productive while travelling and working from various locations?&apos;.</em></p><p>I think for the majority of the working world, their tasks are laid out for them. They have a job description or a manager to tell them what to do and I think the majority of those people actually prefer it that way.</p><p>As one expat in Chiang Mai said to me during our <a href="https://www.facebook.com/groups/nomadcoffee/" rel="noopener">Nomad Coffee Club</a> screening of the digital nomad documentary, &apos;<em><a href="http://digitalnomaddocumentary.com/" rel="noopener">One Way Ticket</a>&apos;,</em></p><blockquote>Most people won&apos;t become digital nomads because they prefer being told what to do.</blockquote><p>For me however, I haven&apos;t historically worked too well in a full-time environment. My days of full-time employment capped off at a mere 5 weeks!</p><p>As much as it would be nice to not have to think about what, how and when to carry out my work, I think I definitely work better as my own project manager.</p><p>It&apos;s worth noting before we go further however, that not all nomads are freelancers or entrepreneurs. You can still work a full-time job as a digital nomad, in which case you just need to manage timezones and show up to work when you need to be.</p><p>For the rest of us, we often operate as our own boss or as my <a href="https://www.youtube.com/watch?v=tKK0IFQ2zfM" rel="noopener">friend Denise</a> puts it, &apos;<em>we work for ourselves&apos;.</em></p><p>As a digital nomad freelancer or entrepreneur, we are <em>the business</em> which means that sales, project management and delivery is up to us. This is why we need to have a system in place to manage our tasks, strategically set our own schedule and develop productive habits and practices.</p><p>By no means am I the leading authority on freelance productivity but with three different businesses to manage, I naturally had to form some systems around what I do, or else become terribly overwhelmed and achieve nothing.</p><p>The following article is my best attempt at sharing with you an insight into the practices I use so that you can build a more productive workflow yourself.</p><p>Let&apos;s start right from the moment you wake up.</p><h2 id="morning-routines">Morning Routines</h2><p>According to Hal Elrod, Author of <a href="https://amzn.to/2PrGY4u" rel="noopener">the Miracle Morning</a>:</p><blockquote>How you wake up each day and your morning routine (or lack thereof) dramatically affects your levels of success in every single area of your life.</blockquote><p>While I&apos;m not as religious about mornings as other authors, I definitely think that getting up early and jumping straight into a routine is something that can benefit anyone and I do find it very important for me personally.</p><p>Currently, my morning routine includes a batch of small activities that I&apos;d simply forget to do if they weren&apos;t factored into my morning routine. Things like:</p><ol><li>Making my bed</li><li>Washing my face</li><li>Stretching (I have flexibility issues), and</li><li>Meditation</li></ol><p>These are habits that I try to maintain daily but if I don&apos;t do them first thing in the morning, they won&apos;t get done. That&apos;s why a morning routine is so important.</p><p>Insights into why having a morning routine can be found in my friend Tomas Laurinavicius&apos; <a href="https://tomaslau.com/habits-of-successful-people/" rel="noopener">article on the habits of successful people.</a> One of the points he makes in that article is that you&#x2019;re more likely to develop a new habit on top of an old one because your brain has lots of synaptic connections for that habit to run it on autopilot. This is something he calls &apos;<em>Habit Stacking&apos;.</em></p><p>As for the question of why mornings? That&apos;s easy. You simply have less distractions and obligations if you make sure to wake up before any scheduled commitments.</p><p>Just make sure to resist technology as long as possible after you wake up as that can derail your mornings real quick!</p><p>Common activities that I hear people consciously incorporating into their morning routines are things like:</p><ul><li>Reading &amp; Writing (inc journalling)</li><li>Creating a plan for the day ahead</li><li>Exercise</li><li>Visualisation and affirmation</li><li>Eating or drinking</li></ul><p>For yourself, what I&apos;d recommend is putting whatever you want to get done into your mornings that wouldn&apos;t otherwise get done later in the day.</p><p>For example, I love to workout after getting through most of my work day and I enjoy reading just before bed but as for stretching and meditation, I don&apos;t trust myself to remember to do that later in the day, so I make sure to get in done in the morning.</p><h2 id="morning-sequence">Morning Sequence</h2><p>After my morning routine, I take out my computer and jump into what I call my &apos;<em>Morning Sequence&apos;.</em></p><p>Not to be confused with my morning routine, my <em>Morning Sequence </em>includes the first things I do on the computer each day that I open it.</p><p>These are currently:</p><ul><li>Checking email</li><li>Checking social media messages (inc messages I receive through my Facebook page &amp; Instagram account and comments I receive on my YouTube channel)</li><li>Checking my notifications on Facebook and Twitter - seriously! We&apos;ll get into how I do this in just a sec</li><li>Checking job boards for opportunities</li></ul><p>You might notice that each of these start with &apos;<em>checking&apos; </em>and it&apos;s this style of task that I like to get out at the beginning of every day.</p><p>The most important principle of the <em>Morning Sequence </em>is the idea of batching which I&apos;m pretty sure I learned from Tim Ferriss in his must-read book for digital nomads, <a href="https://amzn.to/2MGlAtV" rel="noopener">The 4 Hour Workweek.</a> In the book, he suggests limiting the time you spend in your inbox to a maximum two periods per day. For my purposes, I&apos;ve extended the idea of batching to include all notifications, messages and work-related postings.</p><p>I remember when my YouTube channel first started taking off and I had YouTube app on phone send me notifications as soon as I got a new comment. I would get these messages multiple times a day and I&apos;d be compulsive about checking them. After seeing me getting down at some of the more critical comments, my friend Felipe suggested that I turn off the notifications and check them only once per day. My anxiety levels improved straight away.</p><p>As you can see, the idea of batching doesn&apos;t just work for emails but all kinds of messages and notifications. Unless something is urgent, I make sure to turn off notifications and limit my time to checking them all at the one time.</p><h3 id="mini-tangent-how-i-do-facebook">Mini-Tangent: How I <em>do</em> Facebook</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/News-Feed-Eradictor-Instagram.jpg" class="kg-image" alt="My Digital Nomad Workflow: How I Stay Productive Working From Anywhere" loading="lazy" width="750" height="884" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/News-Feed-Eradictor-Instagram.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/News-Feed-Eradictor-Instagram.jpg 750w"></figure><p>Ask me about Facebook and you&apos;ll hear my rant on how the news feed is like the internet version of crack cocaine.</p><p>The idea of any of these apps is <a href="http://www.slate.com/articles/technology/technology/2017/11/facebook_was_designed_to_be_addictive_does_that_make_it_evil.html" rel="noopener">to get you hooked</a> and keep you on their app for as long as possible and Facebook is the worst as it is unlimited in how it&apos;s able to bring all kinds of content into your feed.</p><p>My strong recommendation and something that I practice myself is to eliminate the news feed altogether. I do this using the Chrome extension, <a href="https://chrome.google.com/webstore/detail/news-feed-eradicator-for/fjcldmjmjhkklehbacihaiopjklihlgg" rel="noopener">News Feed Eradicator</a> and removing the mobile app from my phone.</p><p>Then, with the news feed gone, I go into specific Facebook groups that I want to receive updates from and turn on notifications. Simple as that!</p><p>This is how my one-per-day practice of &apos;<em>checking Facebook&apos; </em>remains productive as I can&apos;t get distracted by the news feed, I just run through my notifications, check the important ones and when that number reaches zero (usually in less than 5 minutes), I&apos;m off Facebook altogether.</p><h2 id="getting-stuff-done">Getting Stuff Done</h2><p>After the <em>Morning Routine </em>and my <em>Morning Sequence </em>(which - by the way - &#xA0;includes responding to clients and preparing proposals), I begin the &apos;<em>actual work&apos; </em>for the day.</p><p>When I started out as a &quot;<em>Digital Nomad&quot;, </em>this meant only two things, finding work and doing work. My &apos;digital nomad workflow&apos; was a lot simpler back then as I usually only had one or two clients at a time. Plus, this blog and the YouTube channel wasn&apos;t as much of <em>a thing</em> back then and so, I just did it when I had free time.</p><p>During 2017 (and maybe even before), I started using an amazing free tool called <a href="https://trello.com/" rel="noopener">Trello</a> to list out my content ideas and move them from filming, to editing and then completion. This board became especially important when I decided to work on <em>Chris the Freelancer </em>full-time during Q4 of that year.</p><p>After 2017 had ended and I finished writing &apos;<em>The Digital Nomad&apos;s Guide to the World&apos;, </em>I returned to client work and found myself overwhelmed by work from various directions.</p><p>It was time to extend my use of <a href="https://trello.com/" rel="noopener">Trello</a> to now be the dashboard for all my projects. Here&apos;s a little look at what my new board, &apos;<em>Current Clients &amp; Projects&apos;</em> looks like:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/CTF-Trello-Board.jpeg" class="kg-image" alt="My Digital Nomad Workflow: How I Stay Productive Working From Anywhere" loading="lazy" width="1200" height="599" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/CTF-Trello-Board.jpeg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/CTF-Trello-Board.jpeg 1000w, https://www.christhefreelancer.com/content/images/2021/06/CTF-Trello-Board.jpeg 1200w" sizes="(min-width: 1200px) 1200px"></figure><p>Just a little Trello terminology:</p><ul><li>&apos;<em>Current Projects / Clients&apos; </em>is the <strong><em>Board</em></strong> you&apos;re currently looking at,</li><li>&apos;<em>Personal Projects&apos;, </em>&apos;<em>ToDo Right Now&apos;, etc </em>are what&apos;s called a <em><strong>List</strong>, </em>and</li><li>Each individual list item (blurred in the image) is called a <em><strong>Card</strong>.</em></li></ul><p>Let&apos;s start from the most important list and work our list now.</p><h3 id="todo-right-now">ToDo Right Now</h3><p>These are project or tasks that are ready to go right now. Most of the time this is related to client work but if it&apos;s a particularly important task/project for my own personal projects, I include it here too.</p><h3 id="personal-projects">Personal Projects</h3><p>These are projects or tasks that are also ready to go but are related to my own personal projects (including <em>Chris the Freelancer</em>). Currently, I only consider my freelance businesses to be my <em>businesses </em>and so, creating content for <em>Chris the Freelancer </em>and <a href="http://www.chrisrdodd.com/" rel="noopener">my other self-titled brand</a> hold a lower priority.</p><h3 id="to-check-follow-up-on">To Check / Follow-Up On</h3><p>This board is for tasks and projects that require more communication with a third party (usually a client) before the &apos;actual work&apos; can be completed. If the &apos;<em>ToDo Right Now&apos; </em>list is running low or the project to follow-up on is particularly important then, I&apos;ll start to dig into this list and follow-up with people</p><h3 id="pending-coming-soon">Pending (Coming Soon)</h3><p>These are projects that are coming soon but do not require any current action. It&apos;s more for awareness of what&apos;s to come in the pipeline.</p><h3 id="other-boards">Other Boards</h3><p>To be honest, there are 5 more lists but they are minor in importance</p><p><strong>Errands: </strong>Basically for anything admin-like that&apos;s not creating content or delivering on a client job.</p><p><strong>Leads: </strong>A place to list possible businesses leads to follow-up with</p><p><strong>Invoices: </strong>A place to keep track of invoices sent or in progress but not paid.</p><p><strong>Future Projects: </strong>Ideas for later. Maybe some of these cards will make their way into the first four lists</p><p><strong>Shelved: </strong>Cards that have been shelved and probably should just be deleted.</p><p>The great thing about <a href="https://trello.com/" rel="noopener">Trello</a> is that cards can easily move between lists. So if a personal project becomes priority, I can move it into &apos;<em>ToDo right now&apos; </em>or if a client gets back to me and is ready to go, I can move their card from &apos;<em>Coming Soon&apos; </em>to &apos;<em>ToDo right now&apos; </em>as well.</p><p>I can also assign due dates to cards, add a checklist and use coloured labels to further communicate priority.</p><p>Finally, when a task or project is complete, I simply click <em>Archive</em> and it disappears from the board.</p><h2 id="setting-my-own-schedule">Setting My Own Schedule</h2><p>As I mentioned in the introduction, part of being a digital nomad freelancer or entrepreneur is setting your own schedule and for me, I like to keep to a standard nine-to-five, Monday to Friday type schedule.</p><p>Funny, right? Many people take up this lifestyle to get as far away from the nine-to-five but for me it works. It&apos;s aligned with my clients who usually work office hours and just in general, it&apos;s easier when you schedule fits in with other people.</p><p>To be fair though, now that I&apos;ve started to work almost exclusively with Australian clients and given that I&apos;ve only travelled between Australia and Asia this year, I&apos;ve been able to stay close to the same timezone as my clients.</p><p>This hasn&apos;t always been the case, especially when I was travelling Europe and North America last year. During that time, I tried to keep my nine-to-five type schedule but it did affect business as I like to switch off during the evenings (which could be mornings or afternoons in Australia).</p><p>You can of course work on whatever schedule you like depending on the level of real-time client/customer communication that your business requires.</p><h2 id="discipline-and-motivation">Discipline and Motivation</h2><p>As for the question of keeping disciplined and motivated, I&apos;ve never really had an issue.</p><p>When you work for yourself, you go broke if you don&apos;t keep on top of your business. Isn&apos;t that motivation enough?</p><p>I think what people might be getting at with that question though is how to stay focused on work when you arrive in new and exciting destinations.</p><p>I guess it depends on your motivation for travel to begin with. If you just want to travel to see world then maybe you should just save up and travel. Honestly, I think that saving for long-term travel is a good approach for most people.</p><p>For me personally, it wasn&apos;t until I became excited about the work side of things that I got excited about long-term travel. Even when I was on vacation in 2013 pre-nomad, I was still researching and experimenting with some creative ideas.</p><p>So, my motivation doesn&apos;t just come from travel but also creation. It wasn&apos;t until <a href="https://www.youtube.com/watch?v=nuuI8W0cLIg" rel="noopener">I revisited Chiang Mai this year</a> that I realised how much my motivation for creating videos was the driving force behind all the travels.</p><p>It might sound a little harsh but my advice would be this: if you&apos;re not excited enough by the idea of a digital nomad lifestyle to remain disciplined and work hard at it, then maybe you should re-consider doing it at all.</p><h2 id="conclusion">Conclusion</h2><p>As I said earlier, I&apos;m definitely no productivity guru but I have figured out some processes that work for me.</p><p>Apart from the fact that I should probably invest in a proper freelance management tool like <a href="https://www.waveapps.com/" rel="noopener">Wave</a>, <a href="https://www.hellobonsai.com/" rel="noopener">Bonsai</a> and <a href="https://www.and.co/" rel="noopener">AND CO</a>, I&apos;m pretty happy with system I have right now and I&apos;m sure it will evolve like it has done up until this point.</p><p>If you&apos;d like to learn more about productivity as a digital nomad, I&apos;d definitely recommend following my friend <a href="https://tomaslau.com/" rel="noopener">Tomas Laurinavicius</a>. He&apos;s a blogger and writer who&apos;s all about that topic and does it much better justice then me.</p><p>Finally, to end this article I like to hear your thoughts on workflow and productivity as a digital nomad freelancer or entrepreneur. What systems, tools or habits do you use to stay productive? Let me know in the comments below!</p><p>Until next time,</p><p>Chris</p>]]></content:encoded></item><item><title><![CDATA[30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018]]></title><description><![CDATA[<p>Over the last 2 years, I visited over 21 countries in the search of the best cities, towns and islands to work remotely and connect with other digital nomads.</p><p>Throughout this time, I&apos;ve made it a point to keep my finger on the pulse, spending time in all</p>]]></description><link>https://www.christhefreelancer.com/digital-nomad-destinations/</link><guid isPermaLink="false">60ac2ad4fcfa4a6b50182a21</guid><category><![CDATA[Lifestyle]]></category><category><![CDATA[Destination Reports]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Mon, 12 Mar 2018 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/30-digital-nomad-destinations.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.christhefreelancer.com/content/images/2021/05/30-digital-nomad-destinations.jpg" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018"><p>Over the last 2 years, I visited over 21 countries in the search of the best cities, towns and islands to work remotely and connect with other digital nomads.</p><p>Throughout this time, I&apos;ve made it a point to keep my finger on the pulse, spending time in all the biggest hotspots while pushing myself to discover new destinations that cater well to the remote work lifestyle.</p><p>These two years of research culminated in <a href="https://www.amazon.com.au/Digital-Nomads-Guide-World-Depth-ebook/dp/B078XCDMQQ">a world-wide destination guide for digital nomads</a> and after <a href="https://www.youtube.com/watch?v=ZAhZg1oeIv8" rel="noopener">a year-long journey where I literally travelled around the globe</a> , I&apos;ve decided to take a break from being the proverbial <em>&apos;digital nomad guinea pig&apos; </em>and in 2018, I&apos;m sticking to the destinations that I already know and love.</p><p>Despite my dedication to discovering the world for digital nomads, there are still quite a few destinations that I didn&apos;t get to make it out to in 2016/17 so in this post, I&apos;m going to share my thoughts on an expansive list of destinations that have made it onto my watch list in the last two years.</p><p>First up, let&apos;s cover what a &apos;digital nomad destination&apos; really is.</p><h2 id="what-makes-a-great-digital-nomad-destination">What makes a great digital nomad destination?</h2><p>While the list of destinations from which you could work remotely is near infinite, many remote workers, freelancers and online entrepreneurs (ie. digital nomads) tend to congregate around locations with certain characteristics that make them ideal for working remotely and living an expat lifestyle.</p><p>Some of the characteristics that digital nomads most favour are:</p><ul><li>Affordable short-term cost of living</li><li>Availability of high-speed and reliable internet, and</li><li>An exisiting community of other digital nomads</li></ul><p>Other factors that make for a great destination for remote work could be:</p><ul><li>Warm and consistent weather</li><li>Laidback culture</li><li>Convenience</li><li>Dating opportunities</li><li>Safety</li><li>and so much more</li></ul><p><em><strong>How does one determine the best cities to live and work remotely?</strong></em></p><p>One source is the website<a href="https://nomadlist.com/" rel="noopener"> NomadList.com</a>, which attempts to share data on many of these factors for thousands of cities around the world.</p><p>For me however, I like to use <a href="https://www.christhefreelancer.com/travel-articles/destination-reports/" rel="noopener">in-depth blog articles</a> and word-of-month from other digital nomads, combined with my own research to determine the cities with the most potential.</p><p>The following list is the result of countless hours spent researching and experiencing many of these destinations for myself.</p><p>Here we go!</p><h2 id="the-bonafide-digital-nomad-hotspots">The Bonafide Digital Nomad Hotspots</h2><p>There are just a handful of locations that are known in the remote work community to be &apos;<em>digital nomad hotspots&apos;.</em></p><p>Ask anyone and you&apos;ll usually hear these 5 destinations come up most often.</p><h3 id="1-chiang-mai-thailand">#1: Chiang Mai, Thailand</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Chiang-Mai-Digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="683" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Chiang-Mai-Digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Chiang-Mai-Digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Chiang-Mai-Digital-nomad-destination.jpg 1024w"></figure><p>Chiang Mai is considered the digital nomad mecca and I can totally understand why.</p><p>All up, I&apos;ve spent 9 months so far living in Chiang Mai and am heading back next month for another 2-3 months.</p><p>Chiang Mai ticks a lot of boxes for digital nomads. It&apos;s inexpensive and easy to navigate, has plenty of coworking spaces / cafes to work from and a thriving expat community.</p><p>At this stage, I&apos;ve already spoken at length about Chiang Mai, so I&apos;ll just direct you to my in-depth articles on everything from cost of living to finding an apartment:</p><ul><li><a href="https://christhefreelancer.com/one-month-as-a-digital-nomad-in-chiang-mai/">My First Month in Chiang Mai [Report]</a></li><li><a href="https://christhefreelancer.com/chiang-mai-cost-of-living/">The Ultimate Chiang Mai Cost of Living Guide</a></li><li><a href="https://christhefreelancer.com/chiang-mai-gyms/">Where to Work Out in Chiang Mai &#x2013; The Top 10 Gyms</a></li><li><a href="https://christhefreelancer.com/coworking-in-chiang-mai/">Where to Work in Chiang Mai: Cafes &amp; Coworking Spaces (Office of the Day Series)</a></li><li><a href="https://christhefreelancer.com/finding-an-apartment-in-chiang-mai/">Finding an Apartment in Chiang Mai</a></li></ul><h3 id="2-bali-indonesia">#2: Bali, Indonesia</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Bali-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="683" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Bali-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Bali-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Bali-digital-nomad-destination.jpg 1024w"></figure><p>Bali is a close second to Chiang Mai as the digital nomad capital of the world.</p><p>While Chiang Mai tends to attract bootstrapping entrepreneurs, Bali attracts a different kind of nomad in the sense that it&apos;s more of a holiday island.</p><p>Although the island has been popular with tourists for decades, the coworking scene only just got started in 2013 when the island&apos;s first coworking space, <a href="https://hubud.org/" rel="noopener">Hubud</a> opened its doors.</p><p>Since then, there have been new coworking spaces opening up across the island and this has been an important step for an island like Bali which caries a reputation for having a poor internet infrastructure.</p><p>Nowadays, Bali is a prime location for &apos;<em>destination working&apos; </em>which is essentially the idea that your holiday destination can double as a remote work location as well.</p><p>More on Bali:</p><ul><li><a href="https://christhefreelancer.com/one-month-as-a-digital-nomad-in-bali/" rel="noopener">Bali Wrap-Up: One month as a Digital Nomad on the &#x2018;Island of the Gods&#x2019;</a></li><li><a href="https://christhefreelancer.com/coworking-spaces-bali-digital-nomads/" rel="noopener">6 Coworking spaces in Bali for Digital Nomads</a></li></ul><h3 id="3-bangkok-thailand">#3: Bangkok, Thailand</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Bangkok-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="578" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Bangkok-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Bangkok-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Bangkok-digital-nomad-destination.jpg 1024w"></figure><p>Objectively speaking, I think its safe to say that Thailand is the best <em>country</em> for living and working remotely as a foreigner and as the capital of Thailand, Bangkok is naturally a prime destination for a lot of digital nomads.</p><p>The city now has more coworking spaces than I can easily count and is an exciting destination for a lot of budget travellers.</p><p>The big downside to Bangkok is how crowded the city is and with over 8 million residents, the digital nomad scene appears quite spread out across the city.</p><p>More on Bangkok:</p><ul><li><a href="https://christhefreelancer.com/6-coworking-spaces-bangkok-digital-nomads/">6 Coworking Spaces in Bangkok for Digital Nomads</a></li></ul><h3 id="4-ho-chi-minh-city-vietnam">#4: Ho Chi Minh City, Vietnam</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Ho-Chi-Minh-City-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1600" height="898" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Ho-Chi-Minh-City-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Ho-Chi-Minh-City-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Ho-Chi-Minh-City-digital-nomad-destination.jpg 1600w" sizes="(min-width: 1200px) 1200px"></figure><p>Much like Bangkok, Ho Chi Minh City (aka Saigon) is a huge city with over 8 million people.</p><p>While I honestly can&apos;t explain why, Saigon is <a href="http://www.johnnyfd.com/2014/02/entrepreneurs-in-saigon-co-working.html">very popular with location independent entrepreneurs</a> and is often compared side-by-side with Chiang Mai as the best place to bootstrap your online business.</p><p>More on Ho Chi Minh City:</p><ul><li><a href="https://christhefreelancer.com/digital-nomad-in-saigon/" rel="noopener">Ho Chi Minh City Wrap-Up: One Month as a Digital Nomad in Busy &amp; Bustling Saigon</a></li></ul><h3 id="5-medellin-colombia">#5: Medellin, Colombia</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Medellin-Digital-Nomad-Destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="683" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Medellin-Digital-Nomad-Destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Medellin-Digital-Nomad-Destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Medellin-Digital-Nomad-Destination.jpg 1024w"></figure><p>Finally, Medellin is the newest bonafide digital nomad hotspot.</p><p>It mixes many of the characteristics of the first four destinations like low cost of living, exciting nightlife / culture and good internet but in a completely different continent.</p><p>The city has come a long way from the dark days of Pablo Escobar and is now a well developed city bolstered by Colombia&apos;s fast-growing tourism market.</p><p>More on Medellin:</p><ul><li><a href="https://christhefreelancer.com/medellin-for-digital-nomads/" rel="noopener">Medellin Wrap-Up: 10 days in the City of Eternal Spring</a></li></ul><p>Now that we&apos;re covered the 5 bonafide hotspots, let&apos;s now cover the other 25 destinations, continent by continent.</p><h2 id="top-asian-destinations">Top Asian Destinations</h2><p>As far as continents go, Asia appears to have the right mix of culture, cost and weather to attract digital nomads.</p><p>Here are some of the more talked about destinations in Asia:</p><h3 id="6-koh-lanta-thailand">#6: Koh Lanta, Thailand</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Koh-Lanta-Digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="640" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Koh-Lanta-Digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Koh-Lanta-Digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Koh-Lanta-Digital-nomad-destination.jpg 1024w"></figure><p>As we&apos;ve previously discussed, Thailand is an ideal country for living abroad and working remotely. Head to any corner of Thailand and you&apos;ll probably find at least one other expat working remotely.</p><p>Koh Lanta specifically has become a hotspot due to the popularity of <a href="http://kohub.org/">a coworking space called KoHub</a> which <a href="https://youtu.be/Xe53-xzKU0U" rel="noopener">provides the perfect environment to get work done and connect with other digital nomads</a> while enjoying a chill island lifestyle.</p><p>More on Koh Lanta:</p><ul><li><a href="https://christhefreelancer.com/digital-nomad-in-koh-lanta/">Koh Lanta Wrap-Up: 3 Weeks Coworking on a Tropical Island [Report]</a></li></ul><h3 id="7-koh-phangan-thailand">#7: Koh Phangan, Thailand</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Koh-Phangan-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="683" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Koh-Phangan-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Koh-Phangan-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Koh-Phangan-digital-nomad-destination.jpg 1024w"></figure><p>Famous for the original full-moon party, Koh Phangan is perhaps better known as a backpacker&apos;s paradise but with a few coworking spaces on the island, it caters well for digital nomads as well.</p><p>More on Koh Phangan:</p><ul><li><a href="https://christhefreelancer.com/digital-nomad-in-koh-phangan/">Koh Phangan Wrap-Up: 2 Weeks as a Digital Nomad on the Island of Parties and Free Love [Report]</a></li><li><a href="https://christhefreelancer.com/coworking-in-koh-phangan/">Where to Work in Koh Phangan: Cafes &amp; Coworking</a></li></ul><h3 id="8-phuket-thailand">#8: Phuket, Thailand</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Phuket-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Phuket-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Phuket-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Phuket-digital-nomad-destination.jpg 1024w"></figure><p>Still in Thailand, we&apos;re heading back across the other side of the country to take a look at Phuket, an island completely overrun with tourism yet with a quite few expats and digital nomads.</p><p>Ideally, tourism hotbeds like Patong Beach should be avoided at all costs but if you&apos;re into Muay Thai you&apos;ll find a community of nomads and expats training in and around the area of Chalong Bay, a popular location for kickboxing gyms in Thailand.</p><p>More on Phuket:</p><ul><li><a href="https://christhefreelancer.com/digital-nomad-in-phuket/">Phuket Wrap-Up: 6 Days as a Digital Nomad on the Popular Thai Island [Report]</a></li></ul><h3 id="9-pai-thailand">#9: Pai, Thailand</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Pai-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Pai-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Pai-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Pai-digital-nomad-destination.jpg 1024w"></figure><p>Worth mentioning on this list as a destination that comes up often on the website, <a href="https://nomadlist.com/best-cities-for-digital-nomads" rel="noopener">Nomad List</a> is the small village of Pai in Northern Thailand.</p><p>Don&apos;t get me wrong, I absolutely LOVE Pai but I wouldn&apos;t consider it a good &apos;digital nomad destination&apos; as Pai is moreso <a href="https://www.youtube.com/watch?v=ihdefK7ScTI" rel="noopener">the perfect place for a weekend getaway</a>.</p><h3 id="10-kuala-lumpur-malaysia">#10: Kuala Lumpur, Malaysia</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Kuala-Lumpur-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="396" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Kuala-Lumpur-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Kuala-Lumpur-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Kuala-Lumpur-digital-nomad-destination.jpg 1024w"></figure><p>KL (as it&apos;s known for short) is a super popular stopover city that a lot of nomads travel through for either a border run or on the way to their next destination.</p><p>It&apos;s an interesting place for a short visit but nomads generally don&apos;t stick around here for a long-time.</p><p>More on Kuala Lumpur:</p><ul><li><a href="https://christhefreelancer.com/kuala-lumpur-digital-nomad/" rel="noopener">Kuala Lumpur Wrap-Up: 10 Days in the Popular Asian Stopover City</a></li></ul><h3 id="11-kuching-malaysia">#11: Kuching, Malaysia</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Kuching-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="683" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Kuching-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Kuching-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Kuching-digital-nomad-destination.jpg 1024w"></figure><p>Kuching is the first destination on this list that I have not yet personally been to yet but <a href="https://www.freedomsurfer.com/kuching/" rel="noopener">has been touted by others as the next Chiang Mai.</a></p><p>Here&apos;s what James Hunt says about Kuching in <a href="https://www.locationindependent.co.uk/kuching-digital-nomad-guide/" rel="noopener">his extensive article on LocationIndependent.co.uk</a>:</p><blockquote>It&#x2019;s certainly got some parallels; an easy chilled out authentic vibe with an undercurrent of hipster if you know where to look, mixed with the modern luxuries and all at great value.</blockquote><h3 id="12-hanoi-vietnam">#12: Hanoi, Vietnam</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Hanoi-Digital-Nomad-Destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="683" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Hanoi-Digital-Nomad-Destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Hanoi-Digital-Nomad-Destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Hanoi-Digital-Nomad-Destination.jpg 1024w"></figure><p>Hanoi is a destination I had planned to visit in April of 2017 but had to cancel due to <a href="https://www.youtube.com/watch?v=t7DYdnKHGz0" rel="noopener">a last minute trip to Morocco</a>.</p><p>It&apos;s another crazy Vietnamese city but from what it seems, a more culturally creative destination than its counterpart in the south.</p><p>Like Ho Chi Minh City, Hanoi is a good digital nomad destination due to its low cost of living, exotic culture, warm weather and expat community.</p><h3 id="13-danang-vietnam">#13: Danang, Vietnam</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Da-nang-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="398" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Da-nang-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Da-nang-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Da-nang-digital-nomad-destination.jpg 1024w"></figure><p>Danang sits in between Hanoi and Ho Chi Minh in central Vietnam and is the less busy alternative to these popular Vietnamese hotspots.</p><p>A search for &apos;<em>danang for digital nomads&apos; </em>brings up a few different articles indicating to me that there is potential there but there hasn&apos;t been enough hype to lure me over there just yet.</p><h3 id="14-taipei-taiwan">#14: Taipei, Taiwan</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Taipei-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="418" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Taipei-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Taipei-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Taipei-digital-nomad-destination.jpg 1024w"></figure><p>Taipei is a city that ranks well on <a href="https://nomadlist.com/" rel="noopener">Nomad List</a> as a low-cost and more open alternative to China.</p><p>However, as Johnny FD (the only other blogger I know to have covered Taipei) writes on <a href="http://www.johnnyfd.com/2015/04/johnnys-guide-to-taiwan-coworking.html" rel="noopener">his post on the city</a>:</p><blockquote>I&apos;ll definitely come here again as a tourist and recommend it to anyone, but as of 2015 it&apos;s not a digital nomad destination.</blockquote><p>I will admit that with direct flights operating from Chiang Mai, I have been tempted to visit Taipei but in terms of a long-term digital nomad lifestyle, I don&apos;t yet see a ton of potential.</p><h3 id="15-siem-reap-cambodia">#15: Siem Reap, Cambodia</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Siem-Reap-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="570" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Siem-Reap-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Siem-Reap-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Siem-Reap-digital-nomad-destination.jpg 1024w"></figure><p>Finally in Asia, Siem Reap is a destination in which I visited in 2016 but as &apos;<em>digital nomad destination&apos;, </em>I wasn&apos;t impressed.</p><p>While I would definitely consider a visit to <a href="https://www.youtube.com/watch?v=P_gaRJQCNGQ" rel="noopener">check out the amazing temples</a> and party on pub street, I personally wouldn&apos;t want to stay longer than a week in the city.</p><p>I do mention it however as it is a low-cost destination with coworking spaces available to get productive and meet other nomads, so if Siem Reap appears to be an interesting place for you, definitely give it a go.</p><p>More on Siem Reap:</p><ul><li><a href="https://christhefreelancer.com/digital-nomad-in-siem-reap/" rel="noopener">Siem Reap Wrap-Up: 1 Week in Cambodia as a Digital Nomad</a></li></ul><h2 id="european-destinations">European Destinations</h2><p>Moving on from Asia, Europe is a continent of incredible diversity and connectedness.</p><p>With so many cities in close proximity and linked via cheap flights, it a place that&apos;s perfect to spend hopping from place to place on that quintessential euro-tour.</p><h3 id="16-budapest-hungary">#16: Budapest, Hungary</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Budapest-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Budapest-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Budapest-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Budapest-digital-nomad-destination.jpg 1024w"></figure><p>Each year when Europe hits summer, Budapest appears to shoot to the top of <a href="https://nomadlist.com/" rel="noopener">Nomad List</a>.</p><p>It&apos;s a beautiful city that retains a low cost of living, especially when compared to its counterparts in Western Europe. It&apos;s well regarded in the digital nomad community and it&apos;s a city with everything you need to live a comfortable remote work lifestyle.</p><p>My opinion on Budapest after travelling there in June 2017: Yes, it is beautiful but what else? For me, it felt too much like a regular city and I realised how much I missed the exotic culture of South East Asia.</p><p>More on Budapest:</p><ul><li><a href="https://christhefreelancer.com/budapest-for-digital-nomads/" rel="noopener">Budapest Wrap-Up: 2 Weeks in the Popular European Capital</a></li></ul><h3 id="17-berlin-germany">#17: Berlin, Germany</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2025/02/claudio-schwarz-TScGhJM716g-unsplash.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1920" height="1281" srcset="https://www.christhefreelancer.com/content/images/size/w600/2025/02/claudio-schwarz-TScGhJM716g-unsplash.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2025/02/claudio-schwarz-TScGhJM716g-unsplash.jpg 1000w, https://www.christhefreelancer.com/content/images/size/w1600/2025/02/claudio-schwarz-TScGhJM716g-unsplash.jpg 1600w, https://www.christhefreelancer.com/content/images/2025/02/claudio-schwarz-TScGhJM716g-unsplash.jpg 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Berlin appears at #4 position on Nomad List&apos;s &apos;<a href="https://nomadlist.com/best-cities-for-digital-nomads" rel="noopener">Best Cities for Digital Nomads</a>&apos;.</p><p>To me personally, I&apos;ve never seen it as a &apos;<em>digital nomad destination&apos; </em>and after <a href="https://www.facebook.com/christhefreelancer/videos/vl.534008066771714/2045419219025125" rel="noopener">spending a few days there visiting a friend last summer</a>, I didn&apos;t experience anything that changed that perception for me.</p><h3 id="18-belgrade-serbia">#18: Belgrade, Serbia</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/belgrade-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="644" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/belgrade-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/belgrade-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/belgrade-digital-nomad-destination.jpg 1024w"></figure><p>Alright, now we&apos;re onto a destination in which I believe deserves more recognition in the nomad community.</p><p>While Belgrade might not seem like much, it covers all the basics very well (at least it does for me).</p><p>With fast internet, a low cost of living and a size that makes it easy to get around in, it&apos;s a city that works well for the remote work lifestyle and especially if you&apos;re into nightlife and dating, I&apos;ve heard that Belgrade is a fun city for singles.</p><p>More on Belgrade:</p><ul><li><a href="https://christhefreelancer.com/belgrade-for-digital-nomads/" rel="noopener">Belgrade Wrap-Up: One Month as a Digital Nomad in Europe&#x2019;s Most Under-Rated Capital</a></li></ul><h3 id="19-sofia-bulgaria">#19: Sofia, Bulgaria</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/sofia-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="557" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/sofia-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/sofia-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/sofia-digital-nomad-destination.jpg 1024w"></figure><p>To me, Sofia is like the polished Belgrade. Just like the Serbian capital, it covers all the basics really well but has the added benefit of being an EU city, which for EU nomads makes travelling there much easier and overall, it&apos;s just that little bit more advanced.</p><p>More on Sofia:</p><ul><li><a href="https://christhefreelancer.com/sofia-for-digital-nomads/" rel="noopener">Sofia Wrap-Up: 2 Weeks of Summer in the Bulgarian Capital</a></li></ul><h3 id="20-prague-czech-republic">#20: Prague, Czech Republic</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/prague-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="680" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/prague-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/prague-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/prague-digital-nomad-destination.jpg 1024w"></figure><p>From what I&apos;ve heard, Prague is a similar city to Budapest in the sense that it is just as beautiful and has a similar cost of living and coworking scene here.</p><p>According to <a href="https://medium.com/@MartinRosulek/why-is-prague-getting-popular-among-digital-nomads-41aab96b060f" rel="noopener">Martin Rosulek</a>, Prague has:</p><ol><li>Nice weather for 9 months of the year</li><li>Architecture and sightseeing with story behind it</li><li>Modern Infrastructure</li><li>A good level of spoken English</li><li>Lots of coworking spaces and events, and</li><li>A good nightlife scene</li></ol><p>But I can&apos;t verify as I know very few people who have spent a considerable amount of time there.</p><h3 id="21-lisbon-portugal">#21: Lisbon, Portugal</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/lisbon-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="768" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/lisbon-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/lisbon-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/lisbon-digital-nomad-destination.jpg 1024w"></figure><p>Out of all the destinations I didn&apos;t get to visit in 2017, Lisbon was the one I was most disappointed to miss.</p><p>It&apos;s home to <a href="https://www.dnxglobal.com/" rel="noopener">the annual DNX Conference</a> and a booming destination for tourists and digital nomads alike.</p><p>According to Italian expat, <a href="https://storyv.com/author/marcelladerosa/">Marcella de Rosa</a>,</p><blockquote>Portugal, Lisbon is now becoming one of the main hubs in Europe for expats and digital nomads. More and more people are moving there and don&#x2019;t plan to return home.</blockquote><p>It&apos;s also a city in which a surprising number of travel bloggers (such as <a href="https://www.neverendingfootsteps.com/why-i-moved-to-lisbon-portugal" rel="noopener">Lauren Juliff</a>) have decided to base themselves, indicating that many of the most well-travelled and influential digital nomads rate Lisbon quite highly.</p><h3 id="22-las-palmas-de-gran-canaria-spain">#22: Las Palmas de Gran Canaria, Spain</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/las-palmas-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1019" height="768" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/las-palmas-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/las-palmas-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/las-palmas-digital-nomad-destination.jpg 1019w"></figure><p>While technically a part of Spain, the city of Las Palmas in the Canary Islands is situated near the coast of North Africa, meaning that consistent warm weather flows through the island all year round.</p><p>I travelled to Las Palmas in September of 2017 and for me, it&apos;s one of my personal top 5 digital nomad destinations. It&apos;s got plenty of coworking spaces to work from, an incredible diversity of landscapes including colonial cities, beaches and mountains and finally, a thriving expat community due to its position in the EU and favourable economic conditions for remotely operating businesses.</p><p>It&apos;s also home to <a href="https://www.nomadcity.org/" rel="noopener">the annual Nomad City Conference</a> and during 2017, was the starting point of the bi-annual <a href="https://www.nomadcruise.com/" rel="noopener">Nomad Cruise</a>.</p><p>More on Las Palmas de Gran Canaria:</p><ul><li><a href="https://christhefreelancer.com/las-palmas-for-digital-nomads/" rel="noopener">Las Palmas Wrap-Up: One Month as Digital Nomads on the Island of Gran Canaria</a></li></ul><h3 id="23-tenerife-spain">#23: Tenerife, Spain</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/tenerife-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="343" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/tenerife-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/tenerife-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/tenerife-digital-nomad-destination.jpg 1024w"></figure><p>Also in the Canary Islands is Tenerife which appears to have similar conditions and an equal amount of workspaces for digital nomads.</p><p>It&apos;s also one of the best places to head for a work retreat with spaces like <a href="https://wolfhouse.co/" rel="noopener"><em>Wolf House</em></a> catering for teams and <em><a href="https://www.coworkinginthesun.com/" rel="noopener">Coworking in the Sun</a> </em>that caters more for individuals.</p><h3 id="24-tarifa-spain">#24: Tarifa, Spain</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Tarifa-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="768" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Tarifa-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Tarifa-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Tarifa-digital-nomad-destination.jpg 1024w"></figure><p>Moving from the Canary Islands to mainland Spain, Tarifa is a small town in the south of Spain that my friend and Nomad Cruise founder, <a href="http://www.webworktravel.com/tarifa-digital-nomad-guide/" rel="noopener">Johannes V&#xF6;lkner</a> is trying to promote to the digital nomad community.</p><p><a href="http://www.webworktravel.com/tarifa-digital-nomad-guide/" rel="noopener">According to Johannes</a>,</p><blockquote>Tarifa is an amazing place in low season (September &#x2013; June). The prices are low and it&#x2019;s a fantastic place to try out the digital nomad lifestyle. Getting here is super easy, the infrastructure is great and besides Tarifa there is much more to see if you explore the other parts of Andalusia.<br><br>It&#x2019;s the perfect place to escape the big city life, live on the beach and take advantage of your location independent job. In fact it could one day become the Ubud of Europe ;-).</blockquote><h3 id="25-tbilisi-georgia">#25: Tbilisi, Georgia</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Tbilisi-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="484" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Tbilisi-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Tbilisi-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Tbilisi-digital-nomad-destination.jpg 1024w"></figure><p>Perhaps a little obscure, Tbilisi is a city in Europe that my friend and blogger, <a href="http://drivenliving.com/" rel="noopener">Adrian Ingram</a> discovered to be a potential digital nomad destination in the coming years.</p><p>In his video, &apos;<a href="https://www.youtube.com/watch?v=FmN2Eg3WsSM" rel="noopener">A Short Day in Tbilisi&apos;</a>, Adrian marks Tbilisi as a city that digital nomads might love due to its low cost of living, favourable visas - I&apos;m talking 12 months on arrival for Australians! - and internet everywhere that averages around 24Mbps up and down.</p><p>Unfortunately there appears to be no &quot;<em>digital nomad community&quot; </em>there at the moment but that can always change as more nomads come and verify these positive conditions for the rest of the community.</p><h3 id="26-bansko-bulgaria">#26: Bansko, Bulgaria</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/bansko-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="681" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/bansko-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/bansko-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/bansko-digital-nomad-destination.jpg 1024w"></figure><p>For the final city in my list of European destinations we&apos;re heading back to Bulgaria to a small town which <a href="https://medium.com/@nomadicmagnus/bansko-the-digital-nomad-ski-resort-640c75ce10f5" rel="noopener">Magus Nomad describes as &apos;The Digital Nomad Ski Resort&apos;.</a></p><p>While setting up as a digital nomad in a ski destination is usually an expensive exercise, Magnus says that Bansko is the exception.</p><p>But what about work? Of course, you&apos;re going to need good internet and depending on who you are, a community of like-minded coworkers to hang out with. Luckily, <a href="http://coworkingbansko.com/" rel="noopener">Coworking Bansko</a> exists to foster this community and give you a good spot to work.</p><p>As an Aussie, I won&apos;t be rushing across the world anytime soon to spend my Aussie summer in Wintery Europe but it does sound like a cool alternative to the mainstream digital nomad hotspots which all exist within hot climates.</p><h2 id="latin-american-destinations">Latin American Destinations</h2><p>Although the cost of living in Latin America is generally favourable and of course, the culture is exciting, there doesn&apos;t seem to be many &apos;<em>digital nomad destinations&apos; </em>in Mexico and South America.</p><p>There are of course exceptions. Most notably, Medellin is not only the major hotspot of this region but popular on a world scale (as previously mentioned).</p><p>As for the others, I suspect I will have to add more destinations as time goes on but for now, beside Medellin, there is only one other location that I feel has earned the title of a &apos;digital nomad destination&apos;.</p><h3 id="27-playa-del-carmen-mexico">#27: Playa del Carmen, Mexico</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Playa-del-Carmen-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1014" height="768" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Playa-del-Carmen-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Playa-del-Carmen-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Playa-del-Carmen-digital-nomad-destination.jpg 1014w"></figure><p>I&apos;ve always looked at Mexico as a country with enormous potential for digital nomads. Most of the things that nomads appreciate about Thailand for example, you can find in Mexico and in one particular town, a community has started to form.</p><p>Playa del Carmen is a tourist town on the Yucantan peninsula between Cancun and Tulum.</p><p>In Playa del Carmen, it&apos;s possible to live on a low budget and still enjoy the stunning natural environment.</p><p>Local food in Playa is delicious and inexpensive and while the nomad scene is small here, there&apos;s <a href="https://www.coworker.com/mexico/playa-del-carmen/nest-coworking" rel="noopener">a great coworking space called Nest</a> which is fostering an inclusive digital nomad community.</p><p>More on Playa del Carmen:</p><ul><li><a href="https://christhefreelancer.com/playa-del-carmen-for-digital-nomads/" rel="noopener">Playa Del Carmen Wrap-Up: One Month as Digital Nomads in Mexican Paradise</a></li></ul><h2 id="african-middle-eastern-destinations">African / Middle-Eastern Destinations</h2><p>The African / Middle-Eastern Continent is the final to be covered in this list.</p><p>While it is early days for this region, there are a few destinations that currently stand out.</p><h3 id="28-cape-town-south-africa">#28: Cape Town, South Africa</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/cape-town-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="682" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/cape-town-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/cape-town-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/cape-town-digital-nomad-destination.jpg 1024w"></figure><p>Everyone is raving about Cape Town and I&apos;m not quite sure why. I know that Cape Town is popular with young hipsters and creatives but for digital nomads, what&apos;s the deal?</p><p>Nomad Cruise founder Johannes <a href="http://www.webworktravel.com/best-city-to-live-and-work-remotely/" rel="noopener">claims that Cape Town is &apos;<em>the best city to live and work remotely</em></a>&apos; and cites factors such as:</p><ul><li>Lots of Outdoor activities</li><li>Lots of great places to work</li><li>Entrepreneurial Vibes</li><li>Diversity all within a short distance, and</li><li>Luxury Value</li></ul><p>I must admit, I&apos;m pretty excited to one day visit but given its isolated position at the bottom of Africa, I&apos;ll take more than a single glowing endorsement to lure me there.</p><h3 id="29-taghazout-morocco">#29: Taghazout, Morocco</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Taghazout-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1280" height="720" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Taghazout-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Taghazout-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Taghazout-digital-nomad-destination.jpg 1280w" sizes="(min-width: 1200px) 1200px"></figure><p>Taghazout is a small fishing village on Morocco&apos;s Atlantic coast. It&apos;s a popular destination for surfers but for digital nomads, a coliving/coworking space called <a href="https://www.sun-desk.com/" rel="noopener">SunDesk</a> has been setup to accomodate a remote work lifestyle too.</p><p>It&apos;s the kind of place that offers Europeans a short escape from the harsh winters and/or big city lifestyle but given its small size, it&apos;s not somewhere I know of anyone staying long-term.</p><p>I visited <a href="https://www.sun-desk.com/" rel="noopener">SunDesk</a> for 2 nights in 2017, which I felt was long enough to see all of Taghazout. I did feel I could stay longer though, as the vibe was quite comfortable.</p><h3 id="30-dahab-egypt">#30: Dahab, Egypt</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/dahab-digital-nomad-destination.jpg" class="kg-image" alt="30 Digital Nomad Destinations: The Best Cities to Live and Work Remotely in 2018" loading="lazy" width="1024" height="620" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/dahab-digital-nomad-destination.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/dahab-digital-nomad-destination.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/dahab-digital-nomad-destination.jpg 1024w"></figure><p>Despite receiving a low rating on <a href="https://nomadlist.com" rel="noopener">Nomad List</a>, Dahab is home to a coworking space called <a href="https://www.coworkinn-dahab.com/" rel="noopener">CowokInn Dahab</a> which - <a href="https://www.youtube.com/watch?v=9DHDF6bMCQ0">from their marketing videos</a> - looks incredible.</p><p>To be fair though, I think I don&apos;t know anyone who&apos;s actually been to Dahab so I can&apos;t confirm whether it&apos;s a good hotspot or not but it does look incredible and is 100% on my bucket list.</p><h2 id="what-is-the-best-city-for-living-and-working-remotely-in-2018">What is the best city for living and working remotely in 2018?</h2><p>The answer to that is up to you.</p><p>One thing I&apos;ve learned from years of travelling and working remotely is that a healthy dose of personal preference should go into determining the most ideal destinations for you.</p><p>That being said, I&apos;ve made a point to produce this list of 30 destinations to share with you all the places I&apos;ve been as well as all the places I see as having potential.</p><p>If you want to go further in-depth and get over 100 pages of destination advice on 14 of the best locations on this list, <a href="https://www.amazon.com.au/Digital-Nomads-Guide-World-Depth-ebook/dp/B078XCDMQQ">check out my book, &apos;The Digital Nomad&apos;s Guide to the World</a>&apos; otherwise, stay tuned to the blog, as although I plan to spend more time in the destinations I already know and love in 2018, chances are that there will be a few new spots I will check out in my upcoming travels.</p><p>Until next time,</p><p>Chris</p>]]></content:encoded></item><item><title><![CDATA[How to Become a Digital Nomad: 4 Simple Steps to Living the Remote Work Travel Lifestyle]]></title><description><![CDATA[Often, the digital nomad lifestyle is glamourised but in this article, I'm about about to dish out a healthy dose of digital nomad reality.]]></description><link>https://www.christhefreelancer.com/how-to-become-a-digital-nomad/</link><guid isPermaLink="false">60ac297afcfa4a6b50182a0c</guid><category><![CDATA[Work]]></category><category><![CDATA[Remote Work]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Mon, 19 Feb 2018 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/How-to-Become-a-Digital-Nomad.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.christhefreelancer.com/content/images/2021/05/How-to-Become-a-Digital-Nomad.png" alt="How to Become a Digital Nomad: 4 Simple Steps to Living the Remote Work Travel Lifestyle"><p>Just over a year and a half ago, I recorded a video on &apos;<em>How to Be a Digital Nomad</em>&apos; where I laid out my own 4 step process to achieving a lifestyle of remote work and travel.</p><figure class="kg-card kg-embed-card"><iframe src="https://www.youtube.com/embed/pdGW2U9z6yA" width="853" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></figure><p>To this day, this simple framework remains relevant but I still receive email after email from my readers who understand the process but perhaps need more information into how to make their dream of becoming location independent and travelling the world their reality.</p><p>I get it. Out of all the topics I discuss on this website, none seem more challenging then to actually make an income online and travel the world.</p><p>In this article, I&apos;m going to go deeper into the 4 step process outlined in the video above and share with you my top tips from over 2 years of living and working remotely.</p><p>First, let&apos;s cover the basics</p><h2 id="digital-nomad-ism-101">Digital Nomad-ism 101</h2><p>Here&apos;s a quick crash course for those of you who are new to this idea of the digital nomad lifestyle.</p><blockquote>Digital nomads are individuals who leverage technology to be able to work from anywhere in the world, provided they have an internet connection and a computer on which to work with.</blockquote><p>These individuals generate income in a variety of ways - everything from selling t-shirts to building websites. In fact, I&apos;ve interviewed 17 different digital nomads on how they make money online in my article on <a href="https://christhefreelancer.com/digital-nomad-jobs/">digital nomad job ideas</a>.</p><h3 id="how-does-one-become-a-digital-nomad">How does one <em>become </em>a digital nomad?</h3><p>Each person&apos;s path to becoming a digital nomad is different.</p><p>For some, it&apos;s accidental. One day, they realise that they are already working remotely so they just go travelling.</p><p>For others, it&apos;s a very deliberate process.</p><p>For me personally, I became infatuated by the idea of becoming a digital nomad long before I was ever earning a dollar online and I used <em>travel</em> as my primary motivation for learning how to create an online income.</p><p>The path I took meant re-skilling in a completely different field to what I was studying at university and creating a new career for myself with which I could take on the road.</p><p>You see, everyone starts from a different place and for some, the digital nomad lifestyle brings with it certain sacrifices that you may not be willing to make.</p><p>Often, the digital nomad lifestyle is glamourised but in this article, I&apos;m about about to dish out a healthy dose of digital nomad reality.</p><h3 id="should-you-become-a-digital-nomad">Should you become a digital nomad?</h3><p>Before we get into the tips, it should be mentioned that the digital nomad lifestyle is not for everyone. That&apos;s not to say that anyone <em>can&apos;t</em> do it but for some, they may find that the cons out-weight the pros of living this lifestyle.</p><p>In my video entitled, &apos;<em><a href="https://www.youtube.com/watch?v=EfF3UlVnnAY" rel="noopener">Is the location independent lifestyle for me?</a></em>&apos;, I cover some of the pros and cons of being a digital nomad but more importantly, I ask two major questions that weed out a lot people.</p><ol><li>Are you willing to work hard to become a digital nomad? and</li><li>Are you willing to forego your physical possessions?</li></ol><p>Here&apos;s a few others:</p><ul><li>Are you willing to give up a steady income to freelance or start your own business?</li><li>Are you willing to learn new skills and sell your services/product in a competitive marketplace?</li></ul><p>For most people, becoming a digital nomad is tough. It&apos;s just like starting any business or choosing to freelance. It&apos;s risky and you might not be willing to give up your current lifestyle to try and make an income exclusively online.</p><p>However, if you know you truly want to become a digital nomad, here is my recommended process.</p><h2 id="how-to-become-a-digital-nomadthe-framework">How to Become a Digital Nomad - The Framework</h2><p>If you watched the video above, you should understand the process now but let&apos;s recap and go into more detail.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/How-to-be-a-Digital-Nomad.png" class="kg-image" alt="How to Become a Digital Nomad: 4 Simple Steps to Living the Remote Work Travel Lifestyle" loading="lazy" width="744" height="1168" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/How-to-be-a-Digital-Nomad.png 600w, https://www.christhefreelancer.com/content/images/2021/06/How-to-be-a-Digital-Nomad.png 744w"><figcaption>&apos;The Framework&apos; by Chris the Freelancer</figcaption></figure><h2 id="step-1-build-your-skill">Step 1: Build your skill</h2><p>The first step to becoming a digital nomad is to learn the skills of a digital nomad. The goal isn&apos;t to learn every digital skill there is but instead to choose one major skill and develop it.</p><p>Whether you plan to freelance, work for a company or start your own business, you&apos;ll need to build a certain skill. It might be learning how to build websites, analysing data or publishing books on Amazon. Whatever it is, if you can stick with that skill and aim for mastery, you will be destined to succeed.</p><p>Now before you become overwhelmed with the idea that you&apos;ll have to go back to school or college to learn this new skill, do not threat! We are currently in a golden age of self-education and learning new skills has become incredibly simple and inexpensive.</p><p>Take for example my own story, which I wrote about in my first book, &apos;<em><a href="https://www.christhefreelancer.com/how-to-code-book" rel="noopener">How I learned to Code</a>&apos;.</em></p><p>I was in my final semester of university when I decided to learn how to code. I started learning Ruby on Rails with a free membership to <a href="https://www.lynda.com/" rel="noopener">Lynda</a> (provided through the library at my university) and a month before graduating, I had my first full-time job as a developer.</p><p>Crazy huh?</p><p>We&apos;re told we have to go to university for 3 years to get our foot in the door when really, we can get so much information from the internet. And, not only can we get this information for much cheaper than a college degree, we can also be in control of our own learning and educate ourselves at our own pace.</p><h3 id="how-do-you-choose-what-skill-to-build">How do you choose what skill to build?</h3><p>Ah, good question!</p><p>It can be tough. My decision was based on a few factors:</p><ol><li>Web development skills were high in-demand</li><li>I liked the creative aspect of building apps and the challenge of problem-solving, plus</li><li>I could start learning ASAP with free apps and websites</li></ol><p>In fact, I recommend a similar criteria for figuring out your own path as a digital nomad.</p><p><a href="https://suitcaseentrepreneur.com/" rel="noopener">Natalie Sisson from the Suitcase Entrepreneur</a> calls this process &apos;<em>finding your sweet spot</em>&apos;. It&apos;s about finding the intersection of 1) What you love to do, 2) What you&apos;re good at and 3) What people would be willing to pay you for.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/Natalie-Sisson-SweetSpot-1.jpg" class="kg-image" alt="How to Become a Digital Nomad: 4 Simple Steps to Living the Remote Work Travel Lifestyle" loading="lazy" width="589" height="465"><figcaption>via Natalie Sission</figcaption></figure><p>Some people get hung up at this stage because what they <em>lov</em>e doing might not be a marketable or location independent skill. In this case, you should simply look for something that you&apos;re at least <em>like </em>doing.</p><p>As Niall Doherty puts it in a <a href="https://www.youtube.com/watch?v=hcddWoTOIsM" rel="noopener">video discussing the sweet spot</a> (he calls it the hedgehog method) , &apos;<em>you don&apos;t have to love it. You just have to like it</em>&apos;.</p><p>If you&apos;re feeling lost, just look at a list of digital nomad jobs (<a href="https://christhefreelancer.com/digital-nomad-jobs/">like this one</a>) and choose the one you like to do the most.</p><h3 id="where-can-i-learn-these-skills">Where can I learn these skills?</h3><p>The three places I recommend you look to for learning any digital skill is:</p><ol><li><a href="http://click.linksynergy.com/fs-bin/click?id=vyjYfn16xXg&amp;offerid=323058.81&amp;type=3&amp;subid=0" rel="noopener">Udemy</a></li><li><a href="https://www.skillshare.com/r/profile/Christopher-Dodd/3311891" rel="noopener">Skillshare</a></li><li><a href="https://www.lynda.com/" rel="noopener">Lynda</a></li></ol><p>Each of them operate slightly differently but what they all have in common is that you can find courses about a range of topics. Whether it be digital marketing or design or web development, you can find it all in the one place.</p><p>If you&apos;d like to learn web development like I did, a few places I recommend you start are:</p><ul><li><a href="http://treehouse.7eer.net/c/267872/228915/3944" rel="noopener">Team Treehouse</a></li><li><a href="http://www.codecademy.com/" rel="noopener">Codecademy</a></li><li><a href="https://www.codeschool.com/" rel="noopener">Code School</a>, and</li><li><a href="https://www.freecodecamp.com/" rel="noopener">Free Code Camp</a></li></ul><p>Some of these resources are free and others cost a little bit of money but it&apos;s absolutely peanuts compared to what you&apos;d have to pay to get a formal education.</p><p>The alternative to learning online is to go to a training bootcamp, college or university in your local area. It&apos;s entirely up to you but I&apos;m personally a big non-believer in university as I got started in web development without any paid education whatsoever.</p><p>If you&apos;d like to follow my path and learn the exact skills I used to become a location independent web developer, <a href="https://www.skillshare.com/r/profile/Christopher-Dodd/3311891" rel="noopener">check out my classes on Skillshare.com</a>. New members get 2 months for FREE!</p><h2 id="step-2-sell-your-services">Step 2: Sell your services</h2><p><em>Note: &apos;Services&apos; can be replaced with &apos;product&apos; if you run a product based business.</em></p><p>The next step and the one I personally underestimated when I was starting out is the &apos;sales&apos; part of your business.</p><p><em>&apos;But wait Chris, I&apos;m just trying to become a freelancer!&apos;</em></p><p>Same here but guess what? The best way to succeed even as a freelancer is to think about yourself as a business.</p><p>It&apos;s one thing to have skills but another thing completely to be able to convince someone to hire you.</p><p>When you&apos;re seeking employment, you only have to sell yourself once. After that, you&apos;re hired. You just do your job and try not to get fired!</p><p>As a freelancer however, you&apos;re a one man band. The sales department in your business is you! Not to mention, you&apos;ve now lost your <em>location advantage </em>which means you&apos;re now competing with people from all around the world, not just people in your local area.</p><p>This was <strong><em>the single biggest mistake I made in what I thought was a perfect digital nomad plan</em></strong>. I built my skills as a developer for a year, got some really good jobs but once I was left to finding work exclusively online, I struggled.</p><p>You see, regardless of what core skill you choose to freelance in (or start a business with), you need another skill and that is<em> sales and marketing</em>.</p><h3 id="the-shortcut-to-getting-sales">The shortcut to getting sales</h3><p>To market anything online you need traffic. Traffic becomes leads and leads become sales.</p><p>Luckily you don&apos;t need to build your own traffic source to start making money, as buyers are a plenty on existing online marketplaces.</p><p>When I say <em>Online Marketplaces,</em> I&apos;m talking about sites like:</p><ul><li><a href="http://upwork.com/" rel="noopener">UpWork.com</a> - for finding freelance work</li><li><a href="https://www.fiverr.com/" rel="noopener">Fiverr.com</a> - for posting ads for your service</li><li><a href="https://www.amazon.com/?&amp;_encoding=UTF8&amp;tag=christhefree-20&amp;linkCode=ur2&amp;linkId=46a11fd02f47295e1539efb925aee613&amp;camp=1789&amp;creative=9325" rel="noopener">Amazon.com</a> - where you sell virtually any kind of physical product as well as eBooks, and</li><li><a href="http://click.linksynergy.com/fs-bin/click?id=vyjYfn16xXg&amp;offerid=323058.81&amp;type=3&amp;subid=0" rel="noopener">Udemy.com</a> - for selling online courses</li></ul><p>These sites have already built up massive traffic and in the case of UpWork, thousands of warm leads for freelancers.</p><p>But don&apos;t get me wrong, just because these platforms have thousands of prospective customers on them doesn&apos;t mean it&apos;s easy to make sales. This is because the low barrier to entry makes these platforms super competitive.</p><p>Especially for freelancers, so-called &apos;experts&apos; will generally recommend you look at your exisiting network first before diving into online platforms. This is because people like to work with those they already know and trust but the issue with this is that it&apos;s not exactly scalable.</p><p>When I was starting out as a freelancer in Brisbane, Australia, I decided to do the personal network thing. I set myself up at my local coworking space, I made flyers and I attended all the meetups. I would tell people that I did web development and guess what? It worked. I started getting freelance clients and scored a major contract that resulted in over $10,000.</p><p>The issue however, was when I started travelling.</p><p>You see, as soon as I left Australia, I left that network behind and I no longer had that <strong><em>location advantage.</em></strong></p><p>It was only then that I was flung into the competitive world of online freelancing.</p><p>The same goes for business too. Set up a garage sale in your front yard and put up a sign around the corner and you&apos;ll likely have at least one person show up at your door but of course, that model is not scalable and it&apos;s definitely not location independent.</p><p>So online marketplaces are definitely powerful. They do a lot of the work for you but you have to play by their rules. You have to understand how they work and you have to act in the platform&apos;s best interest to succeed.</p><p>The number one online platform for finding freelance work is UpWork. So if you&apos;d like to learn more about succeeding on that particular platform, I created <a href="https://skl.sh/2O2UMEK" rel="noopener">a class on Skillshare.com</a> to show you exactly how to find clients and achieve <em>&apos;Top Rated&apos;</em> status<em>.</em> If you&apos;re interested in using UpWork to find clients and go location independent, definitely <a href="https://skl.sh/2O2UMEK" rel="noopener">check it out here and get two months free (for new members only).</a></p><h3 id="build-your-own-sales-and-marketing-machine"><strong>Build your own sales and marketing machine</strong></h3><p>The alternative to using these online platforms is building your own sales and marketing system. It might be as simple as staying at the one coworking space and mentioning your business to everyone you meet. Or, it could be as complex as having a customer relationship management software, hooked up to your email marketing software and a suite of ads directing traffic to your website and offers.</p><p>As this is an article on becoming a digital nomad and not specifically about building an online business, I won&apos;t go into a lot of detail here. What I will encourage you to do however, is to not neglect this important step the way I did when I started out.</p><p>Whatever it is you&apos;re selling, my advice would be to generate at least some location independent income before you set out on your journey as you never know how difficult it&apos;s going to be until you actually start selling.</p><h2 id="alternative-get-a-remote-job">Alternative: Get a remote job</h2><p>Not prepared to hustle? Need a steady income? or simply want to make sure that you&apos;re able to fund a location independent life on a consistent basis?</p><p>Well, you&apos;re in luck! because it is entirely possible nowadays to stay employed and still become a digital nomad. All you need is a job that you can perform remotely and a boss who is willing to let you travel.</p><p>For some, it&apos;s the golden ticket, especially if you come from a wealthy country like the US. Your western salary can take you virtually anywhere in the world and you don&apos;t have to worry about where your next pay check is coming from.</p><p>Hell! You could just live in Thailand and save for a house!</p><p>But of course, just like any job there are all the same downsides of a regular 9 to 5, just with the extra freedom to be able to work remotely and travel.</p><h3 id="how-does-one-get-a-remote-job">How does one get a remote job?</h3><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/RemoteOk-Digital-Nomad-Job-Board-1024x532.png" class="kg-image" alt="How to Become a Digital Nomad: 4 Simple Steps to Living the Remote Work Travel Lifestyle" loading="lazy" width="1024" height="532" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/RemoteOk-Digital-Nomad-Job-Board-1024x532.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/RemoteOk-Digital-Nomad-Job-Board-1024x532.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/RemoteOk-Digital-Nomad-Job-Board-1024x532.png 1024w"><figcaption>The Homepage of RemoteOK</figcaption></figure><p>Good question! It&apos;s pretty much the same process as getting a normal job but instead of going for an interview in-person, you might be interviewed over Skype (or similar video conferencing platform).</p><p>The hardest part of course, is finding these remote jobs and I&apos;ve found that there are two ways to do this.</p><ol><li>Check on remote job boards like <a href="http://remoteok.io/" rel="noopener">RemoteOk.io</a>, or</li><li>Create a shortlist of the companies who support remote work and contact them directly</li></ol><p>While I&apos;ve never personally met someone who was hired through an online job board, my friend <a href="https://twitter.com/TheBlakeMoore" rel="noopener">Blake Moore</a> was able to use the second strategy to find his part-time remote gig as a growth marketer.</p><p>Applying for a completely remote job online may be just as competitive as finding freelance work (perhaps even more competitive) but have you considered starting local?</p><p>Another friend of mine, <a href="https://dylanwolff.com/">Dylan Wolff</a> searched for remote friendly companies in his own city of Melbourne, Australia and got hired as a junior web developer at a forward-thinking Ruby on Rails development agency. He had to work for three months in-office but after that, he became completely location independent.</p><p>To me, this represents the best of both worlds as Dylan was able to use his location advantage to find work but not be forced to stay in Melbourne as you would be in the case of a regular job.</p><p>This is not to say that finding a remote job is easy but if you can&apos;t afford to take the financial risk of becoming your own boss, this could be a much better alternative.</p><h2 id="step-3-remove-your-barriers-to-freedom">Step 3: Remove your barriers to freedom</h2><p>For a lot of people, the biggest barrier to becoming a digital nomad is simply the ability to earn a location independent income but of course, there are many other factors that could hold people back from living a long-term travel lifestyle.</p><p>In this section, I will be briefly talk about a few of them.</p><h3 id="1-financial-commitments">1. Financial Commitments</h3><p>Do you currently have a lease or a mortgage? Maybe you run a physical business that you can&apos;t just quit and leave? Or maybe, you have some debts to pay?</p><p>Whatever it is, the ideal scenario is that you do your best to clear your financial obligations before you set off on your travels.</p><p>I know this might be incredibly obvious but unfortunately, there are no shortcuts here.</p><p>When I decided that I wanted to become a digital nomad, I had 11 more months on my apartment so I waited until the lease ended before my girlfriend and I started travelling.</p><p>If you own your own property, perhaps you might want to either sell or rent it out?</p><p>I understand that it simply may not be practical to sell everything and leave. I wouldn&apos;t necessarily recommend it but if you have financial commitments, this needs to factor into your decision</p><h3 id="2-relationship-commitments">2. Relationship Commitments</h3><p>Perhaps you support a family or you have a partner who doesn&apos;t share your desire and/or ability to work remotely and travel?</p><p>Unfortunately, there is no shortcut here either and the decision to travel or not may require you to make sacrifices on either side.</p><p>I&apos;m not going to tell you break up with your girlfriend or boyfriend but you need to understand that sometimes you can&apos;t have both.</p><p>I have a few friends who had to give up their relationships to continue pursuing this lifestyle and it was tough. In the end however, they valued their own personal freedom higher than staying any relationship that forced them to settle in the one place and that&apos;s why they had to make that sacrifice.</p><h3 id="3-consumerism">3. Consumerism</h3><p>In western culture, consumerism has reached a whole other level and the concept of Minimalism has gained popularity as society realises that many of us have an unhealthy addiction to physical possessions.</p><p>Regardless of whether you want to be a &apos;<em>digital nomad&apos;, </em>I&apos;d recommend that you perform an audit on your possessions and determine which of them actually add value to your life. As a long-term traveller, minimalism becomes ever more important.</p><p>Chances are that you can&apos;t take your 44 inch television, recording studio or garage workshop in a suitcase to travel around the world and so unfortunately, you&apos;ll need to make a sacrifice here as well if you want to travel as a digital nomad.</p><h3 id="4-fear-mindset">4. Fear &amp; Mindset</h3><p>While I wouldn&apos;t say being a digital nomad is for everyone, I believe that anyone who loves the idea of long-term travel and is savvy and passionate about digital technology can realistically make it happen. It just requires a certain mindset and might require you to step outside of your comfort zone.</p><p>If you feel like fear is holding you back from making the leap, I would advise you to reframe it. You can look at fear as a sign you should turn away or you can view it as a sign of where you need to go next.</p><p>Whatever it is you fear, understand that you need to fight fear in order to grow. You might have your doubts about this lifestyle but unfortunately, you&apos;ll never know if you don&apos;t actually go and do it.</p><h2 id="step-4-choose-your-locations-and-go">Step 4: Choose your location(s) and go!</h2><figure class="kg-card kg-embed-card"><iframe src="https://www.youtube.com/embed/Lmt1v-DYCBs?rel=0&amp;controls=0" width="853" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></figure><p>This is the fun part. You&apos;ve now built a skill and are out there selling it (hopefully), you&apos;ve eliminated (or at least minimised) your barriers to freedom and now it&apos;s time to choose that location and book those flights!</p><p>When I started out on my digital nomad journey, I wanted to go to all of these places that I&apos;d heard about in the digital nomad community and over my two year journey, I went to over 15 different countries to discover the best cities to live and work remotely.</p><p>This step is pretty easy as in theory, a digital nomad destination only needs two things:</p><ol><li>It needs to be affordable, and</li><li>The internet needs to be stable</li></ol><p>Everything else is up to personal preference.</p><p>Objectively speaking however, there are a number of popular digital nomad hotspots that remote workers most frequent.</p><p>Over the last two years, I&apos;ve made it my mission to discover these destinations and cover them on <a href="https://christhefreelancer.com/destination-reports">my blog</a> and in my book, &apos;<em><a href="https://www.amazon.com.au/Digital-Nomads-Guide-World-Depth-ebook/dp/B078XCDMQQ">The Digital Nomad&apos;s Guide to The World 2018</a></em>&apos;. I recommend you read my posts and <a href="https://www.amazon.com.au/Digital-Nomads-Guide-World-Depth-ebook/dp/B078XCDMQQ">order the book</a> if you want to discover more about these destinations.</p><p>Another place you can get destination ideas from is the website <a href="http://nomadlist.com" rel="noopener">NomadList.com</a> which lists the best destinations to live and work remotely.</p><p>That being said, the one thing I recommend in <a href="https://www.youtube.com/watch?v=Lmt1v-DYCBs" rel="noopener">the video above</a> is to determine your own criteria about what matters to you as a remote worker.</p><p>For me personally, I value locations that have:</p><ul><li>A range of coworking spaces and spots to work from</li><li>A thriving and welcoming community of other remote workers and entrepreneurs</li><li>Warm weather, and</li><li>Delicious and convenient food options</li></ul><p>What&apos;s your criteria?</p><p>You don&apos;t need to have it all figured out just yet. In fact, it might be exciting for you to spin the globe and go where ever your finger lands!</p><p>For those of who are less spontaneous however, if helps to be able to use these resources.</p><h2 id="step-5-just-do-it">Step 5: Just do it!</h2><p>Ok. I&apos;m cheating here by introducing an extra step but after you complete the 4 steps above, there&apos;s only one more thing you need to do and that is to book that flight, pack your bags and just go!</p><p>Of course, there are likely to be many challenges after you start your journey but don&apos;t worry too much about them right now. You&apos;re now a digital nomad and who knows where this path will lead you.</p><p>After two years of doing this, I&apos;m ready to slow down and separate work and travel a little bit but we&apos;re all different. Maybe you&apos;ll decide this lifestyle isn&apos;t for you and come home after a few months or maybe you&apos;ll build a passive income business and travel for the next 10 years!</p><p>The beauty of this journey is that you&apos;re taking your life in a conscious direction and I think that is something that we should all do regardless of whether we want to travel or not.</p><p>Go forth, enjoy your journey and let me know how you go!</p><p>Until next time,</p><p>Chris</p><hr><p><em>Disclosure: Some of the links in this post are &#x2018;affiliate links.&#x2019; This means if you click on the link and purchase the item, I will receive an affiliate commission. This is however at no extra cost to you. You&#x2019;d just be helping me out</em></p>]]></content:encoded></item><item><title><![CDATA[Playa Del Carmen Wrap-Up: One Month as Digital Nomads in Mexican Paradise]]></title><description><![CDATA[<figure class="kg-card kg-embed-card"><iframe src="https://www.youtube.com/embed/UQNG7JyCWIU" width="853" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></figure><p><br>Mexico always fascinated me as a country for living the remote work lifestyle. The food was a big factor but also, the inexpensive cost of living and warm climate indicated to me that Mexico had a lot of potential.</p><p>However, when I began my research on where to go in</p>]]></description><link>https://www.christhefreelancer.com/playa-del-carmen-for-digital-nomads/</link><guid isPermaLink="false">60ab4ab6fcfa4a6b501829f8</guid><category><![CDATA[Lifestyle]]></category><category><![CDATA[Destination Reports]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Tue, 21 Nov 2017 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/playa-del-carmen-for-digital-nomads.jpg" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-embed-card"><iframe src="https://www.youtube.com/embed/UQNG7JyCWIU" width="853" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></figure><img src="https://www.christhefreelancer.com/content/images/2021/05/playa-del-carmen-for-digital-nomads.jpg" alt="Playa Del Carmen Wrap-Up: One Month as Digital Nomads in Mexican Paradise"><p><br>Mexico always fascinated me as a country for living the remote work lifestyle. The food was a big factor but also, the inexpensive cost of living and warm climate indicated to me that Mexico had a lot of potential.</p><p>However, when I began my research on where to go in Mexico, there was only location that stood out and that was Playa del Carmen.</p><p>For a country with so much to offer for digital nomads, I&apos;m still in awe at the lack of digital nomad scene here. Playa del Carmen was the only location that I found to have a coworking space that catered to digital nomads and with plenty to do around the area, I decided to book a month in between <a href="https://christhefreelancer.com/medellin-for-digital-nomads/">Medellin</a> and <a href="https://www.youtube.com/watch?v=4IWKvXtl6YU" rel="noopener">New York City</a>.</p><p>The following article is my full evaluation Playa del Carmen as a digital nomad destination after one month of living here.</p><h2 id="cafes-and-coworking">Cafes and Coworking</h2><p>The quantity of coworking spaces and cafes suitable for remote work in Playa del Carmen might be limited but the quality is high enough to make up for it.</p><p>Before arriving, I already had my ideal coworking space picked out but here are a list of some other spaces for your consideration.</p><h3 id="nest-coworking-space"><a href="http://www.coworkingnest.com.mx/" rel="noopener">Nest Coworking Space</a></h3><p><em>$250 USD per month | $75 USD per week | $15 USD per day</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/nest-coworking-space-playa-del-carmen.jpg" class="kg-image" alt="Playa Del Carmen Wrap-Up: One Month as Digital Nomads in Mexican Paradise" loading="lazy" width="1200" height="676" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/nest-coworking-space-playa-del-carmen.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/nest-coworking-space-playa-del-carmen.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/nest-coworking-space-playa-del-carmen.jpg 1200w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="http://www.coworkingnest.com.mx/" rel="noopener">Nest Coworking Space</a> was a space I&apos;d discovered months ago when fellow digital nomad, <a href="https://www.instagram.com/tomborvan/" rel="noopener">Tom Borvan</a> tagged himself at the space on Instagram.</p><p>It seemed to be a space that catered to digital nomads and on arriving at Nest, I was pleasantly surprised. The space has a very convenient location on 10th Avenue and I was able to meet a few other nomads during my time here.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td rowspan="2">&#xA0;NEST 2</td><td>&#xA0; 2.87 Mbps</td><td>&#xA0; 2.56 Mbps</td><td>&#xA0; 103 ms</td><td>&#xA0;9:05am</td></tr><tr><td>&#xA0; 6.20 Mbps</td><td>&#xA0; 3.38 Mbps</td><td>&#xA0; 93 ms</td><td>&#xA0;1:49pm</td></tr></tbody></table><!--kg-card-end: html--><h3 id="cowork-in"><a href="http://www.coworkinplaya.com/" rel="noopener">Cowork In</a></h3><p><em>$235 USD per month | $65 USD per week | $13 USD per day (converted from pesos at current exchange rate)</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/cowork-in-playa-del-carmen.jpg" class="kg-image" alt="Playa Del Carmen Wrap-Up: One Month as Digital Nomads in Mexican Paradise" loading="lazy" width="1200" height="676" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/cowork-in-playa-del-carmen.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/cowork-in-playa-del-carmen.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/cowork-in-playa-del-carmen.jpg 1200w" sizes="(min-width: 1200px) 1200px"></figure><p><br><a href="http://www.coworkinplaya.com/" rel="noopener">Cowork In</a> was the second space I checked out in Playa del Carmen and the best in terms of internet speed.</p><p>Situated on the top-end of Playacar between Centro and the airport, <a href="http://www.coworkinplaya.com/" rel="noopener">Cowork In</a> is probably your best option if you&apos;re interested in the fastest internet speeds. Otherwise, if you&apos;re staying in Centro, Nest is much closer.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>Cowork-In</td><td>&#xA0;76.74 Mbps</td><td>&#xA0; 48.89 Mbps</td><td>&#xA0; 7 ms</td><td>&#xA0;10:53am</td></tr></tbody></table><!--kg-card-end: html--><h3 id="work-zone"><a href="http://www.oficinasplaya.com/" rel="noopener">Work Zone</a></h3><p><em>$130 USD per month | $52 USD per week | $10 USD per day (converted from pesos at current exchange rate)</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/work-zone-coworking-playa-del-carmen.jpg" class="kg-image" alt="Playa Del Carmen Wrap-Up: One Month as Digital Nomads in Mexican Paradise" loading="lazy" width="1290" height="726" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/work-zone-coworking-playa-del-carmen.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/work-zone-coworking-playa-del-carmen.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/work-zone-coworking-playa-del-carmen.jpg 1290w" sizes="(min-width: 1200px) 1200px"></figure><p><br>If you&apos;re willing to trek over the highway to the area outside of Centro, you have <a href="http://www.oficinasplaya.com/" rel="noopener">Work Zone coworking space</a>. It&apos;s the most affordable coworking space out of the three and with speeds faster than Nest, it might be worth the hike.</p><p>The staff there were super friendly and with lots of affordable restaurants around, I didn&apos;t mind the area but still too far for me to travel while staying in Centro.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;Workzone</td><td>&#xA0;18.80 Mbps</td><td>&#xA0;4.06 Mbps</td><td>&#xA0; 24 ms</td><td>&#xA0;11:13 am</td></tr></tbody></table><!--kg-card-end: html--><h3 id="bendito-cafe"><a href="http://benditocafe.com.mx/" rel="noopener">Bendito (Cafe)</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/bendito-cafe-playa-del-carmen-1024x577.jpg" class="kg-image" alt="Playa Del Carmen Wrap-Up: One Month as Digital Nomads in Mexican Paradise" loading="lazy" width="1024" height="577" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/bendito-cafe-playa-del-carmen-1024x577.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/bendito-cafe-playa-del-carmen-1024x577.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/bendito-cafe-playa-del-carmen-1024x577.jpg 1024w"></figure><p><a href="http://benditocafe.com.mx/" rel="noopener">Bendito</a> was a tip I got from <a href="https://www.tripadvisor.com/ShowUserReviews-g150812-d11702233-r462077035-Bendito_Cafe-Playa_del_Carmen_Yucatan_Peninsula.html#REVIEWS" rel="noopener">this Tripadvisor review</a> which stated, &apos;<em>Best work spot in Playa, perfect for digital nomads&apos;</em>.</p><p>It&apos;s a few streets off 5th Avenue and it&apos;s one of the less touristic coffee options in Playa.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;BENDITO CAFE</td><td>&#xA0;9.47 Mbps</td><td>&#xA0;0.17 Mbps</td><td>&#xA0; 207 ms</td><td>&#xA0;3:17 pm</td></tr></tbody></table><!--kg-card-end: html--><h3 id="choux-choux-cafe"><a href="http://chouxchouxcafe.com/" rel="noopener">Choux Choux (Cafe)</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/choux-choux-playa-del-carmen-1024x577.jpg" class="kg-image" alt="Playa Del Carmen Wrap-Up: One Month as Digital Nomads in Mexican Paradise" loading="lazy" width="1024" height="577" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/choux-choux-playa-del-carmen-1024x577.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/choux-choux-playa-del-carmen-1024x577.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/choux-choux-playa-del-carmen-1024x577.jpg 1024w"></figure><p><a href="http://chouchoucafe.com/mx/en/" rel="noopener">Choux Choux</a> is probably the most popular digital nomad cafe in Playa del Carmen. At Nest alone, I&apos;d met two nomads who recommended it to me.</p><p>For me personally, it&apos;s the kind of place I&apos;d come for just a coffee or some breakfast as it can get quite busy. Also, the ergonomics aren&apos;t perfect and the power points are scarce.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;cafe-chou-chou</td><td>&#xA0; 42.56 Mbps</td><td>&#xA0;1.97 Mbps</td><td>&#xA0; 8 ms</td><td>&#xA0;9:24 am</td></tr></tbody></table><!--kg-card-end: html--><h2 id="cost-of-living">Cost of Living</h2><p>Playa del Carmen is a city with a huge disparity of prices. Dining on 5th Avenue (the main tourist street) might cost you $20 USD+ whereas a taco vendor just a few streets away will be serving tacos for about $0.60 USD a piece!</p><p>Whilst Playa del Carmen is in Mexico, the prices here can be very <em>American. </em>In Playa, there&apos;s seems to be two tiers, the local price and the foreign price, but luckily it&apos;s quite easy to stay away from the tourist traps if you make sure to hang out outside of 5th Avenue.</p><h3 id="accommodation">Accommodation</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/playa-del-carmen-apartment-photo-e1510346144173.jpg" class="kg-image" alt="Playa Del Carmen Wrap-Up: One Month as Digital Nomads in Mexican Paradise" loading="lazy" width="1191" height="747" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/playa-del-carmen-apartment-photo-e1510346144173.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/playa-del-carmen-apartment-photo-e1510346144173.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/playa-del-carmen-apartment-photo-e1510346144173.jpg 1191w"></figure><p>For our month in Playa del Carmen, we booked through our good friend, <a href="http://www.airbnb.com/c/cdodd18?s=8" rel="noopener">AirBnB</a> and paid $962 AUD (~$736 USD) for our 28 night stay.</p><p>There&apos;s always someone who calls me out when I do these destination reports. Yes! We pay extra to use <a href="http://www.airbnb.com/c/cdodd18?s=8" rel="noopener">AirBnB</a> but as we only have a short amount of time to spend in each location, we value being able to move in quickly and using <a href="http://www.airbnb.com/c/cdodd18?s=8" rel="noopener">AirBnB</a> removes pretty much all the headaches of renting in a foreign country.</p><p>Of course, if you can afford the inconvenience, I&#x2019;m sure the price of renting an apartment like ours would be remarkably lower.</p><h3 id="food-drink">Food &amp; Drink</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Food-in-Playa-del-Carmen-1024x576.jpg" class="kg-image" alt="Playa Del Carmen Wrap-Up: One Month as Digital Nomads in Mexican Paradise" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Food-in-Playa-del-Carmen-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Food-in-Playa-del-Carmen-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Food-in-Playa-del-Carmen-1024x576.jpg 1024w"></figure><p>Let me say first up that the food in Playa del Carmen is simply awesome!</p><p>Denise and I value good local food and our month in Playa was the best in terms of food since leaving Thailand. Mexican food is so tasty!</p><p>As for the cost, eating local is often quite cheap whereas eating international can cost you an arm and a leg!</p><p>Starting at the lower range, you can find street vendors selling tacos for as little as 11 pesos (~$0.60 USD), tortas for 22 pesos (~$1.20 USD) or empanadas for 10 pesos (~$0.50).</p><p>At a casual sit-down restaurant, I&apos;d expect to pay somewhere between 50 and 100 pesos (~$2 to $5) for a torta (Mexican-style sandwhich) or plate of tacos. And, at a popular Mexican restaurant, maybe 100 to 200 pesos (~$5 to $10 USD).</p><p>For international food, you can spend anywhere from 100 to 500 pesos (~$5 to $25 USD) depending on how touristic the restaurant is. However, the big surprise was Chinese food which cost us less than $5 USD per plate. Amazing value if you ask me!</p><p>Here are a few examples of meals I had in Playa with their prices:</p><ul><li>A massive fajita plate at my favourite, <em>El Fogon = </em>134 pesos (~$7 USD) + tip</li><li>A chicken sandwich at <em>Tortas Santa fe </em>= 48 pesos (~$2.50 USD) + tip</li><li>Fancy brunch at <em>Plank </em>= 450 pesos (~$23.50 USD) + tip</li><li>A large deep-dish pizza at <em>Don Chendon = </em>170 pesos (~$9 USD) + tip</li><li>Big plate of Chinese food at <em>Hui Hang = </em>60 pesos (~$3.10 USD)</li></ul><h3 id="groceries">Groceries</h3><p>I always struggle to get the sense of how expensive grocery prices are in each location I travel to. So, I try to take a sample in each location in order to compare them side-by-side.</p><p>Here is a sample I took from <em>Mega</em> on 30 Avenida:</p><!--kg-card-begin: html--><table><tbody><tr><td style="text-align: center;" colspan="2"><strong>Fruits</strong></td><td style="text-align: center;" colspan="2"><strong>Vegetables</strong></td></tr><tr><td>&#xA0;Apples</td><td>&#xA0;$3.12 USD/kg</td><td>&#xA0;Onions</td><td>$2.08 USD/kg</td></tr><tr><td>&#xA0;Bananas</td><td>&#xA0;$0.62 USD/kg</td><td>&#xA0;Tomatoes</td><td>$1.03 USD/kg</td></tr><tr><td style="text-align: center;" colspan="2"><strong>Meats</strong></td><td>&#xA0;Potatoes</td><td>$1.70 USD/kg</td></tr><tr><td>&#xA0;Chicken Breast</td><td>&#xA0;$4.96 USD/kg</td><td>&#xA0;Avocados</td><td>$3.39 USD/kg</td></tr><tr><td>&#xA0;Beef Rump</td><td>&#xA0;$8.77 USD/kg</td><td>&#xA0;Mushrooms</td><td>$3.45 USD/kg</td></tr><tr><td style="text-align: center;" colspan="4"><strong>Other</strong></td></tr><tr><td>&#xA0;Eggs</td><td>12 for $1.12 USD</td><td>&#xA0;Fresh Milk (1L)</td><td>$1.08 USD</td></tr></tbody></table><!--kg-card-end: html--><p>At first, the prices at our supermarket of choice (<em>Mega) </em>seemed inexpensive but if I compare the above sample <a href="https://christhefreelancer.com/belgrade-for-digital-nomads/">with Belgrade</a> and <a href="https://christhefreelancer.com/las-palmas-for-digital-nomads/">even Las Palmas</a>, it appears to be a little on the expensive side.</p><p>Obviously, the more &apos;<em>Mexican</em>&apos; the item is, the cheaper it will likely cost but in general, prices were comparable to back in Australia which indicates to us that locals mustn&apos;t be shopping at these big supermarkets. Otherwise, how could they be selling their food so cheap, right?</p><h3 id="transport">Transport</h3><p>If you stay in Centro, getting around in Playa is generally quite easy.</p><p>For those shorter distances to the grocery store, to the beach and to Nest, you can easily walk between them but for longer distances - maybe to another side of town or to nearby Tulum or Cancun - there are taxis, collectivos and ADO buses.</p><p>Taxis are everywhere in Playa Centro and cost about 30 to 50 pesos (~$1.50 to $3 USD) to get around the central area. Usually, they are un-metered so be sure to ask up-front what the price is.</p><p>For travelling between Playa and nearby cities Tulum and Cancun, you can either take the ADO bus, the Playa Express Bus (Cancun only) or catch a collectivo.</p><p>We took the ADO bus to Tulum - which is a large comfort bus leaving from two different stations in Playa - &#xA0;and it cost us 75 pesos per person (~$4 USD). On the way back from Tulum, we took a collectivo - a small van that travels up and down, carrying locals - for 45 pesos (~$2.35 USD). I&apos;d recommend collectivos over the ADO bus as it&apos;s definitely the faster, cheaper and more authentic option.</p><p>Finally, for those of you who like to cycle, there&apos;s a bike path covering the main part of 10th avenue (parallel to 5th Avenue) and overall, Playa is quite a bike-friendly city.</p><h3 id="coffee-and-beer">Coffee and Beer</h3><p>Playa del Carmen is one of those places where a coffee can cost you as much as a local meal and a beer, around the same as a soft-drink (soda).</p><p>For this reason, I didn&apos;t drink too much coffee during this trip but I did indulge in a few beers during dinner.</p><p>For beer, you&apos;re looking at around 15 to 20 pesos (~$1 USD) to buy at a convenience store, 30 to 50 pesos (~$1.50 to $2.60 USD) at regular restaurant and around 50 pesos (~$2.60 USD) at a bar or party.</p><p>For coffee, you&apos;ll spend anywhere from 25 to 50 pesos (~$1.30 to $2.60 USD) for a cappuccino, depending on how touristic the coffee shop is.</p><h3 id="phone-plans">Phone Plans</h3><p>Denise and I usually like to pick up our sim cards at the airport and this time, we were very glad we did, as we didn&apos;t find many phone shops once we go to Centro.</p><p>At the Cancun airport, there were only two options, 600mb for 150 pesos (~$7.80 USD) or 1gb for 200 pesos (~$10.50 USD), delivered through AT&amp;T. We both took the 1gb option and I topped-up another 600mb towards the end of the trip for the same price.</p><h2 id="lifestyle-things-to-do">Lifestyle &amp; Things to Do</h2><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/Things-to-do-in-playa-del-carmen-1024x576.jpg" class="kg-image" alt="Playa Del Carmen Wrap-Up: One Month as Digital Nomads in Mexican Paradise" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Things-to-do-in-playa-del-carmen-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Things-to-do-in-playa-del-carmen-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Things-to-do-in-playa-del-carmen-1024x576.jpg 1024w"><figcaption>From top-left to bottom-right: Cycling in Tulum, Diving in Playa, Swimming in Cenote Nicte-Ha and Enjoying the Sunset at the Tulum Ruins</figcaption></figure><p>In Playa del Carmen, it&apos;s hard to run out of things to do. Whether it&apos;s diving in the ocean or at one of the 130 cenotes in the Riveria Maya, checking out the Mayan ruins or hanging out at a beach bar in Tulum, you&apos;ll have more than enough to keep you occupied on the weekends.</p><p>As for daily life, I thoroughly enjoyed being walking distance from the grocery store, the beach and my coworking space, Nest. We&apos;d eat out on a regular basis, grab a quick meal at one of the many local food shops or stalls or take a quick trip to <em>Mega </em>to grab groceries.</p><p>Some of things that Denise and I got up to in Playa and the surrounding area were:</p><ul><li><a href="https://www.youtube.com/watch?v=CM7Pdf2kEY4" rel="noopener">Enjoying some of the lessor known street vendors and local restaurants on a guided food tour</a></li><li><a href="https://www.youtube.com/watch?v=YQG26cT6aps" rel="noopener">Exploring two amazing cenotes and the sea-side Tulum ruins at sunset</a></li><li><a href="https://www.youtube.com/watch?v=_hXYBa8WfoE" rel="noopener">Enjoying a unique culinary experience at the Frida Kahlo Restaurant</a>, and</li><li><a href="https://www.youtube.com/watch?v=p6vyb8uwQWg" rel="noopener">Taking our first ever scuba dive of the coast of Playa Centro</a></li></ul><p>But in general, the best thing about living in Playa is the weather and proximately to the beach.</p><p>Coming from South East Queensland in Australia, Denise and I are somewhat fussy when it comes to beaches but the coastline here on the Yucatan peninsula is simply stunning. The water is a beautiful Caribbean blue and the sunsets are simply majestic. We definitely have to come back!</p><h2 id="final-thoughts">Final Thoughts</h2><p>Playa del Carmen was an awesome introduction to Mexico for Denise and I.</p><p>I must admit we had some high expectations - especially about the food and the beaches - but Playa definitely lived up to the hype!</p><p>I haven&apos;t been anywhere else in Mexico but to me, this country seems to have <em>so much</em> potential for the digital nomad lifestyle. I mean, the cost of living is inexpensive, the food is amazing, the locals are nice and the weather is great. At the very least, Playa del Carmen deserves way more nomads.</p><p>Especially for Americans and Canadians, I don&apos;t think many of you realise just what a beautiful country you have sitting below you! Perhaps it&apos;s the safety concerns - &#xA0;which I also had before arriving - but at least in Playa del Carmen, I felt very safe.</p><p>In the digital nomad world, Thailand still reigns supreme but I think Mexico has just as much potential.</p><p>As for Playa del Carmen specifically, I can&apos;t really fault it. Apart from being a little too touristic, there&apos;s no reason why nomads shouldn&apos;t flock here. And, with Nest planning to expand in the next few years, I think we&apos;ll see Playa del Carmen start to gain further recognition as a digital nomad hotspot in Latin America.</p><p>Until next time,</p><p>Chris</p>]]></content:encoded></item><item><title><![CDATA[The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)]]></title><description><![CDATA[Discover how real digital nomads are making money online and funding a life of travel with this list of digital nomad jobs.]]></description><link>https://www.christhefreelancer.com/digital-nomad-jobs/</link><guid isPermaLink="false">60ab48d0fcfa4a6b501829ec</guid><category><![CDATA[Work]]></category><category><![CDATA[Remote Work]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Sat, 18 Nov 2017 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/digital-nomad-job-ideas.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.christhefreelancer.com/content/images/2021/05/digital-nomad-job-ideas.png" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)"><p>In December last year, I created a post on <a href="https://christhefreelancer.com/digital-nomad-careers/">the 8 Most Common Digital Nomad Careers</a> in which I went over the most common Digital Nomad <em>Careers </em>that I&apos;d discovered across my journey.</p><p>While I do think it&apos;s important to build a <em>career</em> while travelling, I know that a lot of you are looking to just make at least some money online so that you can get started and so, I&apos;ve decided to create a new post in which I&apos;ll do my best to cover every digital nomad job that I&apos;ve ever heard of someone making money from.</p><p>But first, let&apos;s clarify what I mean by the word <em>job.</em></p><p>My personal definition:</p><blockquote><em>A job</em> is simply any situation where you trade your skill/expertise and/or your time for money with a client or employer.</blockquote><p>I might cover online business ideas in a future post but for now, I suggest to anyone starting out to choose a job that you can do remotely. If you don&apos;t know what that job might be just yet, keep reading for a definitive list on each job I&apos;ve come across.</p><h2 id="web-and-app-development">Web and App Development</h2><p>Just like I mentioned in <a href="https://christhefreelancer.com/digital-nomad-careers/">my post on digital nomad careers</a>, I still believe that being a developer is the most ideal digital nomad job.</p><h3 id="1-wordpress-developer">1. Wordpress Developer</h3><p>Of course, the most obvious digital nomad job is to become some kind of web developer. It&apos;s what I <a href="https://christhefreelancer.com/how-to-code-book" rel="noopener">personally chose when starting out</a> and with almost every business needing a website these days, it&apos;s one of the most in-demand skills you could learn.</p><p>In <a href="https://christhefreelancer.com/digital-nomad-careers">my digital nomad careers post</a>, I interviewed some pretty high-level developers but those of you starting out, it should be much easier to focus on building basic websites like Wordpress combined with a free or paid theme like <a href="http://www.elegantthemes.com/affiliates/idevaffiliate.php?id=39765&amp;tid=resources-page" rel="noopener">Divi</a> (recommended).</p><p>Given that <a href="https://managewp.com/statistics-about-wordpress-usage" rel="noopener">Wordpress powers approximately 27% of the internet</a> (as of 2016), it&apos;s the obvious framework to build simple websites that are both highly editable by developers and easy to use for the client.</p><p>Out of all the web work I&apos;ve done for small business clients, working with Wordpress has been the platform of choice and you can find a ton of Wordpress jobs on freelance platforms like <a href="https://www.upwork.com/" rel="noopener">UpWork</a>.</p><h4 id="phil-manning-traveldevelopercom">Phil Manning, <a href="https://www.traveldeveloper.com/" rel="noopener">TravelDeveloper.com</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/phil-manning-wordpress-developer-300x300.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>As a Travel Developer, I stick with Wordpress for developing websites to clients because of it&#x2019;s ease of use, supportive community, and flexibility. &#xA0;Also, most of my clients want a product that they can learn and not need to contact a developer every time they want to make a simple change (i.e. change of hours of operation) . &#xA0;The speed with which Wordpress websites can be set up enables me to finish projects in a short amount of time and hand-off the project to the business owners and stakeholders. &#xA0;This allows me to never feel stuck in one place for a project - and rather be in a more supportive role as I travel the world.</p><h3 id="2-shopify-developer">2. Shopify Developer</h3><p><a href="https://www.shopify.com/?ref=chris-the-freelancer" rel="noopener">Shopify</a> is an eCommerce platform that powers 500,000 businesses&apos; online stores and as a <a href="https://www.shopify.com/?ref=chris-the-freelancer" rel="noopener">Shopify</a> developer, you can tap into the ever increasing amount of small business entrepreneurs who are using the platform to create their own online freedom income.</p><p>Specialising in <a href="https://www.shopify.com/?ref=chris-the-freelancer" rel="noopener">Shopify</a> is a good alternative to Wordpress, especially if you mix with other nomads who are doing eCommerce as you can help them to build their stores and optimise for sales.</p><h4 id="dustin-delatore-whosdustincom">Dustin Delatore, <a href="https://whosdustin.com/" rel="noopener">whosdustin.com</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/Dustin-Delatore-shopify-developer-300x300.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>I became a Shopify developer after I started traveling, as a gap year from my developer career back in America. I&apos;ve always been passionate about Shopify&apos;s platform and how easy it was to work work with. While abroad, I met a lot of people who ran commerce businesses. Everything from socially conscious brands like <a href="https://feelgoodbali.com" rel="noopener">Feel Good Bali</a> to the dropshippers of Chiang Mai.</p><p>Thanks to Shopify&apos;s brand reach, <a href="https://www.shopify.com/press/releases/shopify-announces-fourth-quarter-and-full-year-2016-financial-results" rel="noopener">serving over 375,000 merchants</a>, I&apos;ve been able network globally as a freelancer. In addition, I&apos;ve had the opportunity to build a theme specifically for dropshipping sites (theme coming later this fall).</p><p><strong>2024 Update</strong></p><p>It&apos;s interesting to see that I covered Shopify Development here on my blog 2 years before I became a Shopify developer myself! In fact, I&apos;ve since created a course on learning Shopify Frontend Web Development (which I&apos;ll link below for you to check out)</p><h3 id="3-mobile-app-developer">3. Mobile App Developer</h3><p>Despite the fact that web apps continue to become more and more powerful, there is a still a strong need for app developers who create native apps for iPhone and Android.</p><p>With <a href="https://www.idc.com/promo/smartphone-market-share/os" rel="noopener">Google and Apple controlling over 99% of the smart phone software market</a>, your choice of specialisation is either to develop for Android (Java-based programming), IOS (Swift-based programming) or for both (using frameworks like React Native, for example).</p><p>When I started out as a developer, I choose to go down the web development path, as I felt there were more options in this area but being able to create software is a valuable skill if you&apos;re dedicated to becoming a programmer.</p><h4 id="mirko-kiefer-blackbeltlabscom">Mirko Kiefer, <a href="https://blackbeltlabs.com/" rel="noopener">blackbeltlabs.com</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/mirko-kiefer-software-developer-300x300.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>Getting into software is one of the best things you can do to achieve location independence. For the last two years I have been traveling full-time while building a distributed team of developers and designers that help startups and corporates build apps and APIs. With Blackbelt Labs being setup location independent from the start we were able to attract talent we could not reach by being stuck in a single location.</p><h3 id="how-to-learn-web-and-app-development">How to Learn Web and App Development</h3><p>Their are numerous resources online for learning to code including:</p><ul><li><a href="http://treehouse.7eer.net/c/267872/228915/3944" rel="noopener">Team Treehouse</a></li><li><a href="http://www.codecademy.com/" rel="noopener">Codecademy</a></li><li><a href="https://www.codeschool.com/" rel="noopener">Code School</a></li><li><a href="https://www.freecodecamp.com/" rel="noopener">Free Code Camp</a></li><li><a href="http://www.lynda.com/" rel="noopener">Lynda.com</a></li><li><a href="http://click.linksynergy.com/fs-bin/click?id=vyjYfn16xXg&amp;offerid=323058.81&amp;type=3&amp;subid=0" rel="noopener">Udemy</a></li><li><a href="http://www.skillshare.com/r/profile/Christopher-Dodd/3311891" rel="noopener">Skillshare</a></li></ul><p><strong>For Wordpress development specifically</strong>, I learned how to build my own theme with the Lynda course, <em><a href="https://www.lynda.com/WordPress-tutorials/WordPress-Building-Themes-from-Scratch-Using-Underscores/491704-2.html" rel="noopener">WordPress: Building Themes from Scratch Using Underscores</a></em>. While I wouldn&apos;t necessarily recommend building themes from scratch with Underscores, it was a good insight in to the Wordpress templating system and was the basis for my future development in Wordpress.</p><p>What I would recommend is using a premium theme like <a href="http://www.elegantthemes.com/affiliates/idevaffiliate.php?id=39765&amp;tid=resources-page" rel="noopener">Divi</a> to get up and running efficiently whilst also being able to customise exactly to the client&apos;s (or your own) needs. This is actually the subject of <a href="https://skl.sh/2ruDGmX" rel="noopener">my second Skillshare.com class which you can access with a free trial here</a>.</p><p><strong>For learning Shopify development (my speciality since 2019)</strong>, check out my own website <a href="https://www.shopifythemedeveloper.com/">ShopifyThemeDeveloper.com</a>, a one-stop shop for learning everything about Frontend Shopify Development.</p><p><strong>For Mobile App development</strong>, Facebook has developed a framework for creating apps for both platforms using Javascript called <em>React Native. </em>A few really good courses that I&apos;ve taken on React Native are from <a href="https://click.linksynergy.com/deeplink?id=vyjYfn16xXg&amp;mid=39197&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fuser%2Fsgslo%2F" rel="noopener">Stephen Grider on Udemy</a>:</p><ul><li><a href="https://click.linksynergy.com/link?id=vyjYfn16xXg&amp;offerid=323058.959700&amp;type=2&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fthe-complete-react-native-and-redux-course%2F" rel="noopener">The Complete React Native and Redux Course</a></li><li><a href="https://click.linksynergy.com/link?id=vyjYfn16xXg&amp;offerid=323058.1172996&amp;type=2&amp;murl=https%3A%2F%2Fwww.udemy.com%2Freact-native-advanced%2F" rel="noopener">React Native: Advanced Concepts</a></li></ul><p>Otherwise, popular <a href="http://click.linksynergy.com/fs-bin/click?id=vyjYfn16xXg&amp;offerid=323058.81&amp;type=3&amp;subid=0" rel="noopener">Udemy courses</a> include:</p><ul><li><a href="https://click.linksynergy.com/link?id=vyjYfn16xXg&amp;offerid=323058.951618&amp;type=2&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcomplete-android-n-developer-course%2F" rel="noopener">The Complete Android N Developer Course</a> by <a href="https://click.linksynergy.com/deeplink?id=vyjYfn16xXg&amp;mid=39197&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fuser%2Frobpercival%2F" rel="noopener">Rob Percival</a></li><li><a href="https://click.linksynergy.com/link?id=vyjYfn16xXg&amp;offerid=323058.895786&amp;type=2&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcomplete-ios-10-developer-course%2F" rel="noopener">The Complete iOS 10 &amp; Swift 3 Developer Course</a>, also by <a href="https://click.linksynergy.com/deeplink?id=vyjYfn16xXg&amp;mid=39197&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fuser%2Frobpercival%2F" rel="noopener">Rob Percival</a></li></ul><p><strong>Finally, for Web Development,</strong> I&apos;ve put together <a href="http://www.skillshare.com/r/profile/Christopher-Dodd/3311891" rel="noopener">a selection of classes for you to explore on my Skillshare.com page here.</a> Remember: all of my Skillshare.com classes can be accessed for<em> FREE</em> for a whole two months for new members, so <a href="http://www.skillshare.com/r/profile/Christopher-Dodd/3311891" rel="noopener">check it out</a>!</p><hr><h2 id="sales-and-marketing">Sales and Marketing</h2><p>The driving force of any business is sales and marketing and with audiences moving online, it&apos;s creating more opportunities for remote work.</p><p>If you know how to drive traffic, leads and customers to a business, you&apos;ll always be in demand.</p><h3 id="4-copywriter">4. Copywriter</h3><p>Copywriting is a great nomad job to get started in if you&apos;re a native English speaker as it&apos;s an easily accessible skill to learn and having a command of the English language will put you ahead of a lot the low paid work from developing nations.</p><p>What is copywriting? &#x2013; It&#x2019;s basically writing with the purpose of persuasion. While a content writer will write blog posts, copywriters will write sales pages. Both are similar but copywriting is much more lucrative as your income is only limited to your ability to write persuasively.</p><p>I personally know a bunch of nomad copywriters and it&apos;s something they say they&apos;ve made a good amount of money from.</p><h4 id="julian-goldie-kingpassivecom">Julian Goldie, <a href="http://kingpassive.com" rel="noopener">KingPassive.com</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/julian-goldie-copywriter-300x300.png" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>A couple of years ago I ditched the corporate office life to work online &amp; travel the world. Nowadays, I&apos;m a freelance copywriter on UpWork, sell info products on Fiverr and run a blog called King Passive - all whilst travelling across South America.</p><p>Copywriting is a great skill to have because it gives you the freedom to work online, pick your hours and of course, earn some decent money along the way. Plus every single business needs copy - so you&apos;ll always be in demand.</p><h3 id="5-content-marketer">5. Content Marketer</h3><p><a href="http://contentmarketinginstitute.com/what-is-content-marketing/" rel="noopener">As the Content Marketing Institute</a> describes it, &apos;<em>Content marketing</em> is a strategic <em>marketing</em> approach focused on creating and distributing valuable, relevant, and consistent <em>content</em> to attract and retain a clearly defined audience&apos;. Put simply, it&apos;s a practice involving the creation and distribution of content to market your business.</p><p>My friend and fellow blogger <a href="https://tomaslau.com/" rel="noopener">Tomas Laurinavicius</a> puts it like this, &apos;<em>blogging is more like documenting and sharing a personal point of view whereas content marketing has a clear goal to raise awareness, convert, sell, etc</em>&apos;. Content creation might be part of your role as a content marketer but as a marketer, you start with an objective and work backwards.</p><h4 id="ivan-kreimer-contentfiestacom">Ivan Kreimer, <a href="http://contentfiesta.com/" rel="noopener">ContentFiesta.com</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/ivan-kreimer-content-marketer-300x300.png" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>I love working as a content marketer because it has given me the freedom to travel to 15 countries in the past 8 months. None of my clients have had any quarrels about my traveling; in fact, after I told one of them I was in Ubud, he started looking on Google Street View and became amazed at the place.</p><p>The time difference can be tough at first, but if you make it clear to the client that you are going to work with some delay while providing the same value than before, they won&apos;t care. Still, working remotely as a content marketing has been one of the best things I&apos;ve ever done.</p><h3 id="6-conversion-rate-optimiser">6. Conversion Rate Optimiser</h3><p>Further down the marketing funnel sits the discipline of Conversion Rate Optimisation. Commonly referred to as CRO, it&apos;s a field in marketing and data analytics that involves increasing the percentage of visitors to a website that convert into customers, or more generally, take any desired action on a webpage.</p><p>I&apos;ve done some CRO in a previous position and from my experience, it involves a sequence of making modifications to pages, setting up tests and analysing data that gets repeated over and over.</p><p>It&apos;s a quite specialised role in marketing but if you&apos;re the kind of marketer who&apos;s more data-driven, this could be a good option for you.</p><h4 id="olga-kostova-blackbeltlabscom">Olga Kostova, <a href="https://l.messenger.com/l.php?u=http%3A%2F%2Fblackbeltlabs.com%2Fanalytics&amp;h=ATPnsX7lhOhWhdAcbke3-2IE6g7jGTk_BmP_ARE1We-pjPiOVWKbFQ4f0-p01HxufTFvcIYh6FfcvAY8hX3qdhgJ7yNSmYfC2rb5rr-kS706i-BtZ5thlFDMTRn0wN-MvaylXfHTIRyCgnSU" rel="nofollow noopener">BlackBeltLabs.com</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/olga-kostova-CRO-300x300.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>Back in 2012 I started as a conversion optimisation specialist. I was actively writing articles and giving talks on this topic. That brought me clients which most of the time did not need me on-site. Thus in 2014 I left my hometown and I am traveling since.</p><p>There were many businesses I helped during my journey, including two the biggest European cruise lines, a 3D printing, innovative fashion, health and real estate startups.</p><h3 id="7-hubspot-specialist">7. Hubspot Specialist</h3><p>HubSpot is a powerful marketing automation tool that many businesses use to develop and manage inbound marketing campaigns.</p><p>Since it&apos;s adoption by over 34,000 businesses, the use of HubSpot has become a marketing specialisation on its own and with businesses spending up to $2,400 USD per month to use it, its a field that can prove quite lucrative.</p><h4 id="kris-de-leon-krisdeleoncom">Kris de Leon, <a href="http://krisdeleon.com" rel="noopener">KrisDeLeon.com</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/kris-de-leon-hubspot-marketer-300x300.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>I&#x2019;ve been location independent since 2015, and I make a full-time income through my consulting work. I help my clients develop, launch and manage inbound marketing campaigns using HubSpot. My work includes lead generation, email marketing and social media. I&#x2019;ve landed consulting projects by positioning myself as a HubSpot expert and working with clients that already use this tool. My work is completely done online, and I&#x2019;ve managed client projects while traveling in Europe, South America and Asia. I&#x2019;ve spent most of my time in Latin America since I can easily work U.S. business hours, and also learn Spanish.</p><h3 id="8-seo-specialist">8. SEO Specialist</h3><p>Search Engine Optimisation (or SEO, for short) is a marketing discipline focused on growing visibility in organic search engine results. In simple terms, SEO specialists help websites appear higher up when you search for something on Google, Bing, Yahoo and any other search engines.</p><p>Specialising in SEO was in fact, the primary discipline <a href="https://www.locationrebel.com/about/" rel="noopener">that allowed Sean Ogle (one of the earliest digital nomad bloggers) to live a location independent lifestyle</a> and to this day, I&apos;ve met a few nomad SEO specialists that are doing well with this particular job.</p><h4 id="jon-parker-enticerycom">Jon Parker, <a href="https://enticery.com/" rel="noopener">Enticery.com</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/jon-parker-SEO-300x300.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>I&apos;ve been doing SEO consulting in some capacity now since 2010. Apart from a couple of longer stops along the way, I&apos;ve been nomadic for the majority of this time; living in the UK, Bali, Thailand and Morocco. Back when it was a struggle to get 1Mb/s download speeds in Bali things could be a little difficult. These days, where the mobile data speeds in developing countries often beat wired connections in some parts of the UK, challenges like this are a thing of the past.</p><p>Although the world of SEO is ever-changing, I still believe it&apos;s one of the best value investments for almost all businesses. That&apos;s why this is an aspect of digital marketing that I continue to believe in and feel passionate about.</p><h3 id="9-performance-ppc-marketer">9. Performance (PPC) Marketer</h3><p>Performance Marketing is a comprehensive term that refers to online marketing in which advertisers and marketing companies are paid when a specific action is completed; such as a sale, lead or click. PPC on the other hand, stands for pay-per-click, a model of internet marketing in which advertisers pay a fee each time one of their ads is clicked.</p><p>Basically, the role of a Performance (PPC) Marketer is to work with online ads. These might be the ones you see at the top of Google, in your Facebook feed or on a website. PPC marketers strategise, create and test these online ads for maximum ROI and if you&apos;re good at it, the career potential is limitless.</p><h4 id="ricardo-kehbel-ricardokehbelcom">Ricardo Kehbel, <a href="http://www.ricardokehbel.com" rel="noopener">RicardoKehbel.com</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/Ricardo-300x300.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>Working in Performance Marketing with the focus on Google AdWords and Facebook Ads is the perfect setup for my location independent lifestyle. After earning experience in agencies and in-house for several years I wanted to combine work with more freedom. So I started with online client acquisition and finally became self-employed.</p><p>My working time now consists of creating performance marketing strategies and campaigns, monitoring and optimising ad performance and keeping my Google AdWords or Facebook Ads clients up to date via Mail, Skype or Asana. In regular online-meetings, we collaborate on strategies for coming projects. This can literally be done from anywhere in the world. At the moment I&apos;m in Venice in Italy and definitely know that I wouldn&apos;t change anything in my work-life-setup.</p><h3 id="10-social-media-marketer">10. Social Media Marketer</h3><p>Social Media Marketing is a form of online marketing that involves creating and sharing content on social media in order to achieve marketing and branding goals.</p><p>Although most of us engage with social media on regular basis, Anna-Lena (below) says you&apos;d be surprised by how many businesses are totally overwhelmed by managing it on a professional level and don&#x2019;t know at all how to handle their profiles.</p><p>With so many different platforms around these days combined with the pressure to compete against so much content, social media marketers can be a valuable asset to businesses who simply can&apos;t manage the time-intensive task of preparing and posting statuses, graphics, photos and other content.</p><h4 id="anna-lena-eckstein-annalenaecksteinde">Anna-Lena Eckstein, <a href="http://www.annalenaeckstein.de" rel="noopener">AnnaLenaEckstein.de</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/anna-lena-cornerstone-social-media-marketer-e1510955349684-300x300.png" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>I knew I was only gonna be happy in life if I could work on my own and from anywhere in the world. Social Media always was more to me than just a tool to stay in contact with friends, so I decided to make it my work too. Now I work with solopreneurs and smaller businesses on their kick-ass social media strategy.</p><p>It&apos;s the perfect job when you want to be location-independent in order to travel the world. Plus, I sincerely believe that my travel-lifestyle enhances my creative process.</p><h3 id="11-virtual-assistant">11. Virtual Assistant</h3><p>&apos;<em>Virtual Assistant</em>&apos; (or VA, for short) is a broad term that generally refers to a freelancer who provides professional administrative, technical, or creative assistance to clients remotely.</p><p>Theoretically, all the previous sales and marketing disciplines just mentioned could be a part of a virtual assistant&apos;s job however, VAs are usually more generalised. You may find a design VA who deals with all creative assistant work, a technical VA who deals with websites and technical marketing aspects or a generalist marketing VA who works across the full stack of marketing disciplines. &#xA0;It really depends.</p><h4 id="tanja-ba-freivogelzone">Tanja Ba, <a href="http://freivogel.zone/" rel="noopener">freivogel.zone</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/tanja-ba-Virtual-Assistant-300x300.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>As an online business expert, I don&#xB4;t need to be where my clients are. Most of my clients have a stationary business and they want to expand into the online world. They can focus on their content while I work on the tech side (website, e-mail marketing, etc). As a VA you can start from scratch and offer your clients what makes them and you happy. And it makes me happy to travel around the world. I am more efficient and productive than ever before because I don&#xB4;t need to stay in one place.</p><h3 id="12-strategic-consultant">12. Strategic Consultant</h3><p>A Strategic Business Consultant works on the high-level aspect of a business. While sales and marketing are usually involved, it&apos;s perhaps more appropriate to say that strategic consultants can work with businesses to solve almost any issue and assist decision making at the senior management level of the organisation.</p><p>I&apos;ve met just one digital nomad who identifies as a strategic consultant and his name is Zack Young.</p><h4 id="zack-young-zackyoungco">Zack Young, <a href="https://www.zackyoung.co/" rel="noopener">ZackYoung.co</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/zack-young-strategic-consultant-150x150.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="150" height="150"></figure><p>Back in 2015, I was spending almost 3 hours a day commuting to and from the office in London. It was such a waste of time, so I knew something had to change. Strategy consulting can be delivered in person but is more commonly being delivered through digital, making it possible for me to provide strategic advisory to companies all over the world. After becoming nomadic, I can now work with companies all over the world and provide real value - as if I was with them onsite. Slack helps make this possible, as people feel like they&#x2019;re together all in one space. The world of work is evolving and the rules are for you to write.</p><h3 id="how-to-learn-sales-and-marketing">How to Learn Sales and Marketing</h3><p>As a part of my role with Health Guardian in 2016, I was taken through some courses from <a href="http://hq.digitalmarketer.com/" rel="noopener">DigitalMarketerHQ</a> that I thought we really valuable. These were:</p><ul><li>Conversion Funnel Mastery</li><li>Optimisation and Testing Mastery</li><li>Paid Traffic Mastery, and</li><li>Analytics and Data Mastery</li></ul><p>All of these are available under <a href="http://a.digitalmarketer.com/aff_c?offer_id=20&amp;aff_id=1480" rel="noopener">the one subscription to Digital Marketer HQ</a>.</p><hr><h2 id="design">Design</h2><p>Design is another popular location independent field of work as designers often work freelance and of course, their entire job can be done with the use of laptop, some design software and perhaps a digital drawing pad.</p><h3 id="13-graphic-designer">13. Graphic Designer</h3><p>For the artists and creative types among you, you may want to consider a career as a location independent Graphic Designer.</p><p>Often times, I meet designers who offer graphics as just a part of their service offerings, as the freelance gigs for graphics can be small and sporadic. However, you&apos;re only limited in this career path by the strength and uniqueness of your designs.</p><h4 id="magdalena-theis-magdalenatheiscom">Magdalena Theis, <a href="http://www.magdalenatheis.com/" rel="noopener">MagdalenaTheis.com</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/maggie-theis-graphic-designer-300x300.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>Working as a Graphic designer is one of the best jobs you can do remotely because the most important thing in order to do my job is also the thing I never have to pay extra luggage for: my creativity. Then I just need my laptop, pen and paper and headphones, so I can build my office everywhere.</p><p>Even though it comes in handy to have good Wifi, there are moments in my creative process where I can work easily without Internet connection, so with some good planning I can work while I am on the road.</p><p>It takes a while to build the remote business in this field, but once your clients trust you and see that you are still always available, your portfolio can start to grow quickly. &#xA0;I can convince my clients to benefit from my lifestyle because I get inspired by designs and cultures from all over the world and never stop getting more and more ideas.</p><h3 id="14-web-designer">14. Web Designer</h3><p>Often confused with the term &apos;<em>Web Developer</em>&apos;, a web designer&apos;s focus is more on the design aspect of a website and should include working knowledge of user experience design and front-end web development.</p><p>Often times, a web designer role includes some web development and many clients expect that web designers actually know how to implement their design. On the other hand, a web designer may simply specialise in the design aspect and pass on the designs to a developer to implement. A common pattern for a lot of small business clients is creating designs in Photoshop and then passing them off to a Wordpress developer to implement.</p><h4 id="sergio-sala-sergiosala">Sergio Sala, <a href="https://sergiosa.la" rel="noopener">Sergiosa.la</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/sergio-sala-web-designer-300x300.jpeg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>I have always been passionate about design and helping others strive for something better, so I was lucky to have self-learnt coding when I was 14 years old. I&apos;ve used this skill the last five years to create my own list of clients, where I create websites for online entrepreneurs and professional bloggers who want to up their game with better branding, more signup leads and more revenue.</p><p>As I only need a laptop and reliable wifi, I can practically be anywhere, so ever since I worked for myself, I have visited and lived in more than 70 cities around the world.</p><h3 id="15-uiux-designer">15. UI/UX Designer</h3><p>While technically they are separate fields, UX and UI design are often grouped together as they both involve a thorough understanding of how the users interact and behave with technology and design.</p><p>UX stands for User Experience and encompasses all aspects of the end-user&apos;s interaction with the company, product or service. UI on the other hand, stands for User Interface and is more concerned with the actual design elements that make up a piece of software or hardware.</p><p>Both UX and UI design is quite a specialised field but it is growing.</p><h4 id="daniel-lauding-daniellaudingse">Daniel Lauding, <a href="http://daniellauding.se/" rel="noopener">DanielLauding.se</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/daniel-lauding-ux-designer-300x300.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>As a traveling UX &amp; UI designer I get to understand the local needs and how the users interact and behave with technology and design. I get more productive by being on the road while working, and it always feels nice to threat yourself with something nice after a good day of working. From a nice dish, great Airbnb or to plan the next destination.</p><h3 id="how-to-learn-design"><strong>How to Learn Design</strong></h3><p>Unfortunately, I don&apos;t have any specific courses to recommend but I&apos;m sure that by searching the biggest education sites online, you&apos;ll be able to find a highly recommended course. These are sites like:</p><ul><li><a href="https://www.lynda.com/">Lynda</a></li><li><a href="http://click.linksynergy.com/fs-bin/click?id=vyjYfn16xXg&amp;offerid=323058.81&amp;type=3&amp;subid=0">Udemy</a></li><li><a href="https://www.skillshare.com/r/profile/Christopher-Dodd/3311891">Skillshare</a></li></ul><hr><h2 id="foreign-language">Foreign Language</h2><p>Working with foreign languages is a great discipline for digital nomads as both concern foreign travel and cultural exchange.</p><h3 id="16-online-language-teacher">16. Online Language Teacher</h3><p>You&apos;ll likely find &apos;Online Language Teacher&apos; on the top of any list of ways to make money living abroad but have you considered offering language training completely remotely?</p><p>I&apos;m met a few people on my nomad journey who have funded their travels this way and even <a href="https://www.youtube.com/watch?v=5jsxvhoYH9U" rel="noopener">interviewed one of them on my YouTube channel</a>.</p><p>To me, it requires a certain personality to succeed with online teaching. If the idea of being in constant conversations with people makes your head spin, it&apos;s probably not for you. Plus, as it is a job based on meetings, you&apos;ll have to be online during certain time zones.</p><p>For North Americans, there&apos;s a platform called <a href="https://t.vipkid.com.cn/" rel="noopener">VIP Kid</a> that accepts almost anyone with a college degree and for Brits, Aussies and Kiwis, I hear the equivalent is <a href="http://global.abc360.com/Teacher/Teacher/apply" rel="noopener">ABC360</a>.</p><h4 id="ryan-champion-mytestherocom">Ryan Champion, <a href="https://www.mytesthero.com/" rel="noopener">MyTestHero.com</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/ryan-champion-english-teacher-300x300.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>I was in China teaching while learning Chinese when I decided that working on the internet could give me more freedom. Initially I was teaching students I had met face-to-face. Now I work with people from all over the globe. I spend my time between Europe and Asia. The nomad scene is interesting because you get to meet a lot of open minded people who are prepared to work hard to create interesting and fruitful lives.</p><h3 id="17-freelance-translator">17. Freelance Translator</h3><p>Translating is not a field I hear about often in the digital nomad world but for a location independent lifestyle, it makes perfect sense.</p><p>If you&apos;re bilingual, you already know how to <em>translate </em>to a certain extent so you&apos;re off to a great start! And as you&apos;ll read below, Marjet was basically able to build a career as translator completely on the road.</p><h4 id="marjet-sorgdrager-bitlymarjetso">Marjet Sorgdrager, <a href="http://bit.ly/MarjetSo" rel="noopener">bit.ly/MarjetSo</a></h4><figure class="kg-card kg-image-card"><img src="https://www.christhefreelancer.com/content/images/2021/06/marjet-sorgdrager-300x300.jpg" class="kg-image" alt="The Ultimate List of Digital Nomad Jobs (23 Ideas With Examples)" loading="lazy" width="300" height="300"></figure><p>We were already traveling for a few months and I needed to get a job online, so I searched on Upwork for what was most requested for by clients. Coding wasn&apos;t something I could do, copywriting was, but there was a lot of competition as well, so I got to translating; I was able to do it because I can speak 2 languages, and there aren&apos;t many people around the world that speak Dutch.</p><p>I learned that advertisements and marketing texts were most requested for and because of my background in copywriting and journalism, I was able to do it. It was all accidental but still the pieces of the puzzle ended up fitting perfectly. I now have the freedom to work from anywhere and I can pick my own clients. Upwork has been a perfect platform for me since it works with reviews for clients as well, so I can check the experiences from other freelancers. I have 4 regular clients with continuous projects, so I don&apos;t have to worry about the next gig anymore.</p><hr><h2 id="other-ideas">Other Ideas</h2><p>The above jobs cover virtually all the positions I&apos;ve seen nomads use to fund their travels but as this is <em>The Ulimate List of Digital Nomad Job Ideas</em>, here are a few others that I&apos;m sure exist but am yet to verify as a <em>&apos;digital nomad job&apos;</em>.</p><h3 id="18-accountant-or-book-keeper">18. Accountant or Book Keeper</h3><p>As a former accountant student and intern, I wouldn&apos;t recommend accounting as a location independent job. Number 1, it&apos;s not something you can get into easily and number 2, the culture around remote work for this particular field is a bit behind. However, after meeting with <a href="https://www.youtube.com/watch?v=bb1oH9k4QJM" rel="noopener">Jeff Maddux from <em>The Lifestyle Accountant</em></a>, I have faith that Accounting will become more of a remote-friendly career in future.</p><p>As an alternative to Accounting, perhaps an easier field to turn into a location independent job is the role of a Book Keeper as this role requires little to no formal certifications.</p><h3 id="19-audio-producer">19. Audio Producer</h3><p>I remember coming across a friend of a friend who&apos;s not necessarily a digital nomad but was able to perform his job as a audio producer remotely.</p><p>If you think about it, sound design, mixing and mastering can all be done with just a computer but obviously, if you had to record a band or musician live, you&apos;d be stuck in that location.</p><h3 id="20-voice-talent">20. Voice Talent</h3><p>This is actually a job that I&apos;ve been paid for on UpWork but I don&apos;t think it requires a big mention.</p><p>A <em>Voice Talent </em>is simply anyone who is able to record a narration on audio and send to the client. All you need is a good audio recording setup and good voice to get started. Unless you truly have a unique voice however, I don&apos;t believe it to be that sustainable.</p><h3 id="21-video-editor">21. Video Editor</h3><p>While video editing is another job that I get paid to do remotely, I feel that it is often highly under-valued. Usually, it is the one who shot the footage that gets to edit it and as a video creator myself, this makes perfect sense. The alternative - being an actual videographer - I would not consider to be 100% location independent as it requires being in a particular location.</p><h3 id="22-article-and-blog-writer">22. Article and Blog Writer</h3><p>While it may sound like an ideal location independent job, very few people I know actually make decent money from writing for blogs and other online publications. Most of the articles you&apos;ll see on big news websites are written by unpaid contributors and for small blogs, writing is often a low-value task that is outsourced to developing nations and content houses.</p><h3 id="23-customer-service-agent">23. Customer Service Agent</h3><p>In actual fact, I do know someone who works as a location independent Customer Service Agent but unfortunately, this role didn&apos;t fit into any other category.</p><p>Customer Service Agents (or Support Agents) may be required to respond to customer queries via email or phone and both can be done remotely given a strong enough internet connection.</p><h2 id="and-the-list-goes-on">And the list goes on...</h2><p>I&apos;ve now found myself scouring online lists for more obscure job ideas and so I think it&apos;s a good time to wrap up.</p><p>While I&apos;m sure this list could be infinitely long, I think the 23 ideas mentioned previously should cover 99% or more of all jobs that digital nomads are funding their location independent lifestyles with.</p><p>As I mentioned, this list does not include the various types of online entrepreneurs who exist in the world of nomads but for that, I might have to prepare another article.</p><p>For now, I hope that this article has given you some ideas about the various ways you can fund your digital nomad lifestyle and if you&apos;re serious about building a location independent career, I&apos;d recommend you check out my previous post, <em><a href="https://christhefreelancer.com/digital-nomad-careers/">The 8 Most Common Digital Nomad Careers</a>.</em></p><p>Until next time,</p><p>Chris</p><hr><p><em>Disclosure: Some of the links in this post are &#x2018;affiliate links.&#x2019; This means if you click on the link and purchase the item, I will receive an affiliate commission. This is however at no extra cost to you. You&#x2019;d just be helping me out</em></p>]]></content:encoded></item><item><title><![CDATA[Medellin Wrap-Up: 10 days in the City of Eternal Spring]]></title><description><![CDATA[In the digital nomad community, there seems just one destination that receives more buzz than any other in South America. That is Medellin, Colombia.]]></description><link>https://www.christhefreelancer.com/medellin-for-digital-nomads/</link><guid isPermaLink="false">60ab4676fcfa4a6b501829d0</guid><category><![CDATA[Lifestyle]]></category><category><![CDATA[Destination Reports]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Thu, 26 Oct 2017 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/medellin-for-digital-nomads.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.christhefreelancer.com/content/images/2021/05/medellin-for-digital-nomads.jpg" alt="Medellin Wrap-Up: 10 days in the City of Eternal Spring"><p>Click the video below to watch our experience in Medellin on camera.</p><figure class="kg-card kg-embed-card"><iframe src="https://www.youtube.com/embed/T9L9B1HAwrw?rel=0&amp;showinfo=0" width="853" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></figure><p>In the digital nomad community, there seems just one destination that receives more buzz than any other in South America. That is Medellin, Colombia.</p><p>Despite the hype and praise, I was almost about to skip this city. It seemed a bit rough around the edges and from a distance, the nomad community seemed a bit of a <em>boys club</em>.</p><p>But, after discovering an inexpensive one-way flight from <a href="https://www.youtube.com/watch?v=_ArcwB41O4o" rel="noopener">Panama City</a>, I decided &apos;why not?&apos; and after 10 days in the city of eternal spring, I&apos;m glad I came down.</p><p>Keep reading to discover why I believe Medellin truly lives up to the hype.</p><h2 id="where-to-stay-in-medellin">Where to Stay in Medellin</h2><p>Before we begin, I need to make an important note.</p><p>Medellin is a large city and I didn&apos;t get to see all of it. The experience I share in this blog post is based around a particular area in the commune of El Poblado, specifically the area around Parque Lleras.</p><p>I decided to stay in this area after a tip from my friend Nick Nerov who recommended the area around Calle 10 (ie. the main tourist street of El Poblado).</p><p>Here you&apos;ll find a bunch of coworking spaces, cafes and international restaurants, all within walking distance, similar to the Nimman area in <a href="https://christhefreelancer.com/one-month-as-a-digital-nomad-in-chiang-mai/">Chiang Mai</a>. It&apos;s also the home of nightlife in Medellin and one of the nicer areas of the city.</p><p>To me, it was the perfect location to stay as a digital nomad and I&apos;d highly recommend it.</p><h2 id="cafes-and-coworking-spaces">Cafes and Coworking Spaces</h2><p>Important in any good digital nomad destination is the availability of places to work from and in Medellin, Cafes and Coworking spaces are everywhere.</p><p>Here are a few Coworking Spaces and Work Cafes that I checked out in El Poblado.</p><h3 id="global-express"><a href="http://globalexpresscenter.com/" rel="noopener">Global Express</a></h3><p><em>Daily Rate: ~$6 USD per day | Monthly rate: ~$160 USD | First Day Free</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/global-express-medellin.jpg" class="kg-image" alt="Medellin Wrap-Up: 10 days in the City of Eternal Spring" loading="lazy" width="1000" height="563" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/global-express-medellin.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/global-express-medellin.jpg 1000w"></figure><p><br>Without realising, we checked into our <a href="http://christhefreelancer.com/airbnb-app" rel="noopener">AirBnB</a> at the downstairs offices of the <a href="http://globalexpresscenter.com/" rel="noopener">Global Express</a>. The building as it turns out, is a bit of a hub that includes a tours desk, rental office and of course, the coworking space on the upper floors.</p><p>Overall, it&apos;s a coworking space done well, designed perfectly for maximum productivity with a uniform desk design and seating. The cost of space however remains affordable at only $5 USD per day (or at least, that&apos;s what they told us) and the first day is free to try out.</p><p>As the internet was down at our apartment for most of our stay and the space was literally around the corner, we relied on <a href="http://globalexpresscenter.com/" rel="noopener">Global Express</a> twice during our 10 day trip.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;Global_Express</td><td>&#xA0;18.07 Mbps</td><td>&#xA0;11.56 Mbps</td><td>&#xA0;3 ms</td><td>&#xA0;10:34 am</td></tr></tbody></table><!--kg-card-end: html--><h3 id="work-and-go"><a href="http://workandgo.com/" rel="noopener">Work and Go</a></h3><p><em>Rates starting at around $160 USD per month | First Day Free</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Work-and-Go-Medellin-1024x576.jpg" class="kg-image" alt="Medellin Wrap-Up: 10 days in the City of Eternal Spring" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Work-and-Go-Medellin-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Work-and-Go-Medellin-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Work-and-Go-Medellin-1024x576.jpg 1024w"></figure><p><a href="http://workandgo.com/" rel="noopener">Work and Go</a> was the second space we checked out and after Global Express, it had a lot to live up to.</p><p>While I can&apos;t fault it, there was nothing special about it that would make me return given all the other options, except of course for the high-rise view from the fifth floor.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;WORKANDGO</td><td>&#xA0;19.04 Mbps</td><td>&#xA0;19.11 Mbps</td><td>&#xA0;3 ms</td><td>&#xA0;9:34 am</td></tr></tbody></table><!--kg-card-end: html--><h3 id="selina-cowork"><a href="https://www.selina.com/medellin/" rel="noopener">Selina CoWork</a></h3><p><em>Rates starting at $10 USD per day or $75 USD per month</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/selina-cowork-medellin.jpg" class="kg-image" alt="Medellin Wrap-Up: 10 days in the City of Eternal Spring" loading="lazy" width="1000" height="563" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/selina-cowork-medellin.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/selina-cowork-medellin.jpg 1000w"></figure><p><a href="https://www.selina.com/" rel="noopener">Selina</a> is a hostel brand that is trying to create a unique experience at their locations in Latin American by offering services and facilities that cater to the new generation of travellers.</p><p><a href="https://www.selina.com/cowork/" rel="noopener">Selina CoWork</a> is the coworking branch of Selina and currently there are 6 coworking spaces across the 14 Selina locations (but expanding rapidly).</p><p><a href="https://www.selina.com/cowork-medellin/" rel="noopener">Selina CoWork in Medellin</a> had some of the fastest internet we experienced in Medellin but it was quite crowded with a surprising number of permanent desk members taking up half the space.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;Selina CoWork</td><td>&#xA0;21.60 Mbps</td><td>&#xA0;20.39 Mbps</td><td>&#xA0;2 ms</td><td>&#xA0; 10:17 am</td></tr></tbody></table><!--kg-card-end: html--><h3 id="tinkko"><a href="http://tinkko.com/coworking/" rel="noopener">Tinkko</a></h3><p><em>Hourly packages start at around $70 USD for 25 hours to $150 USD for 100 hours, valid over a single month</em></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/tinkko-medellin.jpg" class="kg-image" alt="Medellin Wrap-Up: 10 days in the City of Eternal Spring" loading="lazy" width="1000" height="563" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/tinkko-medellin.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/tinkko-medellin.jpg 1000w"></figure><p>Situated near the Santa Fe mall, <a href="http://tinkko.com/coworking/" rel="noopener">Tinkko</a> was the most corporate of the spaces we visited.</p><p>They have proper meeting rooms and a view of the city from the 15th floor.</p><p>Mention <a href="https://www.facebook.com/groups/digitalnomadsmedellin/" rel="noopener">Digital Nomads Medellin</a> and get a free day pass to the coworking space ;)</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;VISITANTES</td><td>&#xA0;30.11 Mbps</td><td>&#xA0;30.82 Mbps</td><td>&#xA0;2 ms</td><td>&#xA0;4:09 pm</td></tr></tbody></table><!--kg-card-end: html--><h3 id="verdeo-cafe"><a href="https://www.facebook.com/restauranteverdeo/" rel="noopener">Verdeo (Cafe)</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/verdeo-medellin.jpg" class="kg-image" alt="Medellin Wrap-Up: 10 days in the City of Eternal Spring" loading="lazy" width="1000" height="563" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/verdeo-medellin.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/verdeo-medellin.jpg 1000w"></figure><p>Moving onto the cafes, <a href="https://www.facebook.com/restauranteverdeo/" rel="noopener">Verdeo</a> is predominantly a vegetarian restaurant but has insanely strong coffee and offers a lush garden environment to get inspired.</p><p>Ergonomics are what you&apos;d expect from a cafe and power points aren&apos;t all that common.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td rowspan="2">&#xA0;AMIGOS VERDEO</td><td>&#xA0;30.90 Mbps</td><td>&#xA0;7.68&#xA0;Mbps</td><td>&#xA0;31 ms</td><td>&#xA0;3:05 pm -&#xA0;Oct 12</td></tr><tr><td>&#xA0;31.20 Mbps</td><td>&#xA0;9.29 Mbps</td><td>&#xA0;43 ms</td><td>&#xA0; 2:15 pm - Oct 19</td></tr></tbody></table><!--kg-card-end: html--><h3 id="urbania-cafe"><a href="https://www.facebook.com/urbaniacafe/" rel="noopener">Urbania (Cafe)</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/urbania-cafe-medellin.jpg" class="kg-image" alt="Medellin Wrap-Up: 10 days in the City of Eternal Spring" loading="lazy" width="1000" height="563" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/urbania-cafe-medellin.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/urbania-cafe-medellin.jpg 1000w"></figure><p><a href="https://www.facebook.com/urbaniacafe/" rel="noopener">Urbania</a> was a cafe that provided good enough internet but wasn&apos;t as practical for remote work in terms of ergonomics and availability of power points.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;Urbania Cafe free WIFI</td><td>&#xA0;20.46 Mbps</td><td>&#xA0;7.49 Mbps</td><td>&#xA0;40ms</td><td>&#xA0;10:15am</td></tr></tbody></table><!--kg-card-end: html--><h3 id="cafe-velvet"><a href="http://cafevelvet.co/en/location/cafe-velvet-medellin-brussel-4214" rel="noopener">Cafe Velvet</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/velvet-cafe-medellin.jpg" class="kg-image" alt="Medellin Wrap-Up: 10 days in the City of Eternal Spring" loading="lazy" width="1000" height="563" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/velvet-cafe-medellin.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/velvet-cafe-medellin.jpg 1000w"></figure><p>A surprising winner in our search for the perfect work Cafe was <a href="http://cafevelvet.co/en/location/cafe-velvet-medellin-brussel-4214" rel="noopener">Cafe Velvet</a>, a space that seems to consciously cater to digital nomads and was our saviour during the D&#xED;a de la Raza, a public holiday in Colombia.</p><p>The Cafe has good food and coffee but best of all, a ideal set up for laptop work, especially in the area with the couch and the roll-in desks. I definitely recommend you check it out!</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;Cafe Velvet</td><td>&#xA0;10.18 Mbps</td><td>&#xA0;4.62 Mbps</td><td>&#xA0;2 ms</td><td>&#xA0; 9:17 am</td></tr></tbody></table><!--kg-card-end: html--><h2 id="cost-of-living">Cost of Living</h2><p>Much like <a href="https://christhefreelancer.com/las-palmas-for-digital-nomads/">Las Palmas de Gran Canaria</a>, Americans and Europeans will say that Medellin is so cheap but of course, it still does not compare to our favourite locations in South East Asia like <a href="https://christhefreelancer.com/one-month-as-a-digital-nomad-in-chiang-mai/">Chiang Mai</a> and <a href="https://christhefreelancer.com/one-month-as-a-digital-nomad-in-bali/">Bali</a>.</p><h3 id="accomodation">Accomodation</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Our-Apartment-in-Medellin-1.jpg" class="kg-image" alt="Medellin Wrap-Up: 10 days in the City of Eternal Spring" loading="lazy" width="1045" height="746" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Our-Apartment-in-Medellin-1.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Our-Apartment-in-Medellin-1.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Our-Apartment-in-Medellin-1.jpg 1045w"></figure><p>Given our short stay in Medellin, we booked our apartment through <a href="http://www.airbnb.com/c/cdodd18?s=8" rel="noopener">AirBnB</a> and paid $561.79 AUD (~$432 USD) for our 10 night stay.</p><p>This modern studio apartment (pictured above) was situated right on Calle 10 in the perfect location for us but wouldn&apos;t be ideal for a long term stay as it was small and had no desk or kitchen.</p><p>This is obviously not indicative of a rental price in Medellin but I could definitely see some good value for money with friends spending only $3,500 USD for a 5 bedroom penthouse in El Poblado (check the video above for a sneak peak).</p><h3 id="food-drink">Food &amp; Drink</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/food-and-drink-medellin-1024x576.jpg" class="kg-image" alt="Medellin Wrap-Up: 10 days in the City of Eternal Spring" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/food-and-drink-medellin-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/food-and-drink-medellin-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/food-and-drink-medellin-1024x576.jpg 1024w"></figure><p>For Denise and I, food is very important and in the cuisine department, we found Medellin to be a little lacking.</p><p>Of course, the area we stayed on the main tourist strip is probably a big factor but we found the food to be surprisingly expensive and heavy on the burgers, pizzas and hot dogs on Calle 10.</p><p>Just outside Calle 10 was a bit more up-market but at the same time, more expensive. Most of the time, we were paying $7-15 USD per meal, something we&apos;d become accustomed to since leaving South East Asia but were hoping would be less.</p><p>Unfortunately, we didn&apos;t have a kitchen to cook in but discovered that we&apos;d definitely need one, as eating out every day is not something we&apos;d want to do if we actually lived here.</p><p>Some examples of meals we had with prices were:</p><ul><li>Huevos Rancheros at <em>D&apos;Andre</em> - $15,200 COP (~$5.20 USD) + Tax/Service</li><li>Chilli Con Carne at <em>Selina </em>- $17,280 COP (~$5.92 USD)</li><li>Hot dog with the lot at <em>Perritos - </em>$6,500 COP (~$2.16 USD)</li><li>Sushi Dinner for two at <em>Hanami </em>- $90,685 COP (~$31.07 USD)</li><li>Chicken Asado (f0r 2) at a mall food court - $24,4000 COP (~$8.40 USD)</li></ul><h3 id="groceries">Groceries</h3><p>Like I mentioned, we didn&apos;t have a kitchen this time but I still recorded some grocery prices for you guys.</p><!--kg-card-begin: html--><table><tbody><tr><td style="text-align: center;" colspan="2"><strong>Fruits</strong></td><td style="text-align: center;" colspan="2"><strong>Vegetables</strong></td></tr><tr><td>&#xA0;Apples</td><td>&#xA0;$2.22 USD/kg</td><td>&#xA0;Onions</td><td>$1.16 USD/kg</td></tr><tr><td style="text-align: center;" colspan="2"><strong>Meats</strong></td><td>&#xA0;Tomatoes</td><td>$0.80 USD/kg</td></tr><tr><td>&#xA0;Chicken Breast</td><td>&#xA0;$6.29 USD/kg</td><td>&#xA0;Carrots</td><td>$0.56 USD/kg</td></tr><tr><td>&#xA0;Beef&#xA0;Rump</td><td>&#xA0;$7.98 USD/kg</td><td>&#xA0;Avocados</td><td>$1.65 USD/kg</td></tr></tbody></table><!--kg-card-end: html--><p><em>*Using the current mid-market rate of 3,000 COP to 1 USD</em></p><h3 id="phone-plans">Phone Plans</h3><p>Our phone plans in Medellin were some of the most expensive we&apos;ve come across in our travels.</p><p>My initial set up with <em>Claro </em>came out to 53,000 COP (~$17.60 USD) for only 2gbs, a quota that I easily surpassed with no wifi at the apartment and had to top up within a few days for 44,000 COP (~$15 USD).</p><h3 id="transportation">Transportation</h3><p>Getting around was easy in Medellin with most things coming within walking distance of our apartment but those times when the walk was a little too long, we relied heavily on <a href="https://christhefreelancer.com/uber-app">Uber</a>.</p><p>While there is a metro system in Medellin, <a href="https://christhefreelancer.com/uber-app">Uber</a> is so inexpensive that it became the easy choice for us to get anywhere in the city.</p><p>Here&apos;s a breakdown of all the <a href="https://christhefreelancer.com/uber-app">Ubers</a> we took and their prices:</p><!--kg-card-begin: html--><table><tbody><tr><td><strong>Distance</strong></td><td><strong>Time</strong></td><td><strong>Price (COP)</strong></td><td><strong>In USD</strong></td></tr><tr><td>&#xA0;31.32 kms</td><td>&#xA0;53 mins</td><td>&#xA0;27,500</td><td>&#xA0;$9.14</td></tr><tr><td>&#xA0;8.59 kms</td><td>&#xA0;47 mins</td><td>&#xA0;12,587</td><td>&#xA0;$4.18</td></tr><tr><td>&#xA0;0.82 kms</td><td>&#xA0;4 mins</td><td>&#xA0;4,600</td><td>&#xA0;$1.53</td></tr><tr><td>&#xA0;11.81 kms</td><td>&#xA0;20.5 mins</td><td>&#xA0;13,200</td><td>&#xA0;$4.39</td></tr><tr><td>&#xA0;1.42 kms</td><td>&#xA0;4.5 mins</td><td>&#xA0;4,600</td><td>&#xA0;$1.53</td></tr><tr><td>&#xA0;32.98</td><td>&#xA0;41 mins</td><td>&#xA0;27,615</td><td>&#xA0;$9.18</td></tr></tbody></table><!--kg-card-end: html--><h3 id="drinking-and-nightlife">Drinking and Nightlife</h3><p>I&apos;m not much a nightlife and drinking guy but the times when I was exposed to alcohol prices, I remember them to be quite inexpensive.</p><p>A six-pack of Coronas at the supermarket cost me 20,500 COP (~$6.80 USD) and a beer at the bar, I remembered to be around 5,000 COP (~$1.66 USD).</p><h2 id="lifestyle-and-things-to-do">Lifestyle and Things to Do</h2><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/things-to-do-medellin-1024x576.jpg" class="kg-image" alt="Medellin Wrap-Up: 10 days in the City of Eternal Spring" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/things-to-do-medellin-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/things-to-do-medellin-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/things-to-do-medellin-1024x576.jpg 1024w"><figcaption>From top-left to bottom-right: Guatape Town, the Medellin Skyline, the Laguna de Guatape and taking a walk on Calle 10</figcaption></figure><p>Any list of things to do in Medellin will likely include the Medellin Metrocable and the Laguana of Guatape. The metrocable is a gondola lift system that takes you into the mountain-top Parque Arvi and the Laguana of Guatape is an amazing artificial lake generated from the construction of a nearby dam. There&apos;s also museums parks and gardens but I&apos;d highly recommend Guatape as it was the highlight of our trip.</p><p>Guatape is a small town just outside Medellin that is perfect for a day trip. The town itself is beautiful and traditional, although very overtaken by tourism. Walk out to the water to catch the ferry that will take you around the laguna and then make your way to the giant rock called El Pe&#xF1;&#xF3;n de Guatap&#xE9; where you&apos;ll climb 200 metres to reach the top and check out some amazing views of the laguna.</p><p>Back in Medellin, you have all the ammenities of a major city.</p><p>Denise and I didn&apos;t get up to much except work and hang out with friends but why not attend a dance lesson while in South America? Or perhaps, check the nightlife in Parque Lleras!</p><h2 id="overall-thoughts">Overall Thoughts</h2><p>Medellin surprised me. My theory on the expat scene of Medellin being a <em>boys club </em>seemed verified but the amount of coworking spaces and cafes within the one small area came at a pleasant surprise.</p><p>While for me, it&apos;s no rival to Chiang Mai, I did notice three positives that both these destinations share:</p><ol><li>A thriving expat area - Around Calle 10 in Medellin and the Nimman area in Chiang Mai</li><li>Year-round good weather, and</li><li>Surrounded by beautiful lush mountains</li></ol><p>The biggest area in which the two cities differ is the food in which Chiang Mai is the clear winner with healthy, delicious and cheap street food. Plus the cost of living is still much less in Thailand.</p><p>Unfortunately, once you&apos;ve been to Chiang Mai and fall in love with it, you end up comparing it with every destination you travel to.</p><p>For Americans and Canadians who appreciate the physical and timezone proximity to North America, Medellin is obviously a winner but for me personally, I would like to see a coworking space that caters specifically to nomads and an environment which could attract female nomads as well.</p><p>All in all, it was quite a productive and social trip. Thank you Medellin!</p><p>Until next time,</p><p>Chris</p>]]></content:encoded></item><item><title><![CDATA[Warsaw Wrap-Up: 2 Weeks as Digital Nomads in the Polish Capital]]></title><description><![CDATA[<figure class="kg-card kg-embed-card"><iframe src="https://www.youtube.com/embed/ZwXD-FV6isQ" width="853" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></figure><p>Despite the low cost of living, fast internet and position in EU, Warsaw seems to have failed to make it into any lists of major digital nomad destinations (currently sitting at position 115 on <a href="https://nomadlist.com/" rel="noopener">Nomad List</a>) and honestly, I can see why.</p><p>One thing I&apos;ve noticed over the</p>]]></description><link>https://www.christhefreelancer.com/warsaw-for-digital-nomads/</link><guid isPermaLink="false">60ab3f76fcfa4a6b501829ae</guid><category><![CDATA[Lifestyle]]></category><category><![CDATA[Destination Reports]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Fri, 25 Aug 2017 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/warsaw-for-digital-nomads.jpg" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-embed-card"><iframe src="https://www.youtube.com/embed/ZwXD-FV6isQ" width="853" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></figure><img src="https://www.christhefreelancer.com/content/images/2021/05/warsaw-for-digital-nomads.jpg" alt="Warsaw Wrap-Up: 2 Weeks as Digital Nomads in the Polish Capital"><p>Despite the low cost of living, fast internet and position in EU, Warsaw seems to have failed to make it into any lists of major digital nomad destinations (currently sitting at position 115 on <a href="https://nomadlist.com/" rel="noopener">Nomad List</a>) and honestly, I can see why.</p><p>One thing I&apos;ve noticed over the past 18+ months of living the &apos;digital nomad lifestyle&apos; is a mass migration out of Europe during winter and of course, a mass migration back to Europe when the weather improves.</p><p>In Warsaw, the weather remains mild even during the summer months.</p><p>The reason I mention the weather up-front is not to deter you from Warsaw but to demonstrate that it might be the only obvious factor afflicting this otherwise nomad-friendly European city.</p><p>I personally did not enjoy Warsaw as much as I&apos;d hoped but I can definitely see it&apos;s good points.</p><p>The city is a modern metropolis unlike anything I&apos;ve seen in Europe. It&apos;s high tech, has great infrastructure and has all the trimmings of a modern city including <a href="https://christhefreelancer.com/uber-app">Uber</a> and <a href="http://ubr.to/EatsGiveGet" rel="noopener">UberEATS</a>.</p><p>So without further ado, let&#x2019;s get into my full evaluation of Warsaw as a digital nomad destination</p><h2 id="cafes-coworking-spaces">Cafes &amp; Coworking Spaces</h2><p>Unlike in <a href="https://christhefreelancer.com/belgrade-for-digital-nomads/">Belgrade</a> and <a href="https://christhefreelancer.com/sofia-for-digital-nomads/">Sofia</a> - where I researched, tested and compared a collection of coworking spaces - for this trip to Warsaw, I had already decided on one coworking space that I wanted to work out of. That space was <a href="https://www.campus.co/warsaw/en" rel="noopener">Warsaw&apos;s Google Campus</a>.</p><h2 id="campus-warsaw"><a href="https://www.campus.co/warsaw/en" rel="noopener">Campus Warsaw</a></h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Campus-Warsaw-1024x576.jpg" class="kg-image" alt="Warsaw Wrap-Up: 2 Weeks as Digital Nomads in the Polish Capital" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Campus-Warsaw-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Campus-Warsaw-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Campus-Warsaw-1024x576.jpg 1024w"></figure><p>In case you weren&apos;t aware, Google has set up free coworking spaces around the world in locations like London, Tel Aviv, Madrid, Sao Paulo, Seoul and London but despite the non-existent price tag, each of Google&apos;s spaces are generally well-equipped with modern facilities and incredibly fast internet. The Warsaw version of Google Campus is no exception.</p><p>With free, blazing-fast Wifi and plenty of ergonomic office seating, <a href="https://www.campus.co/warsaw/en" rel="noopener">Campus Warsaw</a> seemed like a no-brainer to spend my working days in Warsaw but after two days of closure due to a public holiday in Poland, I found myself getting into the routine of working from home.</p><p>The space is brand-spanking new after recently moving locations and the internet did not disappoint. However, I felt the location was a little remote and my decision to base myself near the new location was the biggest mistake of the trip.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td rowspan="2">&#xA0;Campus Community_Fast</td><td>120.58 Mbps</td><td>&#xA0;256.24Mbps</td><td>&#xA0;3ms</td><td>&#xA0;10:37am - Aug 14</td></tr><tr><td>&#xA0;145.48 Mbps</td><td>205.94 Mbps</td><td>&#xA0;3ms</td><td>&#xA0; 9:39am - Aug 16</td></tr></tbody></table><!--kg-card-end: html--><h3 id="etno-cafe"><a href="https://www.facebook.com/EtnoCafeWarszawa/" rel="noopener">Etno Cafe</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/etno-cafe.jpg" class="kg-image" alt="Warsaw Wrap-Up: 2 Weeks as Digital Nomads in the Polish Capital" loading="lazy" width="1000" height="563" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/etno-cafe.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/etno-cafe.jpg 1000w"></figure><p>While I didn&apos;t end up whipping out my laptop during my visit to <a href="https://www.facebook.com/EtnoCafeWarszawa/" rel="noopener">Etno</a>, I saw a lot of others that did.</p><p>It&apos;s one of those trendy cafes that seems set up perfectly for remote freelancers and I noticed a digital nomad meetup happening there during my last week, suggesting that this might be a bit of a nomad hotspot.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>#Etno Cafe</td><td>&#xA0;12.21 Mbps</td><td>&#xA0;29.90 Mbps</td><td>&#xA0;13ms</td><td>&#xA0;2:44 pm</td></tr></tbody></table><!--kg-card-end: html--><h3 id="stor"><a href="https://www.facebook.com/storcafe/" rel="noopener">STOR</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/STOR.jpg" class="kg-image" alt="Warsaw Wrap-Up: 2 Weeks as Digital Nomads in the Polish Capital" loading="lazy" width="1000" height="563" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/STOR.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/STOR.jpg 1000w"></figure><p>Situated not far from Warsaw&apos;s Nowy &#x15A;wiat, <a href="https://www.facebook.com/storcafe/" rel="noopener">STOR</a> is a quaint little cafe, similar to the look and feel of Etno.</p><p>I didn&apos;t whip out my laptop here either but the internet speed and abundance of laptop workers demonstrated that this was a good work cafe as well.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;STOR</td><td>&#xA0;41.30 Mbps</td><td>&#xA0;40.20 Mbps</td><td>&#xA0;2ms</td><td>&#xA0;4:37 pm</td></tr></tbody></table><!--kg-card-end: html--><h3 id="labour-cafe-deli-coworking"><a href="https://www.facebook.com/labourcafe/" rel="noopener">Labour Cafe Deli &amp; Coworking</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Labour-Cafe-Coworking.jpg" class="kg-image" alt="Warsaw Wrap-Up: 2 Weeks as Digital Nomads in the Polish Capital" loading="lazy" width="1000" height="563" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Labour-Cafe-Coworking.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/Labour-Cafe-Coworking.jpg 1000w"></figure><p>Third on my tour of nomad-friendly work cafes was <a href="https://www.facebook.com/labourcafe/" rel="noopener">Labour Cafe Deli &amp; Coworking</a>, which by the name, sounds like the ultimate coworking cafe but in reality was much like any cafe with most patrons stopping by for a coffee or breakfast.</p><p>On that note, I&apos;d highly recommend the Shakshuka for breakfast. It was absolutely delicious and a steal at 18 PLN (~$5 USD).</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;LabourCafe</td><td>&#xA0;17.53 Mbps</td><td>&#xA0;22.43 Mbps</td><td>&#xA0;19ms</td><td>&#xA0;11:36 am</td></tr></tbody></table><!--kg-card-end: html--><h3 id="secret-life-cafe"><a href="https://www.facebook.com/SecretLifeCafe" rel="noopener">Secret Life Cafe</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/secret-life-cafe.jpg" class="kg-image" alt="Warsaw Wrap-Up: 2 Weeks as Digital Nomads in the Polish Capital" loading="lazy" width="1000" height="563" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/secret-life-cafe.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/secret-life-cafe.jpg 1000w"></figure><p>On my second-last day in Warsaw, I decided to get out of the house and check out the final cafe on my list, the <a href="https://www.facebook.com/SecretLifeCafe" rel="noopener">Secret Life Cafe</a>.</p><p>It&apos;s situated north of the centre of town near the Arkadia mall and seemed to have a mix of normal cafe-goers and laptop workers.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>SecretLifeCafe</td><td>&#xA0;3.91 Mbps</td><td>&#xA0;3.55 Mbps</td><td>&#xA0;13ms</td><td>&#xA0;12:56 pm</td></tr></tbody></table><!--kg-card-end: html--><h3 id="reaktor-coworking"><a href="http://reaktorwarsaw.com/" rel="noopener">Reaktor Coworking</a></h3><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/Reaktor-coworking.jpg" class="kg-image" alt="Warsaw Wrap-Up: 2 Weeks as Digital Nomads in the Polish Capital" loading="lazy" width="1000" height="667" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Reaktor-coworking.jpg 600w, https://www.christhefreelancer.com/content/images/2021/06/Reaktor-coworking.jpg 1000w"><figcaption>Photo by Reaktor</figcaption></figure><p>I decided to check out <a href="http://reaktorwarsaw.com/" rel="noopener">Reaktor</a> as it was only a short walk from the Secret Life Cafe.</p><p>I must admit, I walked past it a few times as I tried to figure out it&apos;s location. It&apos;s actually just a house in a normal residential area - no signage, just a regular house.</p><p>Once you walk inside however, it&apos;s obvious the house is a shared space.</p><p>I spent a few hours there working on the video for this blog post. The internet was good but the space is definitely more focused on the local startup community as opposed to transient workers like me.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>&#xA0;ReaktorNETbyCisco</td><td>&#xA0;91.87 Mbps</td><td>&#xA0;94.22 Mbps</td><td>&#xA0;2ms</td><td>&#xA0;2:36pm</td></tr></tbody></table><!--kg-card-end: html--><h2 id="cost-of-living">Cost of Living</h2><h3 id="accomodation">Accomodation</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Our-apartment-in-Warsaw.jpg" class="kg-image" alt="Warsaw Wrap-Up: 2 Weeks as Digital Nomads in the Polish Capital" loading="lazy" width="1200" height="816" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Our-apartment-in-Warsaw.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Our-apartment-in-Warsaw.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Our-apartment-in-Warsaw.jpg 1200w" sizes="(min-width: 1200px) 1200px"></figure><p>As we have done all throughout our time in Europe, we booked our apartment through <a href="http://www.airbnb.com/c/cdodd18?s=8" rel="noopener">AirBnB</a> and paid $700 AUD (~$550 USD) for our 14 night stay.</p><p>Having no connections or previous experience in Warsaw, we elected to take the easy and secure option but of course, if you can afford the inconvenience, I&#x2019;m sure the price of actually renting an apartment like ours would be remarkably lower.</p><h3 id="food-drink">Food &amp; Drink</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Food-and-Drink-in-Warsaw-1024x576.jpg" class="kg-image" alt="Warsaw Wrap-Up: 2 Weeks as Digital Nomads in the Polish Capital" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Food-and-Drink-in-Warsaw-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Food-and-Drink-in-Warsaw-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Food-and-Drink-in-Warsaw-1024x576.jpg 1024w"></figure><p>After almost two months living in South Eastern Europe, we were happy to find that Warsaw&apos;s food selection was a bit more diverse.</p><p>You may think that the food in Poland is all meat and potatoes but Warsaw is a world city and brings together all types of cuisines. We especially enjoyed eating Asian food again as the Asian food in Serbia left much to be desired.</p><p>As for the prices, I felt that Warsaw was a little bit more expensive than <a href="https://christhefreelancer.com/belgrade-for-digital-nomads/">Belgrade</a> or <a href="https://christhefreelancer.com/sofia-for-digital-nomads/">Sofia</a> but this came as no surprise as Warsaw is much more of a modern and world-famous city.</p><p>Some examples of meals we had in Warsaw include:</p><ul><li>A 700g selection for a food court buffet = 24.80 PLN (~$6.82 USD)</li><li>A lovely Hache steak at the 4th best dinner spot in Warsaw (according to Foursquare) = 36.90 PLN (~$10.15 USD)</li><li>Asian Noodles with Chicken (pictured above) = 22 PLN (~$6 USD)</li><li>Vegan curry and Rice = 24 PLN (~$6.60 USD)</li><li>Two kebabs, chips and juice (<em>from Kebab King</em>) = 22.81 PLN (~$6.28 USD)</li><li>A dumpling dinner for two including soup at <em>Pelna Para</em> = 95 PLN (~$26.14 USD)</li></ul><h3 id="groceries">Groceries</h3><p>We&apos;ve found grocery prices to be quite similar across the destinations we&apos;ve covered in Eastern Europe. It&apos;s one of the truest aspect of cost of living as unlike <a href="http://www.airbnb.com/c/cdodd18?s=8" rel="noopener">AirBnB</a> and restaurants, the prices aren&apos;t likely to be inflated by tourism.</p><p>The following is a few examples of prices we found at the big supermarket chain Carrefour.</p><!--kg-card-begin: html--><table><tbody><tr><td style="text-align: center;" colspan="2"><strong>Fruits</strong></td><td style="text-align: center;" colspan="2"><strong>Vegetables</strong></td></tr><tr><td>&#xA0;Red Apples</td><td>$1.07 USD/kg</td><td>&#xA0;Onions</td><td>$1.10 USD/kg</td></tr><tr><td style="text-align: center;" colspan="2"><strong>Meats</strong></td><td>&#xA0;Tomatoes</td><td>$1.10 USD/kg</td></tr><tr><td>&#xA0;Chicken Breast</td><td>&#xA0;$3.85 USD/kg</td><td>&#xA0;Potatoes</td><td>$0.41 USD/kg</td></tr><tr><td>&#xA0;Pork Mince</td><td>&#xA0;$3.85 USD/kg</td><td>&#xA0;Carrots</td><td>$0.55 USD/kg</td></tr><tr><td>&#xA0;Polish Sausages</td><td>&#xA0;$3.30 USD/kg</td><td>&#xA0;Mushrooms</td><td>$2.20 USD/kg</td></tr><tr><td style="text-align: center;" colspan="4"><strong>Other</strong></td></tr><tr><td>&#xA0;Eggs</td><td>10 for $1.62 USD</td><td>&#xA0;Bread</td><td>$0.52 USD per loaf</td></tr></tbody></table><!--kg-card-end: html--><p><em>*Using the current mid-market rate of 3.63 Polish Zloty to 1 USD</em></p><h3 id="phone-plans">Phone Plans</h3><p>Using <a href="http://www.johnnyfd.com/2016/07/johnnys-guide-to-poland-warsaw-vs.html" rel="noopener">Johnny FD&apos;s article on Warsaw</a> as a guide, we had heard that the company <em>Play </em>was a good telecom provider and funnily enough, their SIMs were the only ones available when we arrived at the airport.</p><p>I was astounded to see a SIM card with a huge 30gb data limit for only 19 PLN (~$5 USD) but discovered after one week that the SIM card was only valid for 7 days, after which we had to visit the <em>Play </em>store in order to extend for an extra week for an additional 10 PLN (~$3 USD). For sure, it wasn&apos;t expensive but it was quite annoying and left me wondering, w<em>ho needs 30 gigabytes of data for a single week?</em></p><h3 id="coffee-and-alcohol">Coffee and Alcohol</h3><p>I&apos;ve found that Alcohol is quite cheap anywhere in Eastern Europe and in Warsaw, you can grab a beer from the local store for only 2-3 PLN, which is no more than $1 USD. As for drinking out, the only beer I drank in Warsaw was by the park near Old Town and cost me just 13 PLN (or just under $4 USD).</p><p>For Coffees however, I noticed a little bit of hike from what I was paying in <a href="https://christhefreelancer.com/belgrade-for-digital-nomads/">Belgrade</a> and <a href="https://christhefreelancer.com/sofia-for-digital-nomads/">Sofia</a>. I&apos;m talking about $2-4 USD as apposed to $1-2 USD. Doesn&apos;t sound like a lot but it does add up over time if you&apos;re a regular coffee drinker.</p><h3 id="transport">Transport</h3><p>For transport, you&apos;ve got a range of options.</p><p>The most exciting to us is that <a href="https://christhefreelancer.com/uber-app">Uber</a> is here! It&apos;s been so long since we&apos;ve been able to use Uber and it was great to have that convenience again. It wasn&apos;t too expensive either. Most trips cost us under 20 PLN (~$5.50 USD) with the exception of our 4omin drive to Modilin Airport which was about 90 PLN (~$25 USD)</p><p>The public transport system is also really well done. Trams, Metros and Buses are all at your disposal for the low rates of:</p><ul><li>3.40 PLN (~$1 USD) for a 20min ticket</li><li>4.40 PLN (~$1.20 USD) for a 75min ticket, or</li><li>7 PLN (~$2 USD) for a 90min ticket</li></ul><p>With plenty of other options for multiple days and weeks.</p><p>Finally, the most unique transport option in Warsaw is the bike sharing system. You can identify the stations by the <em>Veturilo </em>branding and all it takes is a phone number and 10 PLN (~$2.77 USD) to get started.</p><p>The bike sharing system is very cheap - maxing out at 7 PLN (&lt;$2 USD) per hour - and once you have an account, you simply scan the QR code on the back of the bike with <a href="https://www.veturilo.waw.pl/en/" rel="noopener">the Verturilo phone app</a> and click <em>Hire. </em>When you&apos;re done, you just insert it into your nearest station.</p><p>Keep in mind however that the system can be prone to failures and I had my account blocked twice due to the system not recognising my return.</p><h2 id="lifestyle-and-things-to-do">Lifestyle and Things to Do</h2><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/Lifestyle-in-Warsaw-1024x576.jpg" class="kg-image" alt="Warsaw Wrap-Up: 2 Weeks as Digital Nomads in the Polish Capital" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Lifestyle-in-Warsaw-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Lifestyle-in-Warsaw-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Lifestyle-in-Warsaw-1024x576.jpg 1024w"><figcaption>From top-left to bottom-right: Warsaw&apos;s Riverside, Warsaw&apos;s Old Town, Square of the First Armored Division of the Polish Army, and the Royal Castle in Old Town</figcaption></figure><p>At first sight, Warsaw looked like a very liveable city. Modern infrastructure, a lovely riverside and a safe cycling system make Warsaw an impressive modern metropolis but in terms of keeping occupied, Denise and I struggled.</p><p>Warsaw&apos;s Old Town is obviously a must-see but otherwise, we&apos;re not ones for museums and historical monuments. We felt that after one weekend in Warsaw, we&apos;d seen all that we needed to see and Warsaw served more as a low-cost destination to cover time in-between Greece and Las Palmas.</p><p>In terms of lifestyle, you can obviously expect a pretty standard modern European lifestyle. The only things that make Warsaw a pain is the language barrier (not a huge deal) and also, just how spread out the city is, making it harder to get around.</p><h2 id="final-thoughts">Final Thoughts</h2><p>Warsaw is a low-cost, modern European city with a mild climate and great internet.</p><p>Overall, I think my personal experience was tainted by choosing the wrong area to stay (near Google Campus&apos; new 2017 location). I usually like to be walking distance from most of my necessities but unfortunately, I underestimated how big the city was and found myself feeling isolated, being stuck between two train lines and a construction zone in quite a boring residential area.</p><p>The centre of the city however, is home to many cafes, coworking spaces, restaurants and malls.</p><p>I obviously didn&apos;t get the full &apos;Warsaw experience&apos; and I&apos;d be willing to give it another chance with the right friend or guide but in terms of living conditions for digital nomads, Warsaw seems to offer a standard European city lifestyle. Which, depending on whether you&apos;re looking to do business or focus more on <em>lifestyle,</em> might make you either love or hate Warsaw.</p><p>Unfortunately for me, the experience was more sour than sweet.</p><p>Until next time,</p><p>Chris</p>]]></content:encoded></item><item><title><![CDATA[Chris' Guide to Mykonos Beaches]]></title><description><![CDATA[<p>In the Summer of 2017, my partner Denise and I met up with my Mother for a 10 day tour of Athens, Mykonos and Santorini and Mykonos was by far, my favourite part of the trip.</p><p><em>Watch this video below to see footage of each beaches</em><br></p><figure class="kg-card kg-embed-card"><iframe src="https://www.youtube.com/embed/t3aeoGjdd-Y" width="853" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></figure><h2 id="the-beaches-are-the-thing-to-do-in-mykonos">The Beaches are &apos;</h2>]]></description><link>https://www.christhefreelancer.com/mykonos-beaches/</link><guid isPermaLink="false">60ab3e33fcfa4a6b5018299c</guid><category><![CDATA[Lifestyle]]></category><category><![CDATA[Travel (General)]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Thu, 17 Aug 2017 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/Mykonos-Beaches-Thumbnail.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.christhefreelancer.com/content/images/2021/05/Mykonos-Beaches-Thumbnail.jpg" alt="Chris&apos; Guide to Mykonos Beaches"><p>In the Summer of 2017, my partner Denise and I met up with my Mother for a 10 day tour of Athens, Mykonos and Santorini and Mykonos was by far, my favourite part of the trip.</p><p><em>Watch this video below to see footage of each beaches</em><br></p><figure class="kg-card kg-embed-card"><iframe src="https://www.youtube.com/embed/t3aeoGjdd-Y" width="853" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></figure><h2 id="the-beaches-are-the-thing-to-do-in-mykonos">The Beaches are &apos;<em>The Thing to Do</em>&apos; in Mykonos</h2><p>Check any top 10 list on things to see and do in Mykonos and you&apos;ll find the island&apos;s list of many beautiful beaches.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/Tripadvisor-top-11.png" class="kg-image" alt="Chris&apos; Guide to Mykonos Beaches" loading="lazy" width="1389" height="500" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Tripadvisor-top-11.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Tripadvisor-top-11.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Tripadvisor-top-11.png 1389w" sizes="(min-width: 1200px) 1200px"><figcaption>The top 11 attractions in Mykonos according to <a href="http://www.dpbolvw.net/click-8293833-12205838">Tripadvisor</a></figcaption></figure><p>Mykonos is <em>the island </em>for beaches.</p><p>Realising this, we hired a car for entire trip and went about exploring each of the beaches that our hotel recommended to us. These were:</p><!--kg-card-begin: html--><table><tbody><tr><td style="width: 50%;"><ul><li>Mykonos Town</li><li>Ornos Beach</li><li>Panormos Beach</li><li>Paradise Beach</li><li>Platis Gialos Beach</li><li>Psarou Beach</li></ul></td><td style="width: 50%; vertical-align: top;"><ul><li>Super Paradise Beach</li><li>Elia Beach</li><li>Ftelia Beach</li><li>Kalafati Beach, and</li><li>Kalo Livadi Beach</li></ul></td></tr></tbody></table><!--kg-card-end: html--><p>Here&apos;s my thoughts on each of them</p><h2 id="mykonos-town">Mykonos Town</h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Mykonos-Town-1024x576.jpg" class="kg-image" alt="Chris&apos; Guide to Mykonos Beaches" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Mykonos-Town-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Mykonos-Town-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Mykonos-Town-1024x576.jpg 1024w"></figure><p>No trip to Mykonos is complete with a look at the Mykonos Town.</p><p>While it does have a small beach, it&apos;s more the place to walk the traditional stone streets, dine at the restaurants and check out the shops. A must-do cultural experience!</p><h2 id="ornos-beach">Ornos Beach</h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Ornos-Beach-1024x576.jpg" class="kg-image" alt="Chris&apos; Guide to Mykonos Beaches" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Ornos-Beach-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Ornos-Beach-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Ornos-Beach-1024x576.jpg 1024w"></figure><p>Situated right across from Korfos Beach, Ornus is nothing like its cousin across the strait.</p><p>We found the beach to be over-crowded and not exactly family-friendly. We decided to sit away from the beach and grab a coffee but we&apos;re interrupted by the loud noises of young party-goers driving recklessly around the bend. Yeah, definitely not the vibe we were going for.</p><h2 id="panormos-beach">Panormos Beach</h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Panormos-Beach-1024x576.jpg" class="kg-image" alt="Chris&apos; Guide to Mykonos Beaches" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Panormos-Beach-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Panormos-Beach-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Panormos-Beach-1024x576.jpg 1024w"></figure><p>Panormos Beach was just what we were after to end our second day in Mykonos.</p><p>It&apos;s a small beach with hills on either side and a beach club in the middle. To the left of the beach club is a rocky area to take the kids and further left on the hill is a lovely restaurant called <a href="https://www.facebook.com/KalostaRestaurantPanormos/" rel="noopener">Kalosta</a> with great views of the beach. This is where I took the photo above.</p><h2 id="paradise-beach">Paradise Beach</h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Paradise-Beach-1024x576.jpg" class="kg-image" alt="Chris&apos; Guide to Mykonos Beaches" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Paradise-Beach-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Paradise-Beach-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Paradise-Beach-1024x576.jpg 1024w"></figure><p>Paradise Beach is the island&apos;s most famous party beach.</p><p>This is where all the big name DJs come to play and all the biggest day/nightclubs including <a href="http://www.tropicanamykonos.com/index.php/en/" rel="noopener">Tropicana</a>, <a href="https://cavoparadiso.gr/" rel="noopener">Cavo Paradiso</a> and <a href="https://www.facebook.com/TRUparadisemykonos/" rel="noopener">Tru Paradise</a> are located. In fact, this particular beach seems to have its on eco-system of casual food restaurants, hotels and bars, ensuring that you&apos;ll never have to leave the beach - if you don&apos;t want to.</p><p>I&apos;m myself am a huge EDM fan but seeing as I was on a family holiday, we didn&apos;t stick around for long.</p><h2 id="platis-gialos-beach">Platis Gialos Beach</h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Platis-Gialos-Beach-1024x576.jpg" class="kg-image" alt="Chris&apos; Guide to Mykonos Beaches" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Platis-Gialos-Beach-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Platis-Gialos-Beach-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Platis-Gialos-Beach-1024x576.jpg 1024w"></figure><p>Platis Gialos is the beach we ended up at while trying to get in to the exclusive and elusive Psarou Beach (coming up next).</p><p>It&apos;s a small and crowded beach but a lot more chill and family-friendly then say Ornos.</p><p>We decided to dine at the first restaurant we saw that offered parking as finding a parking spot in either of these beaches was quite the nightmare.</p><h2 id="psarou-beach">Psarou Beach</h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Psarou-Beach-1024x576.jpg" class="kg-image" alt="Chris&apos; Guide to Mykonos Beaches" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Psarou-Beach-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Psarou-Beach-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Psarou-Beach-1024x576.jpg 1024w"></figure><p>Now we arrive at the exclusive Psarou beach, the small cove which seemed to only be accessible through a small section of expensive hotels.</p><p>After an intense argument with one of the hotel staff, we decided to park at the next door, Platis Gialos beach instead and walk around the cliff. Suddenly, I was met with an impressive view of super-yachts parked in front of small beach filled with kabanas.</p><p>Within Psarou beach, you&apos;ll find the <a href="http://www.mykonosblu.com/" rel="noopener">Mykonos Blu Grecotel Exclusive Resort</a> as well as one of the world&apos;s most expensive beach restaurants called <a href="https://www.nammos.gr/" rel="noopener">Nammos</a>.</p><h2 id="super-paradise-beach">Super Paradise Beach</h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Super-Paradise-Beach-1024x576-1.jpg" class="kg-image" alt="Chris&apos; Guide to Mykonos Beaches" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Super-Paradise-Beach-1024x576-1.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Super-Paradise-Beach-1024x576-1.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Super-Paradise-Beach-1024x576-1.jpg 1024w"></figure><p>To me, Super Paradise Beach looked like a rip-off of the before-mentioned <em>Paradise Beach.</em></p><p>Just like Paradise Beach, the beach club in Super Paradise (<a href="https://www.facebook.com/pinkybeachmykonos" rel="noopener">Pinky Beach</a>) has a pile of empty champagne bottles in front of their sign but that is where the similarities seem to end.</p><p>On Super Paradise, there&apos;s just the one beach club and a concert venue on the hill that looks like it&apos;s about to host some washed-up 80&apos;s rock band. It took me 15 minutes to convince Mum and Denise to leave!</p><h2 id="elia-beach">Elia Beach</h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Elia-Beach-1024x576.jpg" class="kg-image" alt="Chris&apos; Guide to Mykonos Beaches" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Elia-Beach-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Elia-Beach-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Elia-Beach-1024x576.jpg 1024w"></figure><p>Due to Elia beach being the closest to our hotel, we were able to visit Elia on two separate occasions.</p><p>On our first trip to Elia, we found it overly pretentious. There were broke girls trying to look cool drinking cheap soft drinks and Instagram models doing photoshoots on the beach with an iPhone - I mean come on! At least use a proper camera!</p><p>The second time however, we noticed a more family-friendly vibe which just goes to show that this beach might just be for everyone.</p><h2 id="ftelia-beach">Ftelia Beach</h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Ftelia-beach-1024x576.jpg" class="kg-image" alt="Chris&apos; Guide to Mykonos Beaches" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Ftelia-beach-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Ftelia-beach-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Ftelia-beach-1024x576.jpg 1024w"></figure><p>Now for the chillest and most family-friendly beach we came across on tour of Mykonos beaches, Ftelia.</p><p>Ftelia offers the only long stretch of uninterrupted beach space out of all the beaches on this list, made commercial only by a small section towards the hill where the restaurant simply known as <em><a href="http://www.ftelia-restaurant.gr/" rel="noopener">Ftelia Restaurant</a> </em>sit.</p><p>On this beach, the young hipsters and casual family beachgoers co-exist.</p><h2 id="kalafati-beach">Kalafati Beach</h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Kalafati-Beach-1024x576.jpg" class="kg-image" alt="Chris&apos; Guide to Mykonos Beaches" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Kalafati-Beach-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Kalafati-Beach-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Kalafati-Beach-1024x576.jpg 1024w"></figure><p>Yet another chilled-out family-friendly beach on the island, Kalafati is the perfect place to grab lunch and look out at the beautiful Mykonos coast.</p><h2 id="kalo-livadi-beach">Kalo Livadi Beach</h2><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Kalo-Livadi-Beach-1024x576.jpg" class="kg-image" alt="Chris&apos; Guide to Mykonos Beaches" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Kalo-Livadi-Beach-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Kalo-Livadi-Beach-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Kalo-Livadi-Beach-1024x576.jpg 1024w"></figure><p>Finally, Kalo Livadi Beach is one of the more classy beaches on the island.</p><p>It&apos;s dominated by a beach club and restaurant called <a href="http://www.rakkanrestaurant.gr/" rel="noopener">Nemo</a> where sexy bikini girls welcome you in front of a tall mesh fence plus there&apos;s a few expensive shops to blow your money on a new beach outfit.</p><p>The girls did a little shopping while I took some footage and then we were off!</p><h2 id="tldr">TL:DR</h2><p>If you can&apos;t be bothered to read through my mediocre attempt at trying to describe these top beaches in Mykonos, don&apos;t worry! Here&apos;s my one line summary on each of them:</p><ul><li><strong>Mykonos Town - E</strong>xperience that Greek Island culture in an easy tourist environment</li><li><strong>Ornos Beach - </strong>Take some Instagram Bangers on the beach and drink at a crowded bar</li><li><strong>Panormos Beach - </strong>Eat a nice meal with a lovely view of the beach</li><li><strong>Paradise Beach -</strong> Go clubbing and drinking</li><li><strong>Platis Gialos Beach - </strong>Get a park to go to Psarou :P</li><li><strong>Psarou Beach - </strong>Show off your immense wealth (or your newfound debt if your broke - Mykonos might do that to you)</li><li><strong>Super Paradise Beach - </strong>Don&apos;t bother</li><li><strong>Ftelia Beach - </strong>If you just want to sit on the beach without the restaurants and clubs (maybe bring the kids as well)</li><li><strong>Kalafati Beach - </strong>Bring your family and have a nice meal</li><li><strong>Kalo Livadi Beach - </strong>If you wanna get classy but don&apos;t anyone to see you</li><li><strong>Elia Beach</strong> - If you can&apos;t decide on any other beach</li></ul><p>Anyways, hope that helped.</p><p>Until next time,</p><p>Chris</p>]]></content:encoded></item><item><title><![CDATA[Sofia Wrap-Up: 2 Weeks of Summer in the Bulgarian Capital]]></title><description><![CDATA[<figure class="kg-card kg-embed-card"><iframe src="https://www.youtube.com/embed/l_kvfEWSYUk?rel=0&amp;controls=0&amp;showinfo=0" width="853" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></figure><p>Sofia has become a well-known city in the Nomad community (<a href="https://nomadlist.com/" rel="noopener">currently #36 on NomadList</a>) due to it&apos;s low cost of living, modern infrastructure and position outside the schengen zone. Therefore, it became an obvious third destination of my Eastern European journey from <a href="https://christhefreelancer.com/budapest-for-digital-nomads/">Budapest</a> to the Greek Islands.</p><p>Here</p>]]></description><link>https://www.christhefreelancer.com/sofia-for-digital-nomads/</link><guid isPermaLink="false">60ab3d28fcfa4a6b5018298c</guid><category><![CDATA[Lifestyle]]></category><category><![CDATA[Destination Reports]]></category><dc:creator><![CDATA[Christopher Dodd]]></dc:creator><pubDate>Fri, 04 Aug 2017 14:00:00 GMT</pubDate><media:content url="https://www.christhefreelancer.com/content/images/2021/05/sofia-for-digital-nomads-destination-report.jpg" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-embed-card"><iframe src="https://www.youtube.com/embed/l_kvfEWSYUk?rel=0&amp;controls=0&amp;showinfo=0" width="853" height="480" frameborder="0" allowfullscreen="allowfullscreen"></iframe></figure><img src="https://www.christhefreelancer.com/content/images/2021/05/sofia-for-digital-nomads-destination-report.jpg" alt="Sofia Wrap-Up: 2 Weeks of Summer in the Bulgarian Capital"><p>Sofia has become a well-known city in the Nomad community (<a href="https://nomadlist.com/" rel="noopener">currently #36 on NomadList</a>) due to it&apos;s low cost of living, modern infrastructure and position outside the schengen zone. Therefore, it became an obvious third destination of my Eastern European journey from <a href="https://christhefreelancer.com/budapest-for-digital-nomads/">Budapest</a> to the Greek Islands.</p><p>Here are my thoughts on Sofia as a destination for digital nomads.</p><h2 id="cafes-and-coworking">Cafes and Coworking</h2><p>Much <a href="https://christhefreelancer.com/belgrade-for-digital-nomads/">like Belgrade</a>, Sofia has a range of different coworking spaces to choose from. Here&apos;s a quick comparison:</p><!--kg-card-begin: html--><table><tbody><tr><td><strong>Name</strong></td><td><strong>Day Passes</strong></td><td><strong>Month Passes</strong></td></tr><tr><td><a href="https://www.betahaus.bg/en/" target="_blank" rel="noopener">Betahaus</a></td><td>&#x20AC;10 (first day free)</td><td>&#x20AC;95</td></tr><tr><td><a href="http://soho.bg/index-en.php" target="_blank" rel="noopener">SOHO</a></td><td>&#x20AC;8 (first day free)</td><td>&#x20AC;95</td></tr><tr><td><a href="http://www.workandshare.io/" target="_blank" rel="noopener">Work &amp; Share</a></td><td>N/A (first day free)</td><td>&#x20AC;140</td></tr><tr><td><a href="https://coworking.puzl.com/" target="_blank" rel="noopener">Puzl Coworking</a></td><td>N/A (first day free)</td><td>&#x20AC;130</td></tr></tbody></table><!--kg-card-end: html--><p><em>* Prices in Bulgarian Lev have been converted into Euros for easier readability (at a rate of 2 lev to 1 Euro)</em></p><h3 id="betahaus"><a href="https://www.betahaus.bg/en/" rel="noopener">Betahaus</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/betahaus-1024x683.jpg" class="kg-image" alt="Sofia Wrap-Up: 2 Weeks of Summer in the Bulgarian Capital" loading="lazy" width="1024" height="683" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/betahaus-1024x683.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/betahaus-1024x683.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/betahaus-1024x683.jpg 1024w"></figure><p><a href="https://www.betahaus.bg/en/" rel="noopener">The Sofia version of Betahaus</a> is located in a rather inconspicuous-looking building, in the middle of a residential area, in South-East Sofia.</p><p><a href="https://www.betahaus.bg/en/" rel="noopener">Betahaus</a> is a European coworking network with locations all throughout Europe but this was my first exposure to the brand and I was quite happy with what I experienced.</p><p>The internet was fast, the seating options were plenty and the building comes with multiple facilities such as the cafe at the foot of the building.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>betahaus 5GHz</td><td>84.33 Mbps</td><td>78.96 Mbps</td><td>3ms</td><td>2:47pm</td></tr></tbody></table><!--kg-card-end: html--><h3 id="sofia-holistic-coworking-company-aka-soho"><a href="http://soho.bg/index-en.php" rel="noopener">Sofia Holistic Coworking Company (aka SOHO)</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/SOHO-Coworking-Space-1024x576.jpg" class="kg-image" alt="Sofia Wrap-Up: 2 Weeks of Summer in the Bulgarian Capital" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/SOHO-Coworking-Space-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/SOHO-Coworking-Space-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/SOHO-Coworking-Space-1024x576.jpg 1024w"></figure><p><a href="http://soho.bg/index-en.php" rel="noopener">SOHO</a> was actually the first space I checked out as it was the most centrally-located space on my list.</p><p>According to their website, &apos;<em>SOHO combines comfortable and practical coworking space with a programme of cultural and social events for a community of creative professionals and entrepreneurs</em>&apos;.</p><p>In a city full of coworking spaces focused on tech, SOHO is the exception, providing a space that&apos;s more targeted at creatives and freelancers than tech teams.</p><p>I found it a comfortable place to work and it offered a nice work environment from the top floor, overlooking the area just east of Serdika.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>SOHO</td><td>12.25&#xA0;Mbps</td><td>5.07 Mbps</td><td>2ms</td><td>1:55pm</td></tr></tbody></table><!--kg-card-end: html--><h3 id="work-share"><a href="http://www.workandshare.io/" rel="noopener">Work &amp; Share</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/work-and-share-1024x683.jpg" class="kg-image" alt="Sofia Wrap-Up: 2 Weeks of Summer in the Bulgarian Capital" loading="lazy" width="1024" height="683" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/work-and-share-1024x683.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/work-and-share-1024x683.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/work-and-share-1024x683.jpg 1024w"></figure><p><a href="http://www.workandshare.io/" rel="noopener">Work &amp; Share</a> was recommended to me by my friend Vlad, a local Bulgarian who is studying at the adjacent software university.</p><p>It&apos;s a newly opened space on the outskirts of the city between the Joliot-Curie and G.M. Dimitrov Metro Stations and has quite a warehouse-y feel to it.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>Stage Office</td><td>49.11 Mbps</td><td>47.71 Mbps</td><td>3ms</td><td>1:50pm</td></tr></tbody></table><!--kg-card-end: html--><h3 id="puzl-coworking"><a href="https://coworking.puzl.com/" rel="noopener">Puzl Coworking</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Puzl-Coworking-Space-1024x576.jpg" class="kg-image" alt="Sofia Wrap-Up: 2 Weeks of Summer in the Bulgarian Capital" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Puzl-Coworking-Space-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Puzl-Coworking-Space-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Puzl-Coworking-Space-1024x576.jpg 1024w"></figure><p><a href="https://coworking.puzl.com/" rel="noopener">Puzl Coworking space</a> touts itself as &apos;<em>arguably the best IT coworking space</em>&apos; and with the vision of the company&apos;s founder Tibault, is growing fast.</p><p>The current location is on the upper floors of an old industrial building but is expanding within the next year to the next door building and has plans to drastically increase the space&apos;s facilities to include its own restaurant, a market street and a third building in the next few years.</p><p>As for now, the building may be very old (as evident by the elevators) but Tibault and the team have obviously done a great job of making a modern space out of it. I found it comfortable and comparable to the other spaces I checked out.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>CowOrKingSpaceByPuzl</td><td>72.04 Mbps</td><td>47.09 Mbps</td><td>4 ms</td><td>3:51 pm</td></tr></tbody></table><!--kg-card-end: html--><h3 id="from-barista-coffee-and-more-cafe"><a href="https://www.baristacoffeesofia.com/" rel="noopener">From Barista Coffee and More (Cafe)</a></h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Barista-Coffee-and-More-1024x576.jpg" class="kg-image" alt="Sofia Wrap-Up: 2 Weeks of Summer in the Bulgarian Capital" loading="lazy" width="1024" height="576" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Barista-Coffee-and-More-1024x576.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Barista-Coffee-and-More-1024x576.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Barista-Coffee-and-More-1024x576.jpg 1024w"></figure><p>In terms of Cafes, <a href="https://www.baristacoffeesofia.com/" rel="noopener">Barista Coffee and More</a> was the one that showed the most potential and when I visited the space, I was not disappointed.</p><p>It appears a common place to get work done as evident from the amount of laptops and the fact that I was approached by a subscriber who happened to be working there.</p><p>It doesn&apos;t have the speediest internet but for a short-term stay in the city, it&apos;s well-priced, well-located and well-equipped for remote work or study.</p><!--kg-card-begin: html--><table><tbody><tr><td colspan="5"><strong>Speed Test Results</strong></td></tr><tr><td><strong>SSID</strong></td><td><strong>DOWNLOAD</strong></td><td><strong>UPLOAD</strong></td><td><strong>PING</strong></td><td><strong>TIME RECORDED</strong></td></tr><tr><td>BaristaCoffee</td><td>3.43 Mbps</td><td>5.51 Mbps</td><td>2 ms</td><td>3:32pm</td></tr></tbody></table><!--kg-card-end: html--><h2 id="cost-of-living">Cost of Living</h2><p>In terms of our experience in Eastern Europe so far, Sofia seems to sit somewhere in the middle of <a href="https://christhefreelancer.com/budapest-for-digital-nomads/">Budapest</a> and <a href="https://christhefreelancer.com/belgrade-for-digital-nomads/">Belgrade</a> for cost of living.</p><p>Let&apos;s run through some common nomad expenses.</p><h3 id="accomodation">Accomodation</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Our-Apartment-in-Sofia.png" class="kg-image" alt="Sofia Wrap-Up: 2 Weeks of Summer in the Bulgarian Capital" loading="lazy" width="1093" height="746" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Our-Apartment-in-Sofia.png 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Our-Apartment-in-Sofia.png 1000w, https://www.christhefreelancer.com/content/images/2021/06/Our-Apartment-in-Sofia.png 1093w"></figure><p>For our two week stay in Sofia, we (once again) booked an apartment from <a href="http://www.airbnb.com/c/cdodd18?s=8" rel="noopener">AirBnB</a>.</p><p>Having no connections or previous experience in Sofia, we elected to take the easy and secure option but of course, if you can afford the inconvenience, I&#x2019;m sure the price of renting an apartment like ours would be remarkably lower.</p><h3 id="food-drink">Food &amp; Drink</h3><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.christhefreelancer.com/content/images/2021/06/Food-and-Drink-in-Sofia-1024x640.jpg" class="kg-image" alt="Sofia Wrap-Up: 2 Weeks of Summer in the Bulgarian Capital" loading="lazy" width="1024" height="640" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Food-and-Drink-in-Sofia-1024x640.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Food-and-Drink-in-Sofia-1024x640.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Food-and-Drink-in-Sofia-1024x640.jpg 1024w"></figure><p>As a more modern European city, we found the selection of food and drink to be a bit more diverse than <a href="https://christhefreelancer.com/belgrade-for-digital-nomads/">somewhere like Serbia</a> but still very lacking when it came to Asian food especially.</p><p>Walking around the city, the two foods Sofian restaurants seemed to serve most often were burgers and pizza but there are of course, other options.</p><p>Here&#x2019;s some examples of meals I had out:</p><ul><li>Breakfast for 2 at <em>Rainbow Factory</em> = 17.40 BGN (~$10.50 USD)</li><li>A meat dish and a Salad at <em>Happy </em>= 15.98 BGN (~$9.60 USD)</li><li>Sushi dinner for 2 at <em>The Sushi Bar </em>= 57.90 (~$35 USD)</li><li>A big meat plate with Salad &amp; Potatoes (from a shopping mall food court) = 8.90 BGN (~$5.40 USD)</li><li>A burger and fries at <em>Skaptoburger </em>= 10.80 BGN (~$6.55 USD)</li></ul><p>Overall, we found the prices quite comparable to <a href="https://christhefreelancer.com/belgrade-for-digital-nomads/">Belgrade</a> but when it came to Fast Food chains, the prices were way higher for some reason. We had McDonalds and KFC and both times it came out to 10 lev or more ($6+).</p><h3 id="groceries">Groceries</h3><p>I don&apos;t know whether it&apos;s because it took time for me to get used to the new currency but the super market prices in Sofia felt noticeably more expensive than<a href="https://christhefreelancer.com/belgrade-for-digital-nomads/"> in Belgrade</a>.</p><p>When I decided to convert the prices into USD and <em>compare item-for-item </em>however, I found the prices to be quite similar.</p><p>Here are some of the prices I recorded across the two supermarket brands, Lidl and Billa:</p><!--kg-card-begin: html--><table><tbody><tr><td style="text-align: center;" colspan="2"><strong>Fruits</strong></td><td style="text-align: center;" colspan="2"><strong>Vegetables</strong></td></tr><tr><td>Bannas</td><td>$1.68 USD/kg</td><td>Onions</td><td>$0.45 USD/kg</td></tr><tr><td>Apples</td><td>$1.50 USD/kg</td><td>Tomatoes</td><td>$0.90 USD/kg</td></tr><tr><td>Avocados</td><td>$1.80 USD</td><td>Potatoes</td><td>$0.35 USD/kg</td></tr><tr><td style="text-align: center;" colspan="2"><strong>Meats</strong></td><td>Carrots</td><td>$0.71 USD/kg</td></tr><tr><td>Beef Mince</td><td>$6 USD/kg</td><td>Ice Berg Lettuce</td><td>$0.90 USD</td></tr><tr><td>Pork Mince</td><td>$4.20 USD/kg</td><td>&#xA0;</td><td>&#xA0;</td></tr><tr><td style="text-align: center;" colspan="4"><strong>Other</strong></td></tr><tr><td>Eggs</td><td>6 for $1.02 USD</td><td>Bread</td><td>$0.45 USD per loaf</td></tr></tbody></table><!--kg-card-end: html--><p><em>*Using the current mid-market rate of 1.66 Bulgarian Lev to 1 USD</em></p><h3 id="transportation">Transportation</h3><p>Unlike in Belgrade where we took taxis everywhere, in Sofia we found it much easier to use public transport.</p><p>The route maps may not yet be on Google Maps - <em><a href="https://www.moovitapp.com/" rel="noopener">Moovit</a> is the app to check metro, tram and bus routes - </em>but the actual system of public transport is very reliable and exapnsive in Sofia.</p><p>The only times we needed to catch taxis were to and from the airport as we had our bags and couldn&apos;t afford to waste time. Both ways, the journey cost about 13 lev (~$7.80 USD) each.</p><p>As for the public transport system, a single journey costs only 1.6 lev (~$1 USD) but be warned! The buses only take coins and don&apos;t return any change.</p><h3 id="drinking-alcohol-coffee-phones-and-gym">Drinking Alcohol &amp; Coffee, Phones and Gym</h3><p>I&apos;m lumping these categories together as these were all minor expenses but nethertheless, ones you might be concerned about.</p><p><strong>Drinking alcohol </strong>as you might expect from Eastern Europe, is quite cheap, especially when drinking beer. Half a litre of beer at restaurant like <em>Happy (mentioned early)</em> was only 3.50 lev ($2.10 USD) and from the store, you can find bottles anywhere from 0.80 to 2 lev ($0.50 - $1.20 USD).</p><p><strong>Coffee</strong> was just as expensive as it was in <a href="https://christhefreelancer.com/belgrade-for-digital-nomads/">Belgrade</a> but a little cheaper than <a href="https://christhefreelancer.com/budapest-for-digital-nomads/">Budapest</a> at around 2.50-3 lev ($1.50 - 1.80 USD).</p><p>We got our <strong>phone plans</strong> from a provider called Mtel for only around $4 USD and it included 4G of data.</p><p>Finally for <strong>gyms, </strong>my friend Vlad helped me get setup at an awesome gym called <a href="http://www.pulsefit.bg/" rel="noopener">Pulse Fitness and Spa</a> for one week at only 4 lev ($2.40). The only issue was that it required a bus ride and walk of 20-40mins to get to the gym each time I wanted to go.</p><p>Gyms closer in the city include <a href="https://www.facebook.com/silvergym.sofia" rel="noopener">Silver Gym</a> and <a href="https://www.facebook.com/BelizeFitness/" rel="noopener">Fitness Belize</a>.</p><p>Silver Gym made me a price on the spot of 20 lev (~$12 USD) per week and when I asked about a month, they said anywhere from 50-80 lev (~$30-50 USD). This was unlike Fitness Belize who had a set price of about 6 lev per session ($3.60 USD) and of course, rates for monthlies as well (Sorry! I lost the price sheet!) .</p><p><em>BTW: You can see a tour of Pulse Fitness and Spa <a href="https://www.youtube.com/watch?v=_rEFCakWdO0&amp;" rel="noopener">in this video</a>.</em></p><h2 id="lifestyle-and-things-to-do">Lifestyle and Things to Do</h2><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.christhefreelancer.com/content/images/2021/06/Sofia-Landmarks-1024x640.jpg" class="kg-image" alt="Sofia Wrap-Up: 2 Weeks of Summer in the Bulgarian Capital" loading="lazy" width="1024" height="640" srcset="https://www.christhefreelancer.com/content/images/size/w600/2021/06/Sofia-Landmarks-1024x640.jpg 600w, https://www.christhefreelancer.com/content/images/size/w1000/2021/06/Sofia-Landmarks-1024x640.jpg 1000w, https://www.christhefreelancer.com/content/images/2021/06/Sofia-Landmarks-1024x640.jpg 1024w"><figcaption>From top-left to bottom-right: The National Palace of Culture, The Cathedral Saint Alexander Nevsky, the National Art Gallery and the lovely walking street, Vitosha</figcaption></figure><p>The list of top attractions in Sofia include the Cathedral Saint Alexander Nevsky, the Vitosha Mountain and the Vitosha Boulevard, most of which I came across during chance encounters of walking around the city.</p><p>If you like history, there are plenty of historical sites and museums in Sofia but to me, the biggest defining factor of the city is the Vitosha mountain, a sight that follows you almost everywhere you go. Unfortunately, I&apos;m still yet to get a close-up of the mountain but if I was here in Sofia as a tourist, I would have definitely checked it out.</p><p>In terms of long-term lifestyle, it&apos;s a pretty standard European city. The metro is great for getting around, there&apos;s plenty of cafe/restaurants in the city centre and very good internet. Not much to complain about!</p><h2 id="final-thoughts">Final Thoughts</h2><p>Sofia is a historical, yet modern Eastern European city that lies within the EU but not in Schegen zone.</p><p>As I mentioned in the introduction, what makes Sofia of interest to digital nomads is the low cost of living, the great infrastructure (including the internet) and the position outside the Schegen zone. All of which make Sofia a great option to spend more time in Europe while getting work done with a comfortable standard of living.</p><p>For me personally, there&apos;s nothing overly special that draws me to the city as there&apos;s no organised nomad community or networking opportunities. That being said, there are a bunch of digital teams flooding here for the excellent conditions as evident by the booming tech scene.</p><p>The only major downside to living in Bulgaria is the Cyrillic alphabet that they use in their writing, as apposed to Latin alphabet that we use in English. It&apos;s not a huge deal but it does make translating and understanding signage much more difficult.</p><p>Overall however, Sofia was great for a bit of time outside of the Schegen zone and good contrast to <a href="https://christhefreelancer.com/belgrade-for-digital-nomads/">Belgrade</a> and <a href="https://christhefreelancer.com/budapest-for-digital-nomads/">Budapest</a>.</p><p>Until next time,</p><p>Chris</p>]]></content:encoded></item></channel></rss>