<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ilesh Mistry</title>
    <description>The latest articles on Forem by Ilesh Mistry (@ileshmistry).</description>
    <link>https://forem.com/ileshmistry</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F253%2Fdeed5ebd-1676-491f-b202-b5b31c66d04e.jpg</url>
      <title>Forem: Ilesh Mistry</title>
      <link>https://forem.com/ileshmistry</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ileshmistry"/>
    <language>en</language>
    <item>
      <title>Adventures in Content Migration</title>
      <dc:creator>Ilesh Mistry</dc:creator>
      <pubDate>Mon, 15 Nov 2021 22:39:03 +0000</pubDate>
      <link>https://forem.com/ileshmistry/adventures-in-content-migration-15pg</link>
      <guid>https://forem.com/ileshmistry/adventures-in-content-migration-15pg</guid>
      <description>&lt;p&gt;Migration from one CMS to another gives many businesses pause for thought. You’ve invested a chunk of money in your current CMS but the time has come to modernise and move to a new platform. What adventures are you in for?&lt;/p&gt;

&lt;p&gt;In this article, I’ll take you through the process of migrating content to a headless CMS, introduce the possibilities and explain the reasoning behind every choice that we’ve made for our client.&lt;/p&gt;

&lt;h2&gt;
  
  
  Content Migration is inevitable
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8p6szi24lqhi0gx6392i.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8p6szi24lqhi0gx6392i.jpg" alt="Photo by Danique Photography on Unsplash, a hand on a dashboard" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A new platform means redevelopment which can be exciting and bring much-needed evolution and enhancement to your digital offering. But then you think about the content. You’ve built up a vast swathe of content over the years. Sure, some of it will be rewritten but you have a lot of content that needs moving. It’s a standard scenario in every re-platforming / rebuild project. Content migration is an unenviable task.&lt;/p&gt;

&lt;p&gt;We had a client on a legacy CMS which no longer fulfilled their digital needs. They were due to move to a brand-new site powered by a headless CMS &lt;a href="https://kontent.ai/" rel="noopener noreferrer"&gt;Kontent by Kentico&lt;/a&gt;. And as they had their old CMS for a long time, as you’d expect, they had generated a lot of content in it – most of which needed to be ported through to the new site.&lt;/p&gt;

&lt;p&gt;Obviously, they could have manually copied the content over, but they needed the site in place to hit the deadline for an annual awards competition. Missing that deadline was not an option and the manpower for manual transition wasn’t available.&lt;/p&gt;

&lt;h2&gt;
  
  
  The base requirements
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Filcldytsrnkdzjpw6yki.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Filcldytsrnkdzjpw6yki.jpg" alt="Photo by David Iskander on Unsplash, a female sitting down with a handbag on her lap holding a black book with the words 'THE MISSION JOURNAL' on it" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s start with the brief. As manual entry was off the table, I had to figure out the best option for getting legacy content into our Kontent instance. I had the following conditions and requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  It needs to be quick and easy.&lt;/li&gt;
&lt;li&gt;  Full custom tooling is not an option due to limited resources available.&lt;/li&gt;
&lt;li&gt;  There are 1000-2000 content items per content type.&lt;/li&gt;
&lt;li&gt;  There are 7 or 8 content types with different structures.&lt;/li&gt;
&lt;li&gt;  The data are not in a nice, structured format.&lt;/li&gt;
&lt;li&gt;  Data are in CSV files exported from the legacy CMS.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where do we start?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5vdmd7ygtvafsp8chsuc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5vdmd7ygtvafsp8chsuc.jpg" alt="Photo by Victoriano Izquierdo on Unsplash, a bearded man looking at refrigerated drinks" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, I always consider revisiting the content within the legacy CMS. A re-platform brings the opportunity to reimagine the digital offering, streamline the content and remove any unused and unnecessary items. I would heavily advise building out your Content Strategy before building the new website, carefully constructing a flexible and future-proof content architecture, roadmap, and plan.&lt;/p&gt;

&lt;p&gt;My first place to start was the overview page of &lt;a href="https://docs.kontent.ai/tutorials/set-up-kontent/import-content/overview" rel="noopener noreferrer"&gt;Kontent documentation for Importing content&lt;/a&gt; that covers a lot of the considerations you would need to take on board when selecting the right import process for you. I broke down the options we had into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Manual content entry by the client&lt;/li&gt;
&lt;li&gt;  Manual content entry by the agency&lt;/li&gt;
&lt;li&gt;  Using Kontent CLI&lt;/li&gt;
&lt;li&gt;  Using Google Sheets add-on&lt;/li&gt;
&lt;li&gt;  Using Management API&lt;/li&gt;
&lt;li&gt;  Using Migration tool built by Milan Lund&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, I’ll explain the options and their (dis)advantages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Manual content entry by the client
&lt;/h3&gt;

&lt;p&gt;Yep, I know this had already been ruled out but in the interests of completeness, I threw this back on the table.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;

&lt;tbody&gt;

&lt;tr&gt;

&lt;td&gt;Pros&lt;/td&gt;

&lt;td&gt;Cons&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;

+ No additional resource required on the agency side.
&lt;br&gt;
+ Opportunity to introduce content management training early on and with real-life content.
&lt;br&gt;
+ We can cleanse the data as they are entered.
&lt;br&gt;
+ No additional development/coding required.

&lt;/td&gt;

&lt;td&gt;

- Client needs to have a dedicated resource / team to make this happen.
&lt;br&gt;
- It’s very time intensive.
&lt;br&gt;
- Big risk of manual errors and inconsistency between pages due to human error.

&lt;/td&gt;

&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The disadvantages presented a real threat of not meeting the client’s deadline.&lt;/p&gt;

&lt;h3&gt;
  
  
  Manual content entry by the agency
&lt;/h3&gt;

&lt;p&gt;A similar approach to the previous one although this time we’re shifting the burden of work onto the agency.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;

&lt;tbody&gt;

&lt;tr&gt;

&lt;td&gt;Pros&lt;/td&gt;

&lt;td&gt;Cons&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;

+ No additional resource required on the client side.
&lt;br&gt;
+ We can cleanse the data as they are entered.
&lt;br&gt;
+ No additional development/coding required.
&lt;br&gt;
+ Zero stress for client – they hand the process off to the agency.

&lt;/td&gt;

&lt;td&gt;

- Agency needs to have a dedicated resource / team to make this happen.
&lt;br&gt;
- It’s very time intensive.
&lt;br&gt;
- Big risk of manual errors and inconsistency between pages due to human error.

&lt;/td&gt;

&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A similar set of disadvantages to the client handling the manual entry. Shifting it to the agency doesn’t necessarily solve the problem as they too have a finite number of resources and have the same time pressures. So, this was off the table as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Kontent CLI to migrate content
&lt;/h3&gt;

&lt;p&gt;Kontent has several &lt;a href="https://docs.kontent.ai/tutorials/set-up-kontent/import-content/overview#a-migration-tools" rel="noopener noreferrer"&gt;Migration Tools&lt;/a&gt;. However, not all of them support the desired import process from the legacy CMS. The first suitable candidate was the Kontent CLI, a command line tool that runs migration scripts. It supports both content types and content items as part of the migration into a Kontent project via the &lt;a href="https://docs.kontent.ai/reference/management-api-v2" rel="noopener noreferrer"&gt;Management API&lt;/a&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;

&lt;tbody&gt;

&lt;tr&gt;

&lt;td&gt;Pros&lt;/td&gt;

&lt;td&gt;Cons&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;

+ No need to dedicate resource to early content management training.
&lt;br&gt;
+ Zero stress for client – they hand the process off to the agency.
&lt;br&gt;
+ Reduced risk of errors and inconsistencies between pages.
&lt;br&gt;
+ Code structure changes can be handled in code, which is quick.

&lt;/td&gt;

&lt;td&gt;

- Agency needs to have a dedicated resource / team to make this happen.
&lt;br&gt;
- Need to train developers as not all of them have experience with TypeScript.
&lt;br&gt;
- Hard to reliably cleanse the data.
&lt;br&gt;
- Need to create a lot of custom code (CSV file reader, script for each content type, exceptions, etc)
&lt;br&gt;
- Complicated error handling during the import process with the large amount of content.

&lt;/td&gt;

&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Overall, there was a good chance we would have hit the deadline but my gut instinct was that this was a sledgehammer to crack a nut. It felt too heavyweight to solve the problem we had and if it went wrong, we wouldn’t be able to course-correct in time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Google Sheets add-on to migrate the content
&lt;/h3&gt;

&lt;p&gt;The Google Sheets add-on ingests a few settings and then imports the content from the sheet into Kontent. If you want to read more about this, check out &lt;a href="https://kontent.ai/blog/migrating-content-from-spreadsheets" rel="noopener noreferrer"&gt;this blog post by Eric Dugre&lt;/a&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;

&lt;tbody&gt;

&lt;tr&gt;

&lt;td&gt;Pros&lt;/td&gt;

&lt;td&gt;Cons&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;

+ No need to dedicate resource to early content management training.
&lt;br&gt;
+ Zero stress for client – they hand the process off to the agency.
&lt;br&gt;
+ Ideal for bulk imports.
&lt;br&gt;
+ Reduced risk of errors and inconsistencies between pages.
&lt;br&gt;
+ Code structure changes can be handled in the sheet.
&lt;br&gt;
+ We’re working with CSV files in Google Sheets which is feasible also for non-technical staff.
&lt;br&gt;
+ No additional development/coding required.
&lt;br&gt;
+ Possible to make mapping corrections

&lt;/td&gt;

&lt;td&gt;

- Not possible to cleanse the data automatically, it needs to be done manually.
&lt;br&gt;
- Uncertainty over whether the approach had been battle-tested with such a large migration.
&lt;br&gt;
- Uncertainty over the performance.

&lt;/td&gt;

&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So far, so good. Yes, there were some concerns, but this approach was ticking a lot of boxes and gave us a great chance of meeting the deadline with time to spare.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Management API to migrate the content
&lt;/h3&gt;

&lt;p&gt;This approach would have allowed us to utilise the powerful &lt;a href="https://docs.kontent.ai/reference/management-api-v2" rel="noopener noreferrer"&gt;Management API&lt;/a&gt; and create the content items via code. It has a similar approach to the Kontent CLI option above.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;

&lt;tbody&gt;

&lt;tr&gt;

&lt;td&gt;Pros&lt;/td&gt;

&lt;td&gt;Cons&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;

+ No need to dedicate resource to early content management training.
&lt;br&gt;
+ Zero stress for client – they hand the process off to the agency.
&lt;br&gt;
+ Reduced risk of errors and inconsistencies between pages.
&lt;br&gt;
+ Code structure changes can be handled in code, which is quick.
&lt;br&gt;
+ Officially recommended approach for large imports with varying types of content
&lt;br&gt;
+ Workload can be distributed among developers

&lt;/td&gt;

&lt;td&gt;

- Agency needs to have a dedicated resource / team to make this happen.
&lt;br&gt;
- Need to train developers on the Management API.
&lt;br&gt;
- Hard to reliably cleanse the data.
&lt;br&gt;
- Complicated error handling during the import process with the large amount of content.
&lt;br&gt;
- Uncertainty over the development time required.

&lt;/td&gt;

&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On paper this was the recommended approach and surely the winner. However, I was concerned about not meeting the project deadline.&lt;/p&gt;

&lt;p&gt;Using Migration Tool built by Milan Lund&lt;/p&gt;

&lt;p&gt;I also looked into the &lt;a href="https://github.com/MilanLund/migration-tool" rel="noopener noreferrer"&gt;Migration Tool&lt;/a&gt; created by &lt;a href="https://www.milanlund.com/home" rel="noopener noreferrer"&gt;Milan Lund&lt;/a&gt;, where this tool allows for either a JSON or CSV option to import into the project.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;

&lt;tbody&gt;

&lt;tr&gt;

&lt;td&gt;Pros&lt;/td&gt;

&lt;td&gt;Cons&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;

+ No need to dedicate resource to early content management training.
&lt;br&gt;
+ Zero stress for client – they hand the process off to the agency.
&lt;br&gt;
+ Ideal for bulk imports.
&lt;br&gt;
+ Reduced risk of errors and inconsistencies between pages.

&lt;/td&gt;

&lt;td&gt;

- Agency needs to have a dedicated resource / team to make this happen.
&lt;br&gt;
- At the time of my investigation, the CSV import process didn’t work well.
&lt;br&gt;
- Unclear error log outputs.
&lt;br&gt;
- Hard to reliably cleanse the data.
&lt;br&gt;
- Complicated error handling during the import process with the large amount of content.
&lt;br&gt;
- Uncertainty over whether the approach had been battle-tested with such a large migration.
&lt;br&gt;
- Concerns over the available support.

&lt;/td&gt;

&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;It’s a handy tool but there are multiple concerns about the performance and support.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making the right choice
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnd4r6qvnqgq6zmpe5fqw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnd4r6qvnqgq6zmpe5fqw.jpg" alt="Photo by Jake Ingle on Unsplash, a man standing on top on a hill with his arms in the air, wearing a rucksack, baseball hat and shorts. " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I made the decision to opt for the Google Sheets add-on. There was very little time needed to get accustomed to it and I was confident it would be easy to get it working and see results. As we had very little time to invest in building something for the import process, it felt like the perfect tool for us. Yet, like all import processes, it wasn't all plain sailing. We stumbled upon these challenges:&lt;/p&gt;

&lt;h3&gt;
  
  
  Rich text format
&lt;/h3&gt;

&lt;p&gt;Our initial challenge was to create a PoC to demonstrate how we could import 50-100 content items. Straight away we ran into an issue with Rich Text content. The export process from the legacy CMS didn't provide the content in a valid HTML format – essentially some missing closing HTML tags and invalid HTML markup. This was fixed on the export side with a few manual tweaks to the CSV.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance and batch processing
&lt;/h3&gt;

&lt;p&gt;We only tried a sample of 20 items as an initial test and it was failing due to the requests being made. This was a big concern. If 20 is failing, what about 1000-2000 items? I reached out to the Kontent Support team and the conversation was picked up by Eric Dugre, the author of the Google Sheets add-on. He investigated the issue promptly and addressed it by increasing the batch processing and going further to also improve the general usability of the tool itself. Both of that helped us a lot as the performance posed the biggest issue for us.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Some of the adjustments required approval from Google – it is still a Google Sheets add-on. Even though the add-on author’s reaction was prompt, this was something we needed to factor into our timings.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Random GUID generated
&lt;/h3&gt;

&lt;p&gt;Then, we looked at how to link content items together. For that, each content item should have a unique identifier, but that wasn’t our case. We had to generate a GUID for every item ourselves right within Google Sheets. This is the formula we used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Public Function CreateGUID(Prefix as String) As String  
 Do While Len(CreateGUID) &amp;lt; 32  
   If Len(CreateGUID) = 16 Then  
     '17th character holds version information  
     CreateGUID = CreateGUID &amp;amp; Hex$(8 + CInt(Rnd * 3))  
   End If

   CreateGUID = CreateGUID &amp;amp; Hex$(CInt(Rnd * 15))  
 Loop  
 CreateGUID = Prefix + Mid(CreateGUID, 1, 8) &amp;amp; "-" &amp;amp; Mid(CreateGUID, 9, 4) &amp;amp; "-" &amp;amp; Mid(CreateGUID, 13, 4) &amp;amp; "-" &amp;amp; Mid(CreateGUID, 17, 4) &amp;amp; "-" &amp;amp; Mid(CreateGUID, 21, 12)  
End Function
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Note: You can create this in Excel, within Tools -&amp;gt; Macro -&amp;gt; Visual Basic Editor and create the above function.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This will allow you to generate random GUIDs for any row that uses 'CreateGUID('news_id_')'. I put an additional 'prefix' parameter to the function to be able to identify the appropriate content item and can link it to another one. It’s good to keep related content items within the same Excel worksheet as then you can create an Excel Forumla to bring the reference ID into the linked content item.&lt;/p&gt;

&lt;p&gt;Once this all was in place, we ran the different imports into the Kontent project. Then the client made the necessary last-minute amends and final touches to the content and we didn’t really experience any other issues. Mission accomplished.&lt;/p&gt;

&lt;h2&gt;
  
  
  In conclusion…
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0kezw1xx884p2bc3egb8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0kezw1xx884p2bc3egb8.jpg" alt="Photo by Ian Stauffer on Unsplash, a man sitting on some large rocks with one arm in the air surrounded by clouds" width="400" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I introduced six ways to migrate content to Kontent and explained the pros and cons of each approach. I hope my adventures in content migration will help you should you come across a situation like this. In our case, the Google Sheets add-on was the best approach. It allowed us to hit the deadline way in advance which was a massive success for us and the client.&lt;/p&gt;

&lt;p&gt;And, once more for those in the back, my recommendation when moving to a new CMS is to always have a good content strategy in place. Consider revisiting the content you already have and streamlining it in the process.&lt;/p&gt;

&lt;p&gt;If you need any additional advice on my adventures going through the different content migration options, then don’t hesitate to get in touch with me via &lt;a href="mailto:ilesh.m@mmtdigital.co.uk"&gt;email&lt;/a&gt;, &lt;a href="https://twitter.com/IleshMistry" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, or just pop a question on the &lt;a href="https://discord.gg/nBKaHAFq4N" rel="noopener noreferrer"&gt;Kontent Discord&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>kontent</category>
      <category>cms</category>
      <category>contentmigration</category>
    </item>
    <item>
      <title>MMT Tech Meetup February 2021 - GatsbyJS</title>
      <dc:creator>Ilesh Mistry</dc:creator>
      <pubDate>Mon, 01 Mar 2021 20:59:13 +0000</pubDate>
      <link>https://forem.com/ileshmistry/mmt-tech-meetup-february-2021-gatsbyjs-49pk</link>
      <guid>https://forem.com/ileshmistry/mmt-tech-meetup-february-2021-gatsbyjs-49pk</guid>
      <description>&lt;h2&gt;
  
  
  MMT Tech Meetup - February 2021 featuring GatsbyJS
&lt;/h2&gt;

&lt;p&gt;Meetup agenda:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I Have a Hammer - Scott Spence - (Web Developer at Karmarama)&lt;/li&gt;
&lt;li&gt;Using the new GatsbyImage and StaticImage components - Ondrej Polesny (Developer Evangelist at Kentico)&lt;/li&gt;
&lt;li&gt;Presenting Without Sharing My Screen - Samuel Larsen-Disney (UX Engineer at American Express)&lt;/li&gt;
&lt;li&gt;A Gatsby Intro - Kyle Mathews (CEO and Co-founder of Gatsby)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the recording from the tech meetup &lt;a href="https://www.youtube.com/watch?v=km2KsVnlM4I" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=km2KsVnlM4I&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=km2KsVnlM4I" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk6jj4mhtczf2qdfa87va.png" alt="MMT Tech Meetup - February 2021 - Featuring GatsbyJS" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the recording from the MMT Tech Meet-up where we have the following content in this video:&lt;br&gt;
00:00:00​ - Welcome to the MMT Tech Meetups by Ilesh Mistry&lt;br&gt;
00:03:10​ - Introduction to GatsbyJS by Ilesh Mistry&lt;br&gt;
00:09:13​ - I Have a Hammer by Scott Spence&lt;br&gt;
00:33:34​ - Using the new GatsbyImage and StaticImage components by Ondrej Polesny&lt;br&gt;
00:55:30​ - Presenting Without Sharing My Screen by Samuel Larsen-Disney&lt;br&gt;
01:16:28​ - A Gatsby Intro and Q&amp;amp;A by Kyle Mathews&lt;br&gt;
01:46:37​ - End&lt;/p&gt;

&lt;p&gt;*** Bonus *** &lt;br&gt;
Kentico Kontent CMS - 90 days extended trial - &lt;a href="http://bit.ly/KontentMVP" rel="noopener noreferrer"&gt;http://bit.ly/KontentMVP&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gatsby</category>
      <category>mdx</category>
      <category>meetup</category>
    </item>
    <item>
      <title>MMT Tech Meetup January 2021 - Mental Health &amp; Wellbeing</title>
      <dc:creator>Ilesh Mistry</dc:creator>
      <pubDate>Tue, 09 Feb 2021 15:44:02 +0000</pubDate>
      <link>https://forem.com/ileshmistry/mmt-tech-meetup-january-2021-mental-health-wellbeing-5gi0</link>
      <guid>https://forem.com/ileshmistry/mmt-tech-meetup-january-2021-mental-health-wellbeing-5gi0</guid>
      <description>&lt;h2&gt;
  
  
  MMT Tech Meetup - January 2021 featuring Mental Health &amp;amp; Wellbeing
&lt;/h2&gt;

&lt;p&gt;Mental Health &amp;amp; Wellbeing are important aspects of our lives and can cause strains on us. It's important to understand that you are not alone and if you can talk about it, it will help. &lt;/p&gt;

&lt;p&gt;"We all have mental health. But not all of us live with good mental health" - Mental Health Foundation&lt;/p&gt;

&lt;p&gt;Meetup agenda:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Experiences from launching a site before Christmas (Ilesh Mistry)&lt;/li&gt;
&lt;li&gt;Wellbeing at work (Charlotte Murdin)&lt;/li&gt;
&lt;li&gt;Mental Health hygiene for practitioners (Beata Bikowska)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the recording from the tech meetup &lt;a href="https://www.youtube.com/watch?v=M9-3eLXLBKM" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=M9-3eLXLBKM&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=M9-3eLXLBKM" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fthr4e5qpamso7vsp1e6g.png" alt="MMT Tech Meetup - February 2021 - Featuring Mental Health &amp;amp; Wellbeing" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the recording from the MMT Tech Meet-up where we have the following content in this video:&lt;br&gt;
00:00:00​ - Welcome to the MMT Tech Meetups by Ilesh Mistry&lt;br&gt;
00:03:10​ - Experiences from launching a site before Christmas by Ilesh Mistry&lt;br&gt;
00:29:11​ - Wellbeing at work by Charlotte Murdin&lt;br&gt;
00:54:22​ - Mental Health hygiene for practitioners by Beata Bikowska&lt;br&gt;
01:33:58​ - End&lt;/p&gt;

&lt;p&gt;Useful links&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.newstatesman.com/politics/health/2021/01/it-s-not-just-you-why-current-lockdown-having-extreme-effect-mental-health" rel="noopener noreferrer"&gt;https://www.newstatesman.com/politics/health/2021/01/it-s-not-just-you-why-current-lockdown-having-extreme-effect-mental-health&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mentalhealth.org.uk/" rel="noopener noreferrer"&gt;https://www.mentalhealth.org.uk/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Slides&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Launching a website before Christmas (&lt;a href="https://www.slideshare.net/IleshMistry/launching-a-website-before-xmas" rel="noopener noreferrer"&gt;https://www.slideshare.net/IleshMistry/launching-a-website-before-xmas&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mentalhealth</category>
      <category>wellbeing</category>
      <category>meetup</category>
    </item>
    <item>
      <title>MMT Tech Meetup November 2020 - Website Accessibility</title>
      <dc:creator>Ilesh Mistry</dc:creator>
      <pubDate>Fri, 04 Dec 2020 20:47:36 +0000</pubDate>
      <link>https://forem.com/ileshmistry/mmt-tech-meetup-november-2020-website-accessibility-4p4j</link>
      <guid>https://forem.com/ileshmistry/mmt-tech-meetup-november-2020-website-accessibility-4p4j</guid>
      <description>&lt;h2&gt;
  
  
  MMT Tech Meetup - November 2020 featuring Website Accessibility
&lt;/h2&gt;

&lt;p&gt;Website Accessibility plays a big role in development these days and it is essential to make sure what you build is available and useable by everyone. Leaving key aspects out of your development process, like accessibility, can affect people accessing your content, which is not recommended. It should be considered best practice to make sure your site has basic accessibility features. The meetup below goes through some of the things you should be considering.  &lt;/p&gt;

&lt;p&gt;Meetup agenda:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why be accessible? - (Graham Rees-Evans - Technical Manager, Consultant, and Training - Shaw Trust)&lt;/li&gt;
&lt;li&gt;Common Accessibility mistakes - (Ilesh Mistry - CMS Specialist and Kontent MVP - MMT Digital)&lt;/li&gt;
&lt;li&gt;How to use pa11y-ci to prevent accessibility issues? (Tomas Jakelis - Front-End Engineer - MMT Digital)&lt;/li&gt;
&lt;li&gt;Using Persona Profiles for Accessible Websites (Nadia Rasul - Sr. Front-end Developer &amp;amp; Accessibility Lead - Reason One)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the recording from the tech meetup &lt;a href="https://www.youtube.com/watch?v=idwE0ENNoRA" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=idwE0ENNoRA&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=idwE0ENNoRA" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn3mmy77aay7rsre2qwis.png" alt="MMT Tech Meetup - November 2020 - Featuring Website Accessibility" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the recording from the MMT Tech Meetup where we have the following content in this video:&lt;br&gt;
00:00:00 - Welcome to the MMT Tech Meetups by Ilesh Mistry&lt;br&gt;
00:03:12 - Why be accessible? by Graham Rees-Evans&lt;br&gt;
00:29:15 - Common Accessibility mistakes by Ilesh Mistry&lt;br&gt;
00:59:35 - How to use pa11y-ci to prevent accessibility issues? by Tomas Jakelis&lt;br&gt;
01:32:42 - Using Persona Profiles for Accessible Websites by Nadia Rasul&lt;br&gt;
01:59:47 - End&lt;/p&gt;

&lt;p&gt;Useful links&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Common Accessibility Mistakes slides (&lt;a href="https://www2.slideshare.net/IleshMistry/common-accessibility-mistakes-239544831" rel="noopener noreferrer"&gt;https://www2.slideshare.net/IleshMistry/common-accessibility-mistakes-239544831&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Common Accessibility Mistakes carousel video 
Video - Marcy Sutton: ”Garbage Pail Components” — Clarity 2019 
&lt;a href="https://youtu.be/MVzihFS1UQU?t=1208" rel="noopener noreferrer"&gt;https://youtu.be/MVzihFS1UQU?t=1208&lt;/a&gt; - 00:20:20 to see the Carousel example from Ilesh's slides &lt;/li&gt;
&lt;li&gt;How to use pa11y-ci to prevent accessibility issues slides (&lt;a href="https://www2.slideshare.net/TomasJakelis/mmt-tech-meetup-november-2020" rel="noopener noreferrer"&gt;https://www2.slideshare.net/TomasJakelis/mmt-tech-meetup-november-2020&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Using Persona Profiles for Accessible Websites slides (&lt;a href="https://www2.slideshare.net/nrasul/using-persona-profiles-for-accessible-websites" rel="noopener noreferrer"&gt;https://www2.slideshare.net/nrasul/using-persona-profiles-for-accessible-websites&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>websiteaccessibility</category>
      <category>a11y</category>
      <category>automatedtesting</category>
    </item>
    <item>
      <title>MMT Tech Meetup October 2020 - Featuring NightwatchJS, CodeceptJS and Cypressio</title>
      <dc:creator>Ilesh Mistry</dc:creator>
      <pubDate>Mon, 02 Nov 2020 20:51:18 +0000</pubDate>
      <link>https://forem.com/ileshmistry/mmt-tech-meetup-october-2020-featuring-nightwatchjs-codeceptjs-and-cypressio-2777</link>
      <guid>https://forem.com/ileshmistry/mmt-tech-meetup-october-2020-featuring-nightwatchjs-codeceptjs-and-cypressio-2777</guid>
      <description>&lt;h2&gt;
  
  
  MMT Tech Meetup - October 2020 featuring NightwatchJS, CodeceptJS and Cypressio
&lt;/h2&gt;

&lt;p&gt;We had the following speakers for this meetup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testing with NightwatchJS - (Ilesh Mistry, CMS Specialist, MMT Digital)&lt;/li&gt;
&lt;li&gt;Introduction to CodeceptJS (Radhika Vanteru, Test Automation Engineer, MMT Digital)&lt;/li&gt;
&lt;li&gt;CodeceptJS + Playwright (Michael Bodnarchuk, Owner of CodeCeptJS)&lt;/li&gt;
&lt;li&gt;Cypress (Owen Ayres, Principal Engineer, MMT Digital)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the recording from the tech meetup &lt;a href="https://www.youtube.com/watch?v=nnh_Dwj1uTY" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=nnh_Dwj1uTY&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=nnh_Dwj1uTY" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqcultcb75kf92vv1sgo6.png" alt="MMT Tech Meetup - October 2020 - Featuring NightwatchJS, CodeceptJS and Cypressio" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the recording from the MMT Tech Meetup where we have the following content in this video:&lt;br&gt;
00:00:00 - Welcome to the MMT Tech Meetups by Ilesh Mistry&lt;br&gt;
00:02:23 - Testing with NightwatchJS by Ilesh Mistry&lt;br&gt;
00:34:40 - Introduction to CodeceptJS by Radhika Vanteru&lt;br&gt;
00:54:15 - CodeceptJS + Playwright by Michael Bodnarchuk&lt;br&gt;
01:28:18 - Cypress by Owen Ayres&lt;br&gt;
01:57:44 - End&lt;/p&gt;

</description>
      <category>nightwatchjs</category>
      <category>codeceptjs</category>
      <category>cypress</category>
      <category>automatedtesting</category>
    </item>
    <item>
      <title>MMT Tech Meet-up September 2020 - Featuring Svelte</title>
      <dc:creator>Ilesh Mistry</dc:creator>
      <pubDate>Mon, 28 Sep 2020 21:40:22 +0000</pubDate>
      <link>https://forem.com/ileshmistry/mmt-tech-meet-up-september-2020-featuring-svelte-1coc</link>
      <guid>https://forem.com/ileshmistry/mmt-tech-meet-up-september-2020-featuring-svelte-1coc</guid>
      <description>&lt;h2&gt;
  
  
  MMT Tech Meet-Up - September 2020 featuring Svelte
&lt;/h2&gt;

&lt;p&gt;This meet-up featured Svelte and Sapper topics. &lt;/p&gt;

&lt;p&gt;We had the following speakers for this meet-up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction to Svelte with Ilesh Mistry (&lt;a class="mentioned-user" href="https://dev.to/ileshmistry"&gt;@ileshmistry&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Looking into the Svelte compiler with Tan Li Hau (&lt;a class="mentioned-user" href="https://dev.to/tanhauhau"&gt;@tanhauhau&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;How I built a Sapper blog with all the must-have features with Markus Hatvan (&lt;a class="mentioned-user" href="https://dev.to/mhatvan"&gt;@mhatvan&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Sapper JAMstack - Trello as a blog backend with Shriji Kondan (&lt;a class="mentioned-user" href="https://dev.to/shriji"&gt;@shriji&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the recording from the tech meet-up &lt;a href="https://youtu.be/xfwEvHL8FlQ" rel="noopener noreferrer"&gt;https://youtu.be/xfwEvHL8FlQ&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/xfwEvHL8FlQ" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft96e1vgitqzuv6ys9onq.png" alt="MMT Tech Meet-up - Sept 2020 - Featuring Svelte" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the recording from the MMT Tech Meet-up where we have the following content in this video:&lt;br&gt;
00:00:00 - Welcome to the MMT Tech Meet-ups by Ilesh Mistry&lt;br&gt;
00:02:40 - Introduction to Svelte by Ilesh Mistry&lt;br&gt;
00:20:00 - Looking into the Svelte compiler by Tan Li Hau&lt;br&gt;
00:44:30 - How I built a Sapper blog with all the must-have features by Markus Hatvan&lt;br&gt;
01:06:20 - Sapper JAMstack - Trello as a blog backend by Shriji Kondan&lt;br&gt;
01:38:13 - End&lt;/p&gt;

&lt;h3&gt;
  
  
  *** Bonus extended trial ***
&lt;/h3&gt;

&lt;p&gt;Kentico Kontent - 90 days extended trial - &lt;a href="http://bit.ly/KontentMVP" rel="noopener noreferrer"&gt;http://bit.ly/KontentMVP&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Useful links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Introduction to Svelte slides - &lt;a href="https://www.slideshare.net/IleshMistry/introduction-to-svelte-mmt-tech-meetup-september-2020" rel="noopener noreferrer"&gt;https://www.slideshare.net/IleshMistry/introduction-to-svelte-mmt-tech-meetup-september-2020&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Looking into the Svelte compiler slides - &lt;a href="https://lihautan.com/looking-into-the-svelte-compiler/" rel="noopener noreferrer"&gt;https://lihautan.com/looking-into-the-svelte-compiler/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How I built a Sapper blog with all the must-have features slides - &lt;a href="https://www.beautiful.ai/player/-MI0JqYe0oPmQRIf08NQ" rel="noopener noreferrer"&gt;https://www.beautiful.ai/player/-MI0JqYe0oPmQRIf08NQ&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sapper JAMstack - Trello as a blog backend slides - &lt;a href="https://docs.google.com/presentation/d/1abSuDWFVKXu2CSuJ1svApxQPPtag4QUnf7iR0QGdOPA/edit?usp=sharing" rel="noopener noreferrer"&gt;https://docs.google.com/presentation/d/1abSuDWFVKXu2CSuJ1svApxQPPtag4QUnf7iR0QGdOPA/edit?usp=sharing&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>svelte</category>
      <category>javascript</category>
    </item>
    <item>
      <title>🤦‍♂️ Weekly fail (38/2020)</title>
      <dc:creator>Ilesh Mistry</dc:creator>
      <pubDate>Tue, 15 Sep 2020 09:33:54 +0000</pubDate>
      <link>https://forem.com/kontent_ai/weekly-fail-38-2020-3e1j</link>
      <guid>https://forem.com/kontent_ai/weekly-fail-38-2020-3e1j</guid>
      <description>&lt;p&gt;So I ran into a problem. I was getting numerous errors when trying to build my front end project. They had occurred from node modules either being outdated or dependencies not being there and as I was following different articles describing how to solve them, I soon had been installing plugins from 2 different package managers, &lt;a href="https://www.npmjs.com/" rel="noopener noreferrer"&gt;NPM&lt;/a&gt; and &lt;a href="https://classic.yarnpkg.com/en/" rel="noopener noreferrer"&gt;Yarn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As a result of this, I was getting lots of issues. It confused the hell out of me, but I then looked into my source files and noticed &lt;em&gt;.lock&lt;/em&gt; file for both package managers. Oops!&lt;/p&gt;

&lt;p&gt;So I resolved this by picking a specific package manager and sticking with it. I cleared out my &lt;em&gt;Node Modules&lt;/em&gt; folder and removed the &lt;em&gt;.lock&lt;/em&gt; files and reinstalled all the node modules (via &lt;strong&gt;npm install&lt;/strong&gt; or &lt;strong&gt;yarn&lt;/strong&gt;) and the errors didn’t persist :)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Lesson learned:&lt;/em&gt; &lt;strong&gt;Stick with one package manager. Always. I'm telling you.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>fail</category>
      <category>lessonslearned</category>
      <category>npm</category>
      <category>yarn</category>
    </item>
    <item>
      <title>MMT Tech Meet-up August 2020 - Featuring GatsbyJS</title>
      <dc:creator>Ilesh Mistry</dc:creator>
      <pubDate>Thu, 13 Aug 2020 20:43:43 +0000</pubDate>
      <link>https://forem.com/ileshmistry/mmt-tech-meet-up-august-2020-featuring-gatsbyjs-1keh</link>
      <guid>https://forem.com/ileshmistry/mmt-tech-meet-up-august-2020-featuring-gatsbyjs-1keh</guid>
      <description>&lt;h2&gt;
  
  
  MMT Tech Meet-up August 2020
&lt;/h2&gt;

&lt;p&gt;This meet-up featured GatsbyJS and various topics of discussion around it. &lt;/p&gt;

&lt;p&gt;We had the following speakers for this meet-up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gatsby Recipes with &lt;a href="https://www.ileshmistry.com" rel="noopener noreferrer"&gt;Ilesh Mistry&lt;/a&gt; (MMT Digital)&lt;/li&gt;
&lt;li&gt;Gatsby Update and Q&amp;amp;A with &lt;a href="https://www.gatsbyjs.com" rel="noopener noreferrer"&gt;Kyle Mathews&lt;/a&gt; (Gatsby)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the recording from the tech meet-up&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=TPNw7Z6wKy4" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnh9aya21ib11eyzrtl6z.jpg" alt="MMT Tech Meet-up - Aug 2020 - Featuring GatsbyJS" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Video contents are shown below:&lt;br&gt;
00:00:00 - Introduction to MMT Tech Meet-ups by Ilesh Mistry&lt;br&gt;
00:03:00 - Gatsby Recipes by Ilesh Mistry&lt;br&gt;
00:17:00 - Gatsby Update by Kyle Mathews &lt;br&gt;
00:38:45 - Gatsby Q&amp;amp;A with Kyle Mathews&lt;br&gt;
01:22:39 - End&lt;/p&gt;

&lt;h3&gt;
  
  
  *** Bonus extended trial ***
&lt;/h3&gt;

&lt;p&gt;Kentico Kontent - 90 days extended trial - &lt;a href="http://bit.ly/KontentMVP" rel="noopener noreferrer"&gt;http://bit.ly/KontentMVP&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Useful links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Gatsby Recipes with Gatsby CLI - &lt;a href="https://www.gatsbyjs.org/blog/2020-04-15-announcing-gatsby-recipes/" rel="noopener noreferrer"&gt;https://www.gatsbyjs.org/blog/2020-04-15-announcing-gatsby-recipes/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Gatsby Recipes Alpha 2 - &lt;a href="https://www.gatsbyjs.org/blog/2020-08-04-Announcing-Gatsby-Recipes-Alpha-2/" rel="noopener noreferrer"&gt;https://www.gatsbyjs.org/blog/2020-08-04-Announcing-Gatsby-Recipes-Alpha-2/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>gatsby</category>
      <category>kontent</category>
    </item>
    <item>
      <title>8 content modelling pitfalls to avoid</title>
      <dc:creator>Ilesh Mistry</dc:creator>
      <pubDate>Mon, 06 Jul 2020 13:20:06 +0000</pubDate>
      <link>https://forem.com/ileshmistry/8-content-modelling-pitfalls-to-avoid-2hp2</link>
      <guid>https://forem.com/ileshmistry/8-content-modelling-pitfalls-to-avoid-2hp2</guid>
      <description>&lt;p&gt;Working with a headless CMS is often seen as the promised land, particularly from a developer’s perspective. The opportunity to open the development toybox and leverage the latest and greatest frameworks and patterns is mouth-watering.&lt;/p&gt;

&lt;p&gt;However, there is much more to a headless CMS implementation than just frameworks and patterns. Content Modelling is a fundamental activity within a successful delivery. Get this wrong and, as the project develops, you will run into major problems for both content editors and your development team. More importantly, it can lead your clients to feel that headless CMS is not going to deliver what you expected, and worse, make you feel that headless CMS was the wrong decision.&lt;/p&gt;

&lt;p&gt;Approaching content modelling in a thoughtful and futureproof manner is essential, acknowledging the capabilities and constraints of the CMS as well as identifying the optimum experience for clients.&lt;/p&gt;

&lt;p&gt;For those new to content modelling, have a read through the blog posts by &lt;a href="https://medium.com/school-of-content/content-modelling-in-kentico-kontent-part-1-f820ad45d98a" rel="noopener noreferrer"&gt;Michael Kinkaid - Content Modelling in Kentico Kontent&lt;/a&gt; and, bearing in mind the current climate, also check out &lt;a href="https://mmtdigital.co.uk/thinking/may-2020/five-tips-for-successful-remote-content-modelling" rel="noopener noreferrer"&gt;the best practices on remote content modelling&lt;/a&gt; from my colleague Rick Madigan.&lt;/p&gt;

&lt;h2&gt;
  
  
  My top 8 content modelling gotchas
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets-eu-01.kc-usercontent.com%3A443%2F17021868-aaab-01f5-57ef-cf27d8c987b3%2F67f2fce0-c892-4c48-b264-27be124e4e46%2Fpeople-discussing-work-in-a-meeting.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets-eu-01.kc-usercontent.com%3A443%2F17021868-aaab-01f5-57ef-cf27d8c987b3%2F67f2fce0-c892-4c48-b264-27be124e4e46%2Fpeople-discussing-work-in-a-meeting.jpg" alt="A group of people sitting in the meeting discussing something on the screen" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For those about to start content modelling, there are a range of approaches and these come with their own pitfalls. I'm going to talk about some of the things you would need to consider when modelling content. So, here are my top 8 content modelling gotchas:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1. Don’t build all the content models without communication&lt;/strong&gt;   
&lt;/h2&gt;

&lt;p&gt;Within any project, there are several involved parties – experience design, product backlogs, technical architecture, and editors to name a few. Charging straight into content modelling in isolation, without room for adjustments, forces you to create the models based purely on the information you may have at that point in time. But as we all know, projects are living, breathing things where change and evolution are commonplace. The models you create may not cover the lean MVP requirements established by the product owner and will likely miss the discussions and adjustments coming from refinement sessions.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Work closely with all members of the team and keep in constant communication, acknowledging the subtle shifts in requirements. Establish key meetings and touchpoints to not only plan out content models but also to implement in line with development, avoiding wasted time.  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. Avoid creating Content Types for individual Content Items&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;There are times within the content modelling where you need to create a Content Type purely for a single Content Item. An example of this could be the 'Home' type, where there are no other possible instances that could reuse that Content Type. However, there are times where you create a new Content Type for the sake of subtle differences. Think about this in the bigger picture and these micro-decisions start to spiral and, before you know it, you've created Content Types for singular Content Items and have an expansive list that is hard to manage, increasing the complexity for development.    &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Think about reusability wherever possible and, more importantly, be ruthless and actively seek out ways to consolidate content types.  &lt;/p&gt;

&lt;h2&gt;
  
  
  3. Add restrictions to the fields 
&lt;/h2&gt;

&lt;p&gt;When modelling content, it is really easy to get carried away and create Content Types without consideration towards the target audience - your content editors. You can get caught up in thinking about the fields/elements that are required based purely on the designs. However, this lack of consideration can lead to ruin. Not adding restrictions to them can cause catastrophic issues in the long run.&lt;/p&gt;

&lt;p&gt;For example, if you have a Hero Content Type and there is a limited amount of space for the title, summary text and CTA to show on the page, then not adding restrictions to the fields/elements would quickly break the content type output. As with the previous point, things can spiral quickly as you scale out to the bigger picture.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Carefully consider the different fields/elements in each content type and decide what character limits are needed, whether they need to be a required field or not, what sort of linked items are allowed within a given area and any other limitations to avoid your development team cowering under the desk from content model nightmares.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Avoid overcomplicating your content types 
&lt;/h2&gt;

&lt;p&gt;While reusability is a good practice, it is easy to abuse this and over-complicate your content modelling.&lt;/p&gt;

&lt;p&gt;For example, you may build a content type and then decide to create sub content types within it to match a specific design. There are of course valid scenarios for this behaviour but, if left unchecked and used without consideration, you can soon find yourself with parent content types containing an unnecessary number of child levels or a large amount of unnecessary linked items. The content editor is forced to double or triple their cognitive load dealing with an overly complex content type. Not only that, but you may have also just gone over the quota for Content Items or Content Types which could incur big costing implications.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendations&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Your target audience is your primary consideration. Go for simpler structured data content modelling where possible and be smart with the potential linked items you introduce. Above all, avoid content type 'whirlpools' where it can get messy and costly, fast! &lt;/p&gt;

&lt;h2&gt;
  
  
  5. Think first before using fixed Components in Rich Text fields/elements 
&lt;/h2&gt;

&lt;p&gt;When you model content, there could be scenarios when you need to use a content type in a single instance. Examples of this are a Tweet within blocks of copy or even an “interrupter call-to-action” inside a piece of text. It's tricky to model these out as they don't sit within a given position with the text. Essentially, the content editor has the power and decides where they want to use this. This is perfectly fine but it is vital that the content editors understand that Components (the name for these single-use content items) are not reusable - unless they are converted to be reusable.&lt;/p&gt;

&lt;p&gt;Also, spare a thought for the poor developers. If you need specific fields within the components to be included in the search as a filter, it is time-consuming and complex to trawl through the rich text field for modular content and extract the information you need.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendations&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Think carefully about where and when you allow for the use of Components within Rich Text and, of course, make sure you limit the number of different types that can be used. As always, think about the bigger picture and how it could impact features like Search. &lt;/p&gt;

&lt;h2&gt;
  
  
  6. Not considering the different channels you need to serve 
&lt;/h2&gt;

&lt;p&gt;An advantage of headless CMS is the ability to structure your content away from the traditional editorial experience – and all the limitations that a traditional CMS brings. Essentially, you are creating a content hub, managing the content within one place, and serving it to different channels.&lt;/p&gt;

&lt;p&gt;The potential is awesome but if you don’t approach it in the right way, you can easily dig yourself a big hole and potentially overshoot the boundaries of your pricing plan.&lt;/p&gt;

&lt;p&gt;The most common mistake is mixing content with channel variables. Let’s take the home page as an example. If you add all the metadata, page information, and web-specific information into the same Content Type as your homepage specific content, introducing a new channel is instantly problematic. Not only are you facing a nightmare separating out channel information from content but then content editors tackling different channels are falling over themselves. If you’re also introducing layout information into that Content Type (shame on you if you are!) that problem swiftly grows.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendations&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Strategy is everything. Don’t approach content modelling with tunnel vision. Yes, you may need to deliver an MVP but at least think about where this sits in the bigger picture. Thinking ahead about your channels will make your life easier in the long-term. And, definitely avoid layouts in your Content Types. That’s what a traditional CMS is for! &lt;/p&gt;

&lt;h2&gt;
  
  
  7. Utilising the projects and spaces you have available
&lt;/h2&gt;

&lt;p&gt;Headless CMS can be divided into open source and Software-as-a-Service (or Content-as-a-Service). For the latter, every vendor offers a range of subscription plans. Understanding what is available within those plans is important in making sure you can get the best out of the CMS. For example, if you have an unlimited amount of projects/areas in which you can create Content Types and Content Items, then use them! If you put all of your eggs into the one basket, then your basket is going to be very heavy and hard to manage.&lt;/p&gt;

&lt;p&gt;Consider a piece of content manageable text that appears in multiple places within your project. In &lt;a href="https://xperience.io/" rel="noopener noreferrer"&gt;Kentico Xperience&lt;/a&gt; you would call this a Resource String. Now imagine you have a load of content items representing various pages and components across the site. These smaller pieces quickly get lost. Folding everything into a single project isn’t necessarily the right approach – even if you have a great search and filter.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendations&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Think about your content structure and consider how different spaces can be used to provide a greater content experience. For example, a project/area for your “resource strings”, another for pure content for Site 1, another for pure content for Site X (assuming multiple websites) and another for shareable content between your different sites. Organising your content modelling and content this way will make it easier to manage in the long term. &lt;/p&gt;

&lt;h2&gt;
  
  
  8. Avoid the content hub overruling others when it is not needed 
&lt;/h2&gt;

&lt;p&gt;There comes a time when you are dealing with different data sources and the Headless CMS is not the only piece of the complex architectural jigsaw. This isn’t the old world. The CMS is no longer the central store of everything. If you’re using a commerce platform and have product information, you don’t need to replicate information into the CMS. There are smarter ways to work with Custom Elements which avoid the pain that comes with unnecessary duplication. It’s the same for any system in this new architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendations&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Map out your architecture thoroughly and understand where the core content and connecting data should sit. Clearly identify your master sources for each set of data and think about the mapping and relationships between data sets, e.g. core product information in PIM or ecommerce and associated rich media for products in CMS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;So, there you have it. That was my top 8 things to be aware of when undertaking content modelling. It can be time-consuming and challenging but also very rewarding when done correctly. As you can tell there are lots of ways to get it wrong and clearly-defined best practices can keep you on the straight and narrow. If you need any help with this contact me via email (&lt;a href="mailto:Ilesh.m@mmtdigital.co.uk"&gt;Ilesh.m@mmtdigital.co.uk&lt;/a&gt;) and I can help you with it further.&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;Originally posted on &lt;a href="https://www.ileshmistry.com/8-content-modelling-pitfalls-to-avoid/" rel="noopener noreferrer"&gt;https://www.ileshmistry.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kontent</category>
      <category>contentmodelling</category>
      <category>headlesscms</category>
      <category>contentstrategy</category>
    </item>
    <item>
      <title>Kentico EMS &amp; Kentico Kontent – A match made in content heaven?</title>
      <dc:creator>Ilesh Mistry</dc:creator>
      <pubDate>Tue, 24 Mar 2020 17:43:02 +0000</pubDate>
      <link>https://forem.com/ileshmistry/kentico-ems-kentico-kontent-a-match-made-in-content-heaven-3gfk</link>
      <guid>https://forem.com/ileshmistry/kentico-ems-kentico-kontent-a-match-made-in-content-heaven-3gfk</guid>
      <description>&lt;p&gt;As many of you will be aware, Kentico released a &lt;a href="https://www.kentico.com/blog/announcing-new-pricing-and-licensing-structure"&gt;new pricing model&lt;/a&gt; at the start of this year, restructuring their long-standing pricing model for the modern age. Alongside the traditional perpetual licence, this new pricing model introduces the concept of a &lt;a href="https://www.kentico.com/"&gt;Kentico EMS/DXP&lt;/a&gt; subscription. The subscription offers an intriguing new element – as well as Kentico EMS, you also get a subscription to &lt;a href="https://kontent.ai/"&gt;Kentico Kontent (CaaS)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;These are two very different products and you might be thinking how can both products work together? And why would you want to use them together? &lt;/p&gt;

&lt;p&gt;It’s an interesting question and trust me there are use cases for this scenario. In this blog post, I’m going to explain how they could work seamlessly together.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Two separate products
&lt;/h2&gt;

&lt;p&gt;Before we dive into how these products can work together, let’s first remind ourselves of what these products are &lt;a href="https://www.kentico.com/caas-and-dxp"&gt;Kentico EMS/DXP and Kentico Kontent&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kentico EMS/DXP
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fqqua3Z9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/392cef62-e067-4a0f-abab-3c65f8451f6c/Kentico-EMS-DXP.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fqqua3Z9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/392cef62-e067-4a0f-abab-3c65f8451f6c/Kentico-EMS-DXP.png" alt="Kentico EMS/DXP - all in one digital experience"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://kentico.com/"&gt;Kentico EMS&lt;/a&gt;/DXP is what we would typically term a “traditional web content management system” (or in the new world, a digital experience platform). It's the all-in-one DXP solution providing a complete digital experience, which offers marketing capabilities (A/B Testing, Personalisation, Conversions etc…) alongside the content management facilities, ecommerce modules and forms.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kentico Kontent
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aLrrL8bZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/766be74b-7a2d-44bc-9c3d-159195870d5f/Kontent.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aLrrL8bZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/766be74b-7a2d-44bc-9c3d-159195870d5f/Kontent.png" alt="Kentico Kontent - Content as a Service - Multichannel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://kontent.ai/"&gt;Kentico Kontent&lt;/a&gt; is the Content as a Service (CaaS) Headless CMS from Kentico. It's an API First CMS that focuses on the creation, management and delivery of content. It’s designed to work in the modern, fluid, flexible architectures alongside other Software-as-a-Service (SaaS) applications which are becoming increasingly prevalent. &lt;/p&gt;

&lt;p&gt;While these are two discrete products, there is a connection between the two. &lt;a href="https://www.kentico.com/blog/introducing-headless-api-for-kentico-ems"&gt;You can see in this article&lt;/a&gt; that Kentico Kontent have already created a method for passing content from EMS/DXP to Kontent. It is possible (although it needs work) to pass content back the other way. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Hz7qYTiD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/429e2b6c-3b84-4f08-a6cc-f6e3cd6f0236/Kentico-ems-to-kentico-kontent.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Hz7qYTiD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/429e2b6c-3b84-4f08-a6cc-f6e3cd6f0236/Kentico-ems-to-kentico-kontent.png" alt="How Kentico EMS can go into Kentico Kontent"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, the technology is there to connect the two products but there’s still the lingering question of why you would choose to do it.&lt;/p&gt;

&lt;p&gt;It’s very difficult to assign each product to a specific kind of digital project. There are so many factors to consider that the lines become blurred. What is clear is that Kontent is specifically designed for omni-channel experiences whereas EMS/DXP is still primarily geared towards web. This in itself offers a hint at the potential use case. &lt;/p&gt;

&lt;p&gt;The way I see it, is that Kontent is essentially used to for adding and managing content. It doesn't have the ability to manage user accounts, forms functionality, site search etc… As its main purpose is to serve and manage content. Should you require any non-content functionality, you would most likely need to look into third party platforms. And as you can imagine, there are features Kontent lacks that Kentico EMS have out of the box.&lt;/p&gt;

&lt;h2&gt;
  
  
  Think first
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K1gFjPyf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/748f86c1-28f0-4baa-bd21-35660be4c941/skeleton-thinking.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K1gFjPyf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/748f86c1-28f0-4baa-bd21-35660be4c941/skeleton-thinking.jpg" alt="Skeleton in a thinking pose- Photo by Mathew Schwartz on Unsplash"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our starting point is to take a step back. Technology is an enabler and not the driver. If you’re going to get the best out of EMS/DXP and Kontent working in partnership, you need to think about our users. &lt;/p&gt;

&lt;p&gt;I boil it down to three questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  What are your customer touchpoints currently?&lt;/li&gt;
&lt;li&gt;  How do your customers want to interact with you?&lt;/li&gt;
&lt;li&gt;  What content are you using on each channel?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Assuming that you have the answers to the above, you should be able to articulate your user experience through an experience map and my guess is that you will see that you’re no longer living in a world where customers deal with you on one channel. In addition, external influences are forcing you to be more efficient in how you utilise resources. The likelihood is that you are duplicating efforts on content and delivering content to different channels (website, email, social, app, etc.) ad-hoc with potential for content to be out of sync. Content friction is likely to be a big factor, which is where Kentico Kontent comes in to help resolve it.  &lt;/p&gt;

&lt;h2&gt;
  
  
  The content hub
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WRCP4BIp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/edc21605-2df8-4dcc-a73d-510bb5ecdeaa/rows-of-rubber-ducks.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WRCP4BIp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/edc21605-2df8-4dcc-a73d-510bb5ecdeaa/rows-of-rubber-ducks.jpg" alt="Rows of rubber ducks - Photo by JOSHUA COLEMAN on Unsplash"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That thought process should highlight the need for a “content hub”. You need to interact with users on multiple channels and this necessitates a specific pattern. &lt;/p&gt;

&lt;p&gt;Kentico Kontent becomes your content hub. Build out your content irrespective of channel or medium knowing full well that content can be surfaced out in different configurations. &lt;/p&gt;

&lt;h3&gt;
  
  
  The traditional website
&lt;/h3&gt;

&lt;p&gt;This leaves you free to use EMS/DXP to power your main website. Necessary content can be drawn in from Kontent to populate content types in the tree, rearrange items in the tree how you wish and you can then leverage the features of EMS that enable you to engage your users – whether that be through content, online marketing, email marketing, etc. &lt;/p&gt;

&lt;p&gt;Depending on your architecture, you can leverage the user functionality within EMS/DXP to allow you to set up user membership on a website to store user account information, notification area and preferences. &lt;/p&gt;

&lt;p&gt;In parallel, you can use the forms functionality within EMS/DXP to capture data, perhaps to capture micro-consents or provide access to a gated resource. Once the data is captured you can incorporate a third-party email client like &lt;a href="https://sendgrid.com/"&gt;SendGrid&lt;/a&gt; and then be able to send the emails from EMS/DXP.&lt;/p&gt;

&lt;p&gt;All the while, you can track user activities across your website, assigning points and segmenting based on behaviours and interests, before serving your pièce de résistance, personalised and targeted content.&lt;/p&gt;

&lt;p&gt;As you can see, we can deliver the basics from Kontent and then maximise the potential of EMS/DXP to deliver a stunning website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Hqlw3m90--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/a38d3b08-e1fc-4994-bf2b-725808282c0f/Kontent-to-EMS.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Hqlw3m90--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/a38d3b08-e1fc-4994-bf2b-725808282c0f/Kontent-to-EMS.png" alt="Kentico Kontent going to Kentico EMS to produce a website"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The main enterprise website was, for many years, the sole channel for most companies, but that has long since changed. With Kentico Kontent acting as our content hub, you are primed to deliver content out to a wide range of channels. &lt;/p&gt;

&lt;p&gt;For smart phone applications, chat bots, voice assistants, smart watch applications and many more, you can avoid reliance on a weighty, and unnecessary, traditional CMS and instead use the languages and software that are perfect for them. But at the same time, the same content (albeit in different forms and structures) is being pushed out to these channels, removing content friction and giving you a consistent voice across your touch points. &lt;/p&gt;

&lt;p&gt;And, we don’t just have to rely on EMS/DXP to serve up our websites. There are always use cases where you have smaller marketing sites or microsites that are stuffed full of content but require little in the way of features. Why use an enterprise Web Content Management System when you can leverage the awesome &lt;a href="http://gatsbyjs.org/"&gt;GatsbyJS&lt;/a&gt;, a little framework you know I have a soft spot for, to deliver blazing fast websites, consuming the content that’s needed from your trusty content hub. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;(On a side note, if you're looking to get started with Gatsby and Kentico Kontent, you can check out some of the &lt;/em&gt;&lt;a href="https://www.ileshmistry.com/my-top-5-key-takeaways-from-the-gatsbyjs-and-kontent-tech-meetup"&gt;&lt;em&gt;blog posts&lt;/em&gt;&lt;/a&gt;&lt;em&gt; I've written from the MMT Tech Meet-ups.)&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zdz2-fwk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/fed301a1-d170-4d4a-bc22-43d37bd1db99/Kontent-to-all-channels.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zdz2-fwk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/fed301a1-d170-4d4a-bc22-43d37bd1db99/Kontent-to-all-channels.png" alt="Kentico Kontent serving to different channels static sites, Kentico EMS, Phone, Smart Assistants etc.."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;As you can see following a pricing model change from Kentico, we can see some of the benefits of their dual rail strategy and how Kontent and EMS/DXP benefit each other. I've provided a potential scenario of how Kentico Kontent and Kentico EMS could work together, making sure that the one true source of content is Kentico Kontent. &lt;/p&gt;

&lt;p&gt;It's important to note that the suggestions I've provided do not overrule a client who may have agreements and plans in place with third-party specialist platforms, where the architecture would need to be expanded to fully satisfy the client requirements. It's important to treat each client and their requirements individually and make the appropriate technical and business decisions according to their specifications.&lt;/p&gt;

&lt;p&gt;For any help on making the right decisions and expert advice, contact &lt;a href="https://www.mmtdigital.co.uk/contact"&gt;MMT Digital&lt;/a&gt; who have experience in all areas to help 😉.&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;Originally posted on &lt;a href="https://www.ileshmistry.com/kentico-ems-kentico-kontent-a-match-made-in-content-heaven/"&gt;https://www.ileshmistry.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kentico</category>
      <category>kenticokontent</category>
      <category>gatsby</category>
    </item>
    <item>
      <title>Recap of MMT Tech Meet-up January 2020 covering GatsbyJS Cloud, GatsbyJS Data Fetching and Houdini CSS</title>
      <dc:creator>Ilesh Mistry</dc:creator>
      <pubDate>Mon, 20 Jan 2020 14:16:12 +0000</pubDate>
      <link>https://forem.com/ileshmistry/recap-of-mmt-tech-meet-up-january-2020-covering-gatsbyjs-cloud-gatsbyjs-data-fetching-and-houdini-css-3ml4</link>
      <guid>https://forem.com/ileshmistry/recap-of-mmt-tech-meet-up-january-2020-covering-gatsbyjs-cloud-gatsbyjs-data-fetching-and-houdini-css-3ml4</guid>
      <description>&lt;p&gt;Those of you following me on social media or my blog will be aware of the MMT Tech Meet-Ups that I’ve been running down at our London offices in Soho. For those of you who don’t follow me on &lt;a href="https://www.ileshmistry.com/about/"&gt;social media&lt;/a&gt; (shame on you!), these meet-ups, hosted by yours truly, are sessions where myself and a range of enthusiastic guest presenters talk about all manner of front-end technologies, including GatsbyJS and JAMstack.&lt;/p&gt;

&lt;p&gt;Since October, we’ve had a series of great presentations – from &lt;a href="https://www.ileshmistry.com/mmt-and-gatsby-my-top-8-key-takeaways-from-the-london-meet-up"&gt;Gatsby, Apollo Client and Graph QL&lt;/a&gt; to &lt;a href="https://www.ileshmistry.com/my-top-5-key-takeaways-from-the-gatsbyjs-and-kontent-tech-meetup"&gt;Gatsby and Kentico Kontent&lt;/a&gt;. You can click on the links to find out more.&lt;/p&gt;

&lt;p&gt;So far, so good. But where to next?&lt;/p&gt;

&lt;p&gt;For the first MMT Tech Meet-Up of 2020, we carried on as we finished in 2019 with a great selection of presentations, covering some of the latest and greatest features of &lt;a href="https://www.gatsbyjs.org/"&gt;GatsbyJS&lt;/a&gt; and introducing &lt;a href="https://developer.mozilla.org/en-US/docs/Web/Houdini"&gt;Houdini CSS&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Ilesh Mistry talks about Gatsby Cloud and Gatsby Preview working with Kentico Kontent&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hvjoXJgn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/21bad35f-a48a-42b6-9107-a4c0046c8d49/MMT-TechMeetup-Ilesh-Mistry.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hvjoXJgn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/21bad35f-a48a-42b6-9107-a4c0046c8d49/MMT-TechMeetup-Ilesh-Mistry.jpg" alt="Ilesh Mistry presenting Gatsby Cloud and Preview with Kentico Kontent"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rewind to November 2019 and Gatsby launched &lt;a href="https://www.gatsbyjs.org/blog/2019-11-14-announcing-gatsby-cloud/"&gt;Gatsby Cloud&lt;/a&gt;, a commercial platform of stable, trusted tools for building websites. It’s been heralded as a significant step forward for Gatsby and early adopters are singing its praises. An interesting topic for us to explore as I’m sure you’ll agree.&lt;/p&gt;

&lt;p&gt;So for our inaugural meet-up of 2020, I took the opening slot to talk more about &lt;a href="https://www.gatsbyjs.com/cloud/"&gt;Gatsby Cloud&lt;/a&gt; – what it is, why it could be a useful tool, how it works with &lt;a href="https://www.gatsbyjs.com/preview/"&gt;Gatsby Preview&lt;/a&gt; and how it can work with headless CMS (specifically &lt;a href="https://kontent.ai/"&gt;Kentico Kontent&lt;/a&gt;, one of our chosen Content as a Service products).&lt;/p&gt;

&lt;p&gt;We covered a fair few points during the presentation and you can find the entire presentation on &lt;a href="https://youtu.be/4dcKDpg8OQ8"&gt;Gatsby Cloud and Gatsby Preview here&lt;/a&gt; 🎥. To whet your appetite, here are some of the key takeaways from the presentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Gatsby Cloud provides an all-in-one solution, from features that empower new and non-technical users through to real-time preview, lightning-fast builds, and enviable CMS compatibility. It’s an exciting step forward for Gatsby and can only help boost the popularity of the platform and drive business success for the community.&lt;/li&gt;
&lt;li&gt;  Like &lt;a href="https://www.netlify.com/"&gt;Netlify&lt;/a&gt; and &lt;a href="https://zeit.co/"&gt;Zeit&lt;/a&gt;, it integrates with GitHub, as well as some enticing integrations with all the popular CDNs.  &lt;/li&gt;
&lt;li&gt;  Most importantly, it is very easy to set up – something that I can see being key to the growth and adoption of Gatsby Cloud.&lt;/li&gt;
&lt;li&gt;  You can load data from anywhere which makes using it with something like Kentico Kontent a real pleasure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Special treat - extended Kentico Kontent trial
&lt;/h3&gt;

&lt;p&gt;And, if that’s not all, I’ve wrangled a special treat for those of you interested in trialing Kentico Kontent with your Gatsby Cloud project. Instead of the usual 30 day trial, you can help yourself to a nifty &lt;strong&gt;90 day free trial of Kentico Kontent&lt;/strong&gt; using this link &lt;a href="http://bit.ly/k90days-trial"&gt;http://bit.ly/k90days-trial&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Laura González talks about Houdini CSS&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U9JpoX5b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/d1fba046-e937-401d-ae8f-13d9f09b78b0/MMT-TechMeetup-Laura-Gonzalez.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U9JpoX5b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/d1fba046-e937-401d-ae8f-13d9f09b78b0/MMT-TechMeetup-Laura-Gonzalez.jpg" alt="Laura Gonzalez presenting at the MMT Tech Meet-up on the topic of Houdini CSS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next up on the agenda was &lt;a href="https://twitter.com/freezydorito"&gt;Laura González&lt;/a&gt;, bringing us up to date on all things Houdini CSS. For those of you new to Houdini, it’s a set of low-level APIs that exposes parts of the CSS engine – essentially giving you as developers the power to extend CSS. The aim? To help you finally dodge those awkward situations where your chosen CSS feature isn’t supported across browsers.&lt;/p&gt;

&lt;p&gt;Beginning our journey with the origins and evolution of CSS, Laura stepped us through to the creation of &lt;a href="https://developer.mozilla.org/en-US/docs/Web/Houdini"&gt;Houdini CSS&lt;/a&gt; and how we can leverage this intriguing suite to deliver eye-catching experiences that would be difficult to achieve with pure CSS.&lt;/p&gt;

&lt;p&gt;You can find the full presentation via this link &lt;a href="https://youtu.be/i_YHcyuYqFgv"&gt;Houdini CSS&lt;/a&gt; 🎥 but here are a few highlights from the session:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  First and foremost, Houdini CSS is fun to use. It’s a brave new world where those pesky browsers can’t suck the joy out of crafting your experiences.&lt;/li&gt;
&lt;li&gt;  It’s going to make our lives easier.&lt;/li&gt;
&lt;li&gt;  While Houdini is an exciting step forward, remember that JavaScript can replace CSS in some situations to help you deliver complex layouts and transformations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It was a great presentation and it’s certainly piqued my interest. I know I’ll be taking more of a look at Houdini and I’d urge you to do the same!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Scott Spence talks about GatsbyJS Data Fetching&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xASBsSLb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/dca60692-d937-4929-8930-6f9f1b536c84/MMT-TechMeetup-Scott-Spence.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xASBsSLb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/dca60692-d937-4929-8930-6f9f1b536c84/MMT-TechMeetup-Scott-Spence.jpg" alt="Scott Spence presenting at the MMT Tech Meet-up in January 2020 about Gatsby Data Fetching"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wrapping up the January 2020 meet-up, &lt;a href="https://twitter.com/spences10"&gt;Scott Spence&lt;/a&gt; got us thinking about data, specifically how to fetch data using &lt;a href="https://graphql.org/"&gt;GraphQL&lt;/a&gt; within GatsbyJS. Starting with a tour of the different API endpoints and how they could be used, he walked us through 3 ways of retrieving data. The icing on the cake was the appearance of the awesome &lt;a href="https://github.com/OneGraph/graphiql-explorer"&gt;GraphiQL Explorer&lt;/a&gt;, a godsend for anyone working with GraphQL, and a demonstration of how the data query could be applied within your code.&lt;/p&gt;

&lt;p&gt;The full presentation is available via this link &lt;a href="https://youtu.be/A0q3JqSLr_0"&gt;Gatsby Data Fetching&lt;/a&gt; 🎥but here are a few highlights from the session:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Gatsby data retrieval can work with any endpoint&lt;/li&gt;
&lt;li&gt;  GraphiQL Explorer allows you to visualise the data&lt;/li&gt;
&lt;li&gt;  You can fetch data via Build Time and Run Time with structured and unstructured data&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Future MMT Tech Meet-ups&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5vazOAWn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/7ac0e734-39c6-450f-995f-6bafa5b10be9/MMT%2520Tech%2520Meetup.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5vazOAWn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets-eu-01.kc-usercontent.com:443/17021868-aaab-01f5-57ef-cf27d8c987b3/7ac0e734-39c6-450f-995f-6bafa5b10be9/MMT%2520Tech%2520Meetup.png" alt="MMT Tech Meetup banner"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well, another MMT Tech Meet-Up over and now time to look forward to the next. These meet-ups are open to all and they’re a great opportunity to learn from your peers and engage with the development community.&lt;/p&gt;

&lt;p&gt;If you are interested in attending, speaking at the event or even sponsoring the event, please contact me - &lt;a href="mailto:Ilesh.m@mmtdigital.co.uk"&gt;Ilesh.m@mmtdigital.co.uk&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;See you in March for the next MMT Tech Meet-Up!&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;Originally posted on &lt;a href="https://www.ileshmistry.com/mmt-tech-meet-up-january-2020-recap-gatsbyjs-and-houdini-css"&gt;https://www.ileshmistry.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gatsby</category>
      <category>kenticokontent</category>
      <category>houdinicss</category>
    </item>
    <item>
      <title>Snowman</title>
      <dc:creator>Ilesh Mistry</dc:creator>
      <pubDate>Mon, 09 Dec 2019 11:08:50 +0000</pubDate>
      <link>https://forem.com/ileshmistry/snowman-1i50</link>
      <guid>https://forem.com/ileshmistry/snowman-1i50</guid>
      <description>&lt;p&gt;Please add your likes in CodePen, for a funny attempt at a snowman challenge we have within our company :)&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/ilesh/embed/BayoogM?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>codepen</category>
      <category>snowman</category>
      <category>css</category>
    </item>
  </channel>
</rss>
