{"componentChunkName":"component---src-templates-blog-post-tsx","path":"/real-time-collaboration-ot-vs-crdt/","result":{"data":{"allContentfulCategory":{"edges":[{"node":{"contentful_id":"2gOurgpDj1BasZvVToN13z","slug":"tiny-sparks","title":"The Tiny Way"}},{"node":{"contentful_id":"2a3w396SgR2Fl1ep4eYu0w","slug":"product-management","title":"Product-Led Growth"}},{"node":{"contentful_id":"T7VZcLaLRpt6XlNLJPLmL","slug":"wysiwyg-world","title":"World of WYSIWYG"}},{"node":{"contentful_id":"6HNYGjOUjHzUS2gXBnMVXn","slug":"design-and-ux","title":"Content Marketing & Design"}},{"node":{"contentful_id":"6XFMYLCe4AEYIDazkjGFvb","slug":"engineering","title":"Developer Insights"}},{"node":{"contentful_id":"24ufWIsR0ImSvxvvIrutB5","slug":"open-source","title":"Open Source"}},{"node":{"contentful_id":"2fLgNI8yOMeZHNl1nSQ11","slug":"how-tos-and-tutorials","title":"How-to Use TinyMCE"}}]},"contentfulBlogPost":{"title":"To OT or CRDT, that is the question","lastUpdated":"January 13th, 2020","publishDate":"2020-01-14T00:00+10:00","category":{"slug":"engineering","title":"Developer Insights","blog_post":[{"title":"Comparing Customization: TinyMCE vs. Froala","slug":"tinymce-vs-froala-customization","featured":true,"lastUpdated":"Mar 24th, 2026","description":{"description":"<p>How TinyMCE and Froala compare on plugin depth, API extensibility, and collaboration features? Developer guide to customization ceilings and trade-offs.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"How TinyMCE and Froala compare on plugin depth, API extensibility, and collaboration features? Developer guide to customization ceilings and trade-offs."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Comparing Customization TinyMCE vs Froala","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABelBMVEUKE1QACE8ABk4ABE4ABU4AB08JElMLE1QEDVEACFEABVMABlIAB1AEDlEJE1QAA04AAEwAAEoAAEkAAE0AB04AClIADFUbJlwQHVkAD1UABE8AAEsAO2IAU3MBTnMBS3QCSnYDRncAIVoABk8AAFNCRmm5ucCPkJwAAFUIE1QEDVAAOmEAWHgAWXwAWYAATnoBVIUAMWY7P2WpqbJ/gI8CEFQAQ2cAYX8AYIMAWYIAV4UAVIcAWJAATYoAGF4AAEcAAFAABVQACFcAE1cABFAAAEhBR2dga4FYZHxsdIlnboVNWHdGUXNcY4BSVXFZWnMgJFgAEFYUI10EF1kAAFR3eImPj5wKGVcAAFJLS2mKiZeXl6KYl6KNjJl9fYx7e4t/f46Tk6BERmkAMmAJSGoQH1yjo6zDw8kdJlsAAEQAAFEOKl0PMWAHFFcADFYcJVsrMV8ACFQIElQBC1EAAE4AAU4ABlABClIDC1MAClEABFMADlMHEVMLFFTxKlLmAAAAo0lEQVQI123IOw4BUQBG4f/M3DvCeI3QaES0ConotGIZ1mAB9mBHaBU2QASJSrwSoXBjFEM0vurkIKEvAKc4MCncS/KdJGMApxwUAElwVBmAg5PJkjhRT6K4dETVpDeeq+ThEt2uaUOYzCYAu9pWcZ0ef5T6n7iHAOcSXPzMPpy1V49p8Jy0rLV5a+3KDGARdtSKNc8C4+G60ZVG9scre76v4A1DxyZkUHvegwAAAABJRU5ErkJggg==","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/hSfpSImgxOsHs4iIKlvbB/6919ae5955c4e2db9092985361be7d4a/-TinyMCE--Blog_Header-_Comparing_Customization__TinyMCE_vs_Froala.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Coco Poley","slug":"coco-poley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"TinyMCE vs Froala Customization: Plugins, APIs & Collaboration | TinyMCE"},"metaDescription":{"metaDescription":"How TinyMCE and Froala compare on plugin depth, API extensibility, and collaboration features? Developer guide to customization ceilings and trade-offs."}},{"title":"How to Discern Level of Effort to Integrate Collaboration in a Rich Text Editor","slug":"rich-text-editor-integration-level-of-effort-collaboration","featured":true,"lastUpdated":"Feb 2nd, 2026","description":{"description":"<p>Learn how to estimate the level of effort required to integrate a rich text editor with collaboration features like comments, mentions, and version history.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Learn how to estimate the level of effort required to integrate a rich text editor with collaboration features like comments, mentions, and version history."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"How to Discern Level of Effort to Integrate a Rich Text Editor","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABvFBMVEUJE1QABk8AB08ACE8ABU4ABE4IElMIEVMACFAAAE4AAU4AA04ABVAABlIABFMACVIAB1EAAFIADVMAAEwCCE8AAE0ACU8ADlQfJVowNWEAF1kAElk7P2Y2O2QAClUAAE8AAEhfXnaNi5mBfo50d4kNZn8AYXsAX3oAVXIAW3YAYn0AMWF6eYqmpq8ZK2EhMmW4uL6lpa8AAFUAAFAAAEkePmM9a4I3boUyY3wAV3QAWXUAYHoAXXgAXXkAG1lOT21vcIMBHl0IIl+AgZFvcIQAPWMAWnYAXnoAWXYAU3EVW3ZLb4U4YHkARGcAElYAAFkAAFoAGF4AF10AElclRWcxaYEna4MraYEiY3wtaoJEZ353dYdfXHQAAEtrbIGPkJ0aKV8AG116e4xoan8ABFUAAVAAAEZnZ3ySkZ56eImGhJOEgpGTkp9xcYQAAEoAAFGYmaTLy881P2kSKWKenqiMjJoAAlAEC08fIVQMD1AWGFIXGVIaHFMeIFQVGVIABE8AC1QcJls0OWQAEFgAFVopMF8tM2AADlUAAk8HEVMABU8AB1AABFIAB1IACFIAB1MDDlMKE1QABk4JElO5P9nKAAAAjUlEQVQIHQXBMUrCUQAH4N/3fCAEWmAH8BAdIRwEr+Dk5OJmBEE0BAktTp5DEJy8kTrpEvx5fZ+EJJLWeppE9En4S9IHcTdyfyi6ktyGAMYAAKjPAK0ArueaJ2gFoMvjxfgFwGEGqBNwnLKfA6dXowVgtwRQ15+DJMnt6/3H9wddXcvWKtm8kdZLi/yWfxvuH2LfYxclAAAAAElFTkSuQmCC","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4a6Y89AUrMs3F9FBApjSa2/a999da5fe3da0f46fb01e6d7ea3b7426/Collaboration_Series_-5__How_to_Determine_Level_of_Effort_to_Integrate_a_Rich_Text_Editor_blog.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Coco Poley","slug":"coco-poley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"How to Determine Level of Effort to Integrate Collaboration in a Rich Text Editor | TinyMCE"},"metaDescription":{"metaDescription":"Learn how to estimate the level of effort required to integrate a rich text editor with collaboration features like comments, mentions, and version history."}},{"title":"What to Expect During a Free Trial with TinyMCE","slug":"tinymce-14-day-free-trial-guide","featured":true,"lastUpdated":"Feb 3rd, 2026","description":{"description":"<p>Learn what the TinyMCE 14-day free trial really offers: full premium features, framework integrations, support access, and what happens after day 15.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Learn what the TinyMCE 14-day free trial really offers: full premium features, framework integrations, support access, and what happens after day 15."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"What to Expect During a Free Trial with TinyMCE","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABiVBMVEUIElMKE1QACE8AB08JE1QHEVMCC1EABE4ABU4ABk8CCU8CC08GD1IIEVMAAE0AAEoAAEYAAEcAAEgAAEwABU8AB1EAB1MAClQEElUFDlEKElIAAElJS2l1dYdhYnlbXHVdXnZjZXtdX3deYHg8QGMABE8ACFIAAEsAAlUAAE4HEVIAAEVYWXOIiZeFhZR0dYd4eYqGg4+Li5iEg5BZVWwKAEsABVIAAFFfX3a8vMLAwMZ5eooAAFMEFFYABk4AAERiY3mKipiGhpWMjZp3dIR9QjqEPy9wNjmJT0GFTkYQE1W1tbzc3eDFxcu7u8EAAFUAEVdOT2yHiJZ7e4yEhZR9fo+GhJKOiJRua38hA0svF04AE1gAAFakpa7Kys/k5Oelpa4AD1ZISWhkZHpXWHJ1doh5eotydIdaXHUAAU8CE1UABFY1OGCGh5dwcoYEEVIAA1UAC1IAAk4IEVIAD1UAElsAAFwAD1kADVMAB04CDFEAA04HD1EFEFMADFMAClMACFEJElMLFFSBEinTAAAAmUlEQVQI12NkYGRkQAaMDIx/GFmhgoy//4NINkYgYOEEkWBRxneMQiAO4wsWXkYYeKXM+FaEEYhfMGozYgIWESTOJ34wtZ3loiNCEGzkHVUGZmGdw9qcILDZmAMMpDmZGPlAsv+kn/5PnlAIcgcjY1c587+CQ79/F2gc+nuUwYmFFQjaxLez1DD+ZmBoB7u/3foUg5k1Q+Z/AEz1I+llH/E0AAAAAElFTkSuQmCC","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/3o9qGwM2PgitaqxcfCBROx/6ef77a45182243650ea85c81549e41b6/What_to_Expect_During_a_Free_Trial_with_TinyMCE__1_.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Coco Poley","slug":"coco-poley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"What to Expect From the TinyMCE 14-Day Free Trial | TinyMCE"},"metaDescription":{"metaDescription":"Learn what the TinyMCE 14-day free trial really offers: full premium features, framework integrations, support access, and what happens after day 15."}},{"title":"Why collaborative rich text editing is essential for modern products","slug":"collaborative-text-editing","featured":false,"lastUpdated":"Mar 11th, 2021","description":{"description":"<p>Looking for a text editor for your product? Find out why real-time, collaborative rich text editing is an essential feature for modern apps.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Looking for a text editor for your product? Find out why real-time, collaborative rich text editing is an essential feature for modern apps."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Stylized graphic showing three people reaching into the center, pointing and holding colored shapes.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAMAAADTRh9nAAAC01BMVEX+9ej88+f68ub58eX48eX68uX88+X38Of89Ob68+b99ej/+Ov78+fd1sz27uHz7ePy7OLz7eLv6uDy7eS+zfa7zPb48+j79Of79Ob89Ofu59y/urjIwr/17uL+9ukhU5Lc2tn/9+f78+T78+Xn5erm393p4+Ho5+z2w8D4j5Htwcjv7ev/+Oe7trQAAFcAAE2xrq7/9eVVk/LOtNPTx+Ouxfmgu/mOs/2Xq+XkuGr70nf749P2X2/3GUfhU46hqezT2/Lb2+V9oegmWp9hUGnsl4hxb9G+VaGfkeR+rv+kvfjE0/rn4uT80Xj73ab66uH3d4H2CkT2Z3K1teZyqf99q/+Jsf9QbaYAElBsIlprTr++nsXy5uT28Oj99OT///////7//ff++e3/6ef9x8r73dPw7ODm5eq0x/h9qfxBWIsADE0VJl1kQr66rtD/+eb/9+TW2u2ivPft7/f//fj59fDH0ezc5ff//vXw7+7t6un17uH78+L17uerrL9SWHrIYkS4SqLdt8f58+jN1fFxpf9nof/g4ezz7N3U2OpNl/zEz/H78uSeuO91pvuswvfH0e/Z3eyeu/p2oPHjqqGFlfCes/STtfxcnf/l5Ov58eLi4eiBq/t3p/3g4e3/9eTZ2+qhu/V7qfxgn/9dnv9XnP9Vnf/O1fBTnf9Sm/+Hr/3T2PD78uHi4uiHr/7f4O3s6On88+Ty7efj4+zO1fG1x/awxPfy7eiAq/3CzvP+9eT89OTw7OeWtvldmPXX2+//9uT58eatwvf99OX+9OT78uXw6+j78+b89efE1PgkeNBQb6fp5+jp5+pkoP+2xvL69ej45NrWibqKVZc6hdTZ4/X/+ufN1vJfnv3f4Or68eX68+f4paT6P1TjW4bThrX3wb783tKqvvZgof/n5uv58ub69Oj51872S2H3QVr5SFr6Pk/4MU34UF7VbqmDnfXm5ux5YcFCAAAAlUlEQVQY02NkYGQEIkYwyfCTgYOR4T8TIy/jF15GCPjMB2UwyoOI+0qMyIBFGESKMKIKovGRBNeGoIrm4lSJTXBeMqogkzAQnAXil0KMgs0CEMC4g/EfM0zFdS3niLRZ6Y6Mx756HwSLLIllZDT/zwACjMqP/p6DG9a6/CpIkOURw02t6zBBBgZNsOC/R4yPGBGCYAAAAH4gxKo/a2YAAAAASUVORK5CYII=","aspectRatio":1.3333333333333333,"src":"//images.ctfassets.net/s600jj41gsex/1qCGDGSz0tHzTKqXh309Q2/b69ee36e76042abcffbc721fe32096ef/Collaborative_Editing_.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1qCGDGSz0tHzTKqXh309Q2/b69ee36e76042abcffbc721fe32096ef/Collaborative_Editing_.png?w=185&h=139&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1qCGDGSz0tHzTKqXh309Q2/b69ee36e76042abcffbc721fe32096ef/Collaborative_Editing_.png?w=370&h=278&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1qCGDGSz0tHzTKqXh309Q2/b69ee36e76042abcffbc721fe32096ef/Collaborative_Editing_.png?w=739&h=554&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1qCGDGSz0tHzTKqXh309Q2/b69ee36e76042abcffbc721fe32096ef/Collaborative_Editing_.png?w=800&h=600&q=50&fit=scale 800w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1qCGDGSz0tHzTKqXh309Q2/b69ee36e76042abcffbc721fe32096ef/Collaborative_Editing_.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1qCGDGSz0tHzTKqXh309Q2/b69ee36e76042abcffbc721fe32096ef/Collaborative_Editing_.png?w=185&h=139&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1qCGDGSz0tHzTKqXh309Q2/b69ee36e76042abcffbc721fe32096ef/Collaborative_Editing_.png?w=370&h=278&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1qCGDGSz0tHzTKqXh309Q2/b69ee36e76042abcffbc721fe32096ef/Collaborative_Editing_.png?w=739&h=554&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1qCGDGSz0tHzTKqXh309Q2/b69ee36e76042abcffbc721fe32096ef/Collaborative_Editing_.png?w=800&h=600&q=50&fm=webp&fit=scale 800w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Elise Bentley","slug":"elise-bentley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Why modern products need collaborative text editing"},"metaDescription":{"metaDescription":"Looking for a text editor for your product? Find out why real-time, collaborative rich text editing is an essential feature for modern apps."}},{"title":"5 tools for checking mobile accessibility","slug":"5-tools-for-checking-mobile-accessibility","featured":false,"lastUpdated":"Apr 26th, 2020","description":{"description":"<p>Here are five things you can get started with right away when it comes to testing for mobile accessibility.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Here are five things you can get started with right away when it comes to testing for mobile accessibility."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Mobile device displaying color filters options","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAACh0lEQVQYGQXBvW5cVRSG4fdbe58ziUzGseRqhKBwKIiEQgIFBUIRBdTcBNwKFEgUSDRUXIEbJCpSuDCVFVCUgIAwDvIP2CM7/mHmnL33WjyPNrdPgFWjBZFTmCnAQwgAgAAjbpjXFqMH0BudkSkxOg1534WZQ11e5mHsPAAgwAkzqzfWCqagU3QBjTwMtACDLJz0y6N7j745vVrtL64AJMTWxtrtm/38w8/K3Yddi04gCLKXECgiotacuic/jTs//BPMJtx58AB4srt3/BcV9PDdje7eajXFgAAyBQCw1lrUtyfdG598/Gaehsf6+nop5bWtu8NqWU7/PdqYHpQTlmv0CQCyKgDgEs23Nqfv3/mon7xydHw8nU4vLy9ns1kt5fD5n2nt1jwouesCtRZgVKhQRYXKwcnLo8ODxWKxu7u7v7+/t7d3dnZ2cnr6/bdfP16cdGZNVnMuqRuLMk0AAOAyZCaZcs4ppZyzJJP625t5GMpYrUS0GPqcvWUqACCJBh7NvTWXFBGS3L15E8IMKQbqzaQxQinTBACCDpufD/y43a29fnh0vFqtzs/PF4tFq3V5/Peq7wn5y6owC0fKNIVok6Rs2aNan3OSWUppZ2en7/uLi4t37t//9POvti1+DsKVli4CwsLVJl0K9YO725nZ88d//Pbr0/l8DtRa+677/dnT77784tnVZY9w4QpXuLLLhFLxFtYGf7Xx1gfvDX5rPt+/vr4GAB/HFy+OFGSgKVwCwFKYYT6qFUVYmEmklGazWUpJkqSUMyABwg23cAu3bKEBU5dB0cmz1f9Gmxjg7hEhCQAEAtzCJQByHaVwkGXlZdjSAw9vQM65lAIAAEQgQoQFAfwPIZd49pDeApIAAAAASUVORK5CYII=","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/6K40X0CdENUmHHcC5aaYDH/a8de64c661956b2b78c03bcb82444a9c/Image_default_5tools-MobileAccessibility.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6K40X0CdENUmHHcC5aaYDH/a8de64c661956b2b78c03bcb82444a9c/Image_default_5tools-MobileAccessibility.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6K40X0CdENUmHHcC5aaYDH/a8de64c661956b2b78c03bcb82444a9c/Image_default_5tools-MobileAccessibility.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6K40X0CdENUmHHcC5aaYDH/a8de64c661956b2b78c03bcb82444a9c/Image_default_5tools-MobileAccessibility.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6K40X0CdENUmHHcC5aaYDH/a8de64c661956b2b78c03bcb82444a9c/Image_default_5tools-MobileAccessibility.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6K40X0CdENUmHHcC5aaYDH/a8de64c661956b2b78c03bcb82444a9c/Image_default_5tools-MobileAccessibility.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6K40X0CdENUmHHcC5aaYDH/a8de64c661956b2b78c03bcb82444a9c/Image_default_5tools-MobileAccessibility.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6K40X0CdENUmHHcC5aaYDH/a8de64c661956b2b78c03bcb82444a9c/Image_default_5tools-MobileAccessibility.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6K40X0CdENUmHHcC5aaYDH/a8de64c661956b2b78c03bcb82444a9c/Image_default_5tools-MobileAccessibility.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6K40X0CdENUmHHcC5aaYDH/a8de64c661956b2b78c03bcb82444a9c/Image_default_5tools-MobileAccessibility.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Matthew Thackwell","slug":"matthew-thackwell"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"Functional debt vs Technical debt: What’s the difference in a rich text editor?","slug":"technical-vs-functional-debt","featured":false,"lastUpdated":"May 16th, 2023","description":{"description":"<p>What is functional debt compared to technical debt? Read on to find out how knowing the difference influences your technical debts.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"What is functional debt compared to technical debt? Read on to find out how knowing the difference influences your technical debts."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"the symbols that represent debt and it's affects, including time and money loss.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.780758556891767,"src":"//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=1109&h=623&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=1478&h=830&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=1925&h=1081&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=1109&h=623&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=1478&h=830&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=1925&h=1081&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Millie Macdonald","slug":"millie-macdonald"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Functional vs Technical Debt: Cost, Causes, Examples | TinyMCE"},"metaDescription":{"metaDescription":"We focus on what is functional debt compared to technical debt in software development. One example is the rich text editor, and the key differences in handling and prioritising those are discussed.\n"}},{"title":"CSS preprocessors and frameworks: streamlining your CSS development","slug":"css-development","featured":false,"lastUpdated":"Aug 23rd, 2023","description":{"description":"<p>How do you approach CSS development? Find out ways to streamline your projects, including vanilla CSS, preprocessors such as LESS, SASS and SCSS, as well as Bulma and Bootstrap, plus utility-first frameworks like Tailwind CSS.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"How do you approach CSS development? Find out ways to streamline your projects, including vanilla CSS, preprocessors such as LESS, SASS and SCSS, as well as Bulma and Bootstrap, plus utility-first frameworks like Tailwind CSS."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"CSS, the initialism, appearing in a box, surrounded by colour, showing the design power of CSS","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAAulBMVEVo8eVo8eVo8uVn8uVl8uVo8uZn8uZl8uZi8+Zk8uZ/8eZp8uaA8eZr8uZs8uds8uZm8uZ669+h3dqI6dyw8Ohy6dp76N6x8Ol97eVm6uFt8eFu8eVj7+F16dyg2NGg5Nes8Ol53s584NSs8emP6uGEz9+V2c+F7tRl8udl8eW37ufG6uSA7OKv8eqJ6NGK39Ow7+l87+OB2+J04+Bm7+Fn8eaS8eea8ehn8eVm8+Vm8+Zj8uVi8uVm8uVrdVXpAAAAAXRSTlP+GuMHfQAAAF5JREFUCB2NwTEOggAQAMHd87Aw8hVi6f8bGxN6HwKFyAEVJFo4o3wLfkg2ioXCp4Bk1bhB0WGCBPLibgQSmK/u2leRrFoPAIU43ezzfa5OnzWBAnHXRzBXQQEGf1oA0sUURFtZ2vMAAAAASUVORK5CYII=","aspectRatio":1.780758556891767,"src":"//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=1109&h=623&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=1478&h=830&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=1925&h=1081&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=1109&h=623&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=1478&h=830&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1lrHp6Ww3gXvSDua3WTjDE/c68cbcea100165fd35106a8d881c21ce/CSS_preprocessors_and_frameworks__streamlining_your_CSS_development.png?w=1925&h=1081&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Marty Friedel","slug":"marty-friedel"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"CSS preprocessors and frameworks explained | TinyMCE"},"metaDescription":{"metaDescription":"Dive into CSS development optimization with our guide. Learn about vanilla CSS, preprocessors like LESS, SASS, SCSS, and frameworks like Bulma, Bootstrap, and Tailwind."}},{"title":"Developer insights collection: resources, trends, and news","slug":"developers-insights-collection","featured":false,"lastUpdated":"Dec 8th, 2021","description":{"description":"<p>Tiny values developers knowledge, and we're sharing more developer insights in this collection.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiny values developers knowledge, and we're sharing more developer insights in this collection."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"developer resources and useful information on software and web development insights, trends, news and hacks represented by prompts on devices.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAABGdBTUEAALGPC/xhBQAACilpQ0NQaWNjAABIiZ2Wd1RT2RaHz703vVCSEIqU0GtoUgJIDb1IkS4qMQkQSsCQACI2RFRwRFGRpggyKOCAo0ORsSKKhQFRsesEGUTUcXAUG5ZJZK0Z37x5782b3x/3fmufvc/dZ+991roAkPyDBcJMWAmADKFYFOHnxYiNi2dgBwEM8AADbADgcLOzQhb4RgKZAnzYjGyZE/gXvboOIPn7KtM/jMEA/5+UuVkiMQBQmIzn8vjZXBkXyTg9V5wlt0/JmLY0Tc4wSs4iWYIyVpNz8ixbfPaZZQ858zKEPBnLc87iZfDk3CfjjTkSvoyRYBkX5wj4uTK+JmODdEmGQMZv5LEZfE42ACiS3C7mc1NkbC1jkigygi3jeQDgSMlf8NIvWMzPE8sPxc7MWi4SJKeIGSZcU4aNkxOL4c/PTeeLxcwwDjeNI+Ix2JkZWRzhcgBmz/xZFHltGbIiO9g4OTgwbS1tvijUf138m5L3dpZehH/uGUQf+MP2V36ZDQCwpmW12fqHbWkVAF3rAVC7/YfNYC8AirK+dQ59cR66fF5SxOIsZyur3NxcSwGfaykv6O/6nw5/Q198z1K+3e/lYXjzkziSdDFDXjduZnqmRMTIzuJw+Qzmn4f4Hwf+dR4WEfwkvogvlEVEy6ZMIEyWtVvIE4gFmUKGQPifmvgPw/6k2bmWidr4EdCWWAKlIRpAfh4AKCoRIAl7ZCvQ730LxkcD+c2L0ZmYnfvPgv59V7hM/sgWJH+OY0dEMrgSUc7smvxaAjQgAEVAA+pAG+gDE8AEtsARuAAP4AMCQSiIBHFgMeCCFJABRCAXFIC1oBiUgq1gJ6gGdaARNIM2cBh0gWPgNDgHLoHLYATcAVIwDp6AKfAKzEAQhIXIEBVSh3QgQ8gcsoVYkBvkAwVDEVAclAglQ0JIAhVA66BSqByqhuqhZuhb6Ch0GroADUO3oFFoEvoVegcjMAmmwVqwEWwFs2BPOAiOhBfByfAyOB8ugrfAlXADfBDuhE/Dl+ARWAo/gacRgBAROqKLMBEWwkZCkXgkCREhq5ASpAJpQNqQHqQfuYpIkafIWxQGRUUxUEyUC8ofFYXiopahVqE2o6pRB1CdqD7UVdQoagr1EU1Ga6LN0c7oAHQsOhmdiy5GV6Cb0B3os+gR9Dj6FQaDoWOMMY4Yf0wcJhWzArMZsxvTjjmFGcaMYaaxWKw61hzrig3FcrBibDG2CnsQexJ7BTuOfYMj4nRwtjhfXDxOiCvEVeBacCdwV3ATuBm8Et4Q74wPxfPwy/Fl+EZ8D34IP46fISgTjAmuhEhCKmEtoZLQRjhLuEt4QSQS9YhOxHCigLiGWEk8RDxPHCW+JVFIZiQ2KYEkIW0h7SedIt0ivSCTyUZkD3I8WUzeQm4mnyHfJ79RoCpYKgQo8BRWK9QodCpcUXimiFc0VPRUXKyYr1iheERxSPGpEl7JSImtxFFapVSjdFTphtK0MlXZRjlUOUN5s3KL8gXlRxQsxYjiQ+FRiij7KGcoY1SEqk9lU7nUddRG6lnqOA1DM6YF0FJppbRvaIO0KRWKip1KtEqeSo3KcRUpHaEb0QPo6fQy+mH6dfo7VS1VT1W+6ibVNtUrqq/V5qh5qPHVStTa1UbU3qkz1H3U09S3qXep39NAaZhphGvkauzROKvxdA5tjssc7pySOYfn3NaENc00IzRXaO7THNCc1tLW8tPK0qrSOqP1VJuu7aGdqr1D+4T2pA5Vx01HoLND56TOY4YKw5ORzqhk9DGmdDV1/XUluvW6g7ozesZ6UXqFeu169/QJ+iz9JP0d+r36UwY6BiEGBQatBrcN8YYswxTDXYb9hq+NjI1ijDYYdRk9MlYzDjDON241vmtCNnE3WWbSYHLNFGPKMk0z3W162Qw2szdLMasxGzKHzR3MBea7zYct0BZOFkKLBosbTBLTk5nDbGWOWtItgy0LLbssn1kZWMVbbbPqt/pobW+dbt1ofceGYhNoU2jTY/OrrZkt17bG9tpc8lzfuavnds99bmdux7fbY3fTnmofYr/Bvtf+g4Ojg8ihzWHS0cAx0bHW8QaLxgpjbWadd0I7eTmtdjrm9NbZwVnsfNj5FxemS5pLi8ujecbz+PMa54256rlyXOtdpW4Mt0S3vW5Sd113jnuD+wMPfQ+eR5PHhKepZ6rnQc9nXtZeIq8Or9dsZ/ZK9ilvxNvPu8R70IfiE+VT7XPfV8832bfVd8rP3m+F3yl/tH+Q/zb/GwFaAdyA5oCpQMfAlYF9QaSgBUHVQQ+CzYJFwT0hcEhgyPaQu/MN5wvnd4WC0IDQ7aH3wozDloV9H44JDwuvCX8YYRNRENG/gLpgyYKWBa8ivSLLIu9EmURJonqjFaMTopujX8d4x5THSGOtYlfGXorTiBPEdcdj46Pjm+KnF/os3LlwPME+oTjh+iLjRXmLLizWWJy++PgSxSWcJUcS0YkxiS2J7zmhnAbO9NKApbVLp7hs7i7uE54Hbwdvku/KL+dPJLkmlSc9SnZN3p48meKeUpHyVMAWVAuep/qn1qW+TgtN25/2KT0mvT0Dl5GYcVRIEaYJ+zK1M/Myh7PMs4qzpMucl+1cNiUKEjVlQ9mLsrvFNNnP1IDERLJeMprjllOT8yY3OvdInnKeMG9gudnyTcsn8n3zv16BWsFd0VugW7C2YHSl58r6VdCqpat6V+uvLlo9vsZvzYG1hLVpa38otC4sL3y5LmZdT5FW0ZqisfV+61uLFYpFxTc2uGyo24jaKNg4uGnupqpNH0t4JRdLrUsrSt9v5m6++JXNV5VffdqStGWwzKFsz1bMVuHW69vctx0oVy7PLx/bHrK9cwdjR8mOlzuX7LxQYVdRt4uwS7JLWhlc2V1lULW16n11SvVIjVdNe61m7aba17t5u6/s8djTVqdVV1r3bq9g7816v/rOBqOGin2YfTn7HjZGN/Z/zfq6uUmjqbTpw37hfumBiAN9zY7NzS2aLWWtcKukdfJgwsHL33h/093GbKtvp7eXHgKHJIcef5v47fXDQYd7j7COtH1n+F1tB7WjpBPqXN451ZXSJe2O6x4+Gni0t8elp+N7y+/3H9M9VnNc5XjZCcKJohOfTuafnD6Vderp6eTTY71Leu+ciT1zrS+8b/Bs0Nnz53zPnen37D953vX8sQvOF45eZF3suuRwqXPAfqDjB/sfOgYdBjuHHIe6Lztd7hmeN3ziivuV01e9r567FnDt0sj8keHrUddv3ki4Ib3Ju/noVvqt57dzbs/cWXMXfbfkntK9ivua9xt+NP2xXeogPT7qPTrwYMGDO2PcsSc/Zf/0frzoIflhxYTORPMj20fHJn0nLz9e+Hj8SdaTmafFPyv/XPvM5Nl3v3j8MjAVOzX+XPT806+bX6i/2P/S7mXvdNj0/VcZr2Zel7xRf3PgLett/7uYdxMzue+x7ys/mH7o+Rj08e6njE+ffgP3hPP78QcZjQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAC4lBMVEUZJFkYJFkhLWgjMGwjL2seKmMXI1cfK2QgLWccJ14YJFgbK2MbK2QjM3AlNXMkNHIgMGsaKmIhMWwiMm4kNHMeLmggNnIfNnIgNnMmO3snPH0jOXgfNXEkOXknPH4lOnohN3UjQYEoRIYqRIgpRIgnQ4QnQ4UpRIcoQ4YlQoMnTo8nTpAmT5ArT5MsT5MpT5ImUJEqWI8tPn8tPH8pRYcoT5ErW54rXJ4tXpwxUJgyUJkzUJkzT5kwUpksX5UuQX4vPX0tTosyUZkzT5gxUJcrWZwtZKYtZqc0a6U9TJ49TZ48Tp47Up88TZ47Tp4vYJYnXYsmXIsxXJI9T549TJ06TZsuYKMtZacvaq0uba40bag8S500YqEtbaI8T547TZ4zYZcsSoInWIkwY5U0YKA5Vp4vZqgvbK4xcbMwdLQ1cKs2XaAndKM5Vp8zYpctOXktNXgwXpEwaKE1X586TZwwbK4xc7UyeLoye7s1c608Spw8TJ44V58yZaE7UJ87TJ00ZZ0tXpEtXZEybJ07UJ09S506Tpwyc7Qyers0gMA0gsI2dK88RJk8R5s8RZs9RJs8SJs6R5o+U6M+VKM6aKU8S5w8Rps9Rpo6S5o0ebo2h8c2icgwf7MrX5YtYJgvbJ8wb6EuYZosYpksYJY5TZs7U6E7VaE2ZqAuWZMuapwuY5kuXpk0gcA4j804j843kc02ks02kMw3rdc3tNo2k842jME8TJ08Sp48S548TZ02bq42t9o2p9Q2j8s4kM04kM45l9Q5ldM6sN06tt85lNM6l9U4kMg6ZKc7aak7bqo7YaY4d7c6u+I6rNs7n9o7ndo7tOE7vuQ7p9w7qN07r986pNk6uuE6vOE6ntg7ndg7v+U7seA9qOE9p+E9quE9reI9rOI8x+o9vOc8zew9ueY9ruM8xeo9t+U9puA+sOc+r+c+tOg+tuk9z+8+uuo+suc/s+k/suk/seg9zfA/uOo/sujwUHQ/AAAAtklEQVQYGQXBwU0CURgGwG/e/kAMCsty8Ugx1mBPFmVBxETFEA667HNGojd6Y86qz1m72SbQG3NWfV67pbaBBGK5Z916bZOgt3kllnvWUg96IwH+ejYt9Qj0PgAx/tQIuBcQpprwOfF1gPOz71GNXLLnIzucd/bUnvGEOsE0gTdgGby/AC51APAK0OoILAMAxzomAQDXntolAQCtp3ZJICA8XeOcJEnAPYbfpDZJkoRlsPSaN8k/5R0yHQvzkmsAAAA4dEVYdGljYzpjb3B5cmlnaHQAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55+Vd5NwAAACF0RVh0aWNjOmRlc2NyaXB0aW9uAHNSR0IgSUVDNjE5NjYtMi4xV63aRwAAACZ0RVh0aWNjOm1hbnVmYWN0dXJlcgBJRUMgaHR0cDovL3d3dy5pZWMuY2gcfwBMAAAAN3RFWHRpY2M6bW9kZWwASUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCRFNIqQAAAABJRU5ErkJggg==","aspectRatio":1.0979142526071843,"src":"//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=185&h=169&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=370&h=337&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=739&h=673&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=1109&h=1010&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=1478&h=1346&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=1895&h=1726&q=50&fit=scale 1895w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=185&h=169&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=370&h=337&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=739&h=673&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=1109&h=1010&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=1478&h=1346&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2T30PcQr5caJ36AncUnwHu/e3e45e1719bfb883bc0538de9057b833/Image_DeveloperInsights_Design_1.png?w=1895&h=1726&q=50&fm=webp&fit=scale 1895w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Developers resources collection: insights, trends and news | TinyMCE"},"metaDescription":{"metaDescription":"Constantly updated overview of developer resources to keep an eye for the most useful information on software and web development insights, trends, news and hacks."}},{"title":"Real-time collaboration is the new responsive design","slug":"real-time-collaboration-essential","featured":false,"lastUpdated":"Feb 3rd, 2021","description":{"description":"<p>Real-time collaboration is the new responsive design. We share why it&rsquo;s becoming essential for tools and what developers can expect.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Real-time collaboration is the new responsive design. We share why it’s becoming essential for tools and what developers can expect."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Different colored text boxes","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAMAAAAhxq8pAAACmlBMVEUIG0wJHEwJHU0LHk4KHEwIG0sLHU0KG0wIGksIGUsLHE0OIVAMHk0LHUwIG0oJG0sMF00GAEcEAEUGAEYIEUgIGUoJHEoNIE4LHkwMH00MHkwIGkkIEUcMKEwXT1wXTVwXTVsXTlwXUF0NK00HD0cLHEsKHEoIG0kLHUoJGkgEAEEhcm88zKw7y6s5yqk6yqo8zawkenQEAEAJGUcLHEkKHEgJG0cJG0gJG0YKG0cMHEkKGkcFAEAcYWQ2tJs3uZ4zsZg0sZk0spk1tJoeaWkEAD8IGEUIGUUIGkYJGkQJGUQIE0MAADsYYWMvn4wCAD0CADoHAD4HAD8IBEEJFEMKGUQLG0UIGUQIGUMJGkULHEgKGkMJGUIIGUIFFkIAAEEhS1gdI1YbIlEyQG8zQnEyQW8yQm8yQ3AzRXIpOWMGF0AJGkMLHUgMG0YKGkQGFz8AET0AAzoACEKYoLZcYXsaLV8cLFc0RnQ2SHc2SHYtPWgGFj0KGkILHEcLG0MHFz8ACjkAADYAADAAADOGjqJQVmsAACEAADQAE0APH0UTIUcUIkcVI0gPHkMIFz0KGUEIFzwCEzkAACmSmq+7xdy2wNe1v9a3wdmvuc87QlgEFDkGFTkHFTkIFzoJFzsJGDwJGDsIFzkBEjcAACOiq8DO2fLJ1O3I0+zJ1e7CzORFS18AAC4HFjgJFzkKGDwJFzoIFjcEEzUAAC0wN01ESl1AR1pARllCSVw/RlkADzMADjMIFTYJFjYJFzgKGT0KGDoIFTQIFDMDEjMAADIAACAAACUADC8HEzMIFTMJFjUKGTwLGj8IFDAIEy8KGkEGEzEFES8FEi8HFTQIEzAIFTIKGDkIEi0IEy4LGT4MG0MJFjcIEiwJFjQIFDFKPH1hAAAAp0lEQVQYGQXBsVITYQCAwW+P3wGZxNzFxoaCN/AJpODNtaWhoaZyhkIG0oiBybmrqio6VdWZ4WMEp7OjqtZzG4EUb+vlW5/HBmCdMP+etY750Bcg2GEd8wIAeGkaSwEAM2MfuP8OgLEHbmGtCcYCAII/Yw+Ep2+CZSxA2OOwbTqNHbBO4HW7w5jx60f9vEGbgjuP1xTPX/9VXXjyAN77e7g6VvXp/fw/Qcck1qEbbkYAAAAASUVORK5CYII=","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/4tEPRk1cyAfxNcKMYmaH7Z/40fb3d40c19ab4298810104f9d97f041/BlogImage_Jan2021_default_RTC-new-responsive-design.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4tEPRk1cyAfxNcKMYmaH7Z/40fb3d40c19ab4298810104f9d97f041/BlogImage_Jan2021_default_RTC-new-responsive-design.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4tEPRk1cyAfxNcKMYmaH7Z/40fb3d40c19ab4298810104f9d97f041/BlogImage_Jan2021_default_RTC-new-responsive-design.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4tEPRk1cyAfxNcKMYmaH7Z/40fb3d40c19ab4298810104f9d97f041/BlogImage_Jan2021_default_RTC-new-responsive-design.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4tEPRk1cyAfxNcKMYmaH7Z/40fb3d40c19ab4298810104f9d97f041/BlogImage_Jan2021_default_RTC-new-responsive-design.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4tEPRk1cyAfxNcKMYmaH7Z/40fb3d40c19ab4298810104f9d97f041/BlogImage_Jan2021_default_RTC-new-responsive-design.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4tEPRk1cyAfxNcKMYmaH7Z/40fb3d40c19ab4298810104f9d97f041/BlogImage_Jan2021_default_RTC-new-responsive-design.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4tEPRk1cyAfxNcKMYmaH7Z/40fb3d40c19ab4298810104f9d97f041/BlogImage_Jan2021_default_RTC-new-responsive-design.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4tEPRk1cyAfxNcKMYmaH7Z/40fb3d40c19ab4298810104f9d97f041/BlogImage_Jan2021_default_RTC-new-responsive-design.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4tEPRk1cyAfxNcKMYmaH7Z/40fb3d40c19ab4298810104f9d97f041/BlogImage_Jan2021_default_RTC-new-responsive-design.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Wilkinson","slug":"ben-wilkinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Real-time collaboration is no longer optional"},"metaDescription":{"metaDescription":"Real-time collaboration is the new responsive design. We share why it’s becoming essential for tools and what developers can expect."}},{"title":"To OT or CRDT, that is the question","slug":"real-time-collaboration-ot-vs-crdt","featured":true,"lastUpdated":"Jan 13th, 2020","description":{"description":"<p>If you&rsquo;re playing around in the real-time collaboration space, you&rsquo;re likely to come across these terms: operational transformation (OT) and conflict-free replicated data type (CRDT). But what do they really mean? And which one should you use?</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If you’re playing around in the real-time collaboration space, you’re likely to come across these terms: operational transformation (OT) and conflict-free replicated data type (CRDT). But what do they really mean? And which one should you use?"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Abstract illustration of text editor, containing text 'Hello World', and two cursors present.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAACkUlEQVQYGXXBS2ucZRQH8P85z3medy6ZS6ZJpmK1puJtpYJLXYjuBBeCIH4OwYVfws/hQtxIV668gEVBKyhk2o0RG9OZ6WTmncm8z+UcEysoSn8/2vtsqkCdKKmZ4VEc0HaIhqhgQkcQHESTlZTHYesqMjMYYIb/YcIFNUDIiq2btnmRzTldcZvHDzM7h3Zwh2MQ4dGIqKzPjz+/v2z6UiJyTPVMIQyOtDrFvxAuGf5GAIgQm1InCiSVJ2tVv94V6YbNsqQEGIhxwRk8IxsKQIRAcAQiUHKuJBpBrr7M8mDRdG7I2YOeWELHt9ziNG2iPPk0V514b6KrGAJZcAABIEKhZJYhOpnk40k6vFKitoftx64XsA36G+kPyGWPxbUbwr0wPcJqAWYQARklI0W49PwH8Wi9zvudA2YTO5trclXfvFuW1QYgabH45LEq2xC3HoClrNuooSs6PEiA74ZqZ7u8fTK7n11Locn7JiYvTuFCqKJUyZYL6F5p7RR1XIBCLrzxIZ/XBa3NZDnQW53R2c4T0ZfjcucnfPu9fvVDtT9rPxPqT74YvjnONz8dvv6Uqd+eJq36gkKmsMIlV4Zm8O6rZqb1uDrclfcHVtQ0u16n+ugt2e1hvcJqrn/Y/sFprKcMJRRiwAs1Xx+l30/qL2/Feye6qo2L5s36ux/zdAbSPJ93337JOHBuRq/tjV5cihUigECFqlQ9d/LxbWsMsiAw7c51Ecm4/uYud72Zwmz4XiXXx3mnZ8++IAwm47I+V98tr7zDDGbCQ2YgUkVRwC7ACfnpevvb4s4vyfpXhQ0ljGw95xiZCQTDP1RhBsIlAnSL2c8g6qK7SwrJmYzb6F9zDBAuGR5SQzH8Bxn+YjD7E5xUbHGOVy0aAAAAAElFTkSuQmCC","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Andrew Herron","slug":"andrew-herron"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Building real-time collaboration applications: OT vs CRDT"},"metaDescription":{"metaDescription":"What do OT (Operational Transformation) and CRDT (Conflict-free Replicated Data Type) really mean? And which one should you use in your real-time collaboration solution?"}},{"title":"Adaptability is key to your success as a software developer","slug":"software-developer-qualities-adaptability","featured":false,"lastUpdated":"Jun 7th, 2020","description":{"description":"<p>One of the most important software developer qualities is adaptability. Find out why it&rsquo;s so critical and how developers can be more adaptable.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"One of the most important software developer qualities is adaptability. Find out why it’s so critical and how developers can be more adaptable."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"A group of eight young adults crowd around a laptop.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAADnElEQVQYGRXBzW/bVAAAcD/72bHTfDZx0rVNQpt2XZp1tNWkoq1sB6i2ISakTRoHpImPC3dOHLjAiT8ATYIDgssQCAmEepiGQNBSRtu1S9s0zaZ8N0mbNLFjO3b8nu2H9vuB3P4ew/KQZQFDa5p21mrF4wmK2MjQbQsTChDHsV/ClmU1KsVMJrN4ebFaPVEUnQYA0DQANDAHutqotH//cdDXZLm7n93KHu5gjBxCKED1VFnr93xY46sHFkasW4BDPA0ADQANAI0s2yVw6bm07dgII8rRDV22sEUIkTtnhcKRpvYQ53JFxVK16FAAshDSDEMzL+UbzQe//ZyyFCpTu31tWe7KDmEJRRHHNrKbXu+wixfK3dZgbLJULq4k5+YvzdMQsggjRVNjfo/oDXzVY3r1gtslzM1fFwNhQ++fnTQspEunJ3JPwYAb8oVk1QiNjE6nZiFk4e72bm13/ebdd1/1+J9ZpbcXUqIYwRhrledc9zhfPt7f2fYL0Kg200tXbItSDEs3VOJYtI0GoFWIU6qJUIIy7vcPfNGEBehBXw1zTGcAHx0ppwZ9a/l19GK3dSY3291EbIJgtVTehw707NelwnbmvRu8zkVqG9lzd1iPJOX//gUp2DOVunY98OWnP13wgcrO3neHiDJb95YXuotLhy86oFGuff/1gz/W/kyvfMgSJ8p1gVf0MuRg9eGxpMy/85E/FB0obQiwm1jRkbFKubL+78ZB9XhhdgZaUtetNblw4pzoNZqVpdRUsVgcGH0L474rDBjI2Pbk+Kiitl2C8MrM+amR8Vgwcvfj+8bRJnPz/c9i4UAwGEhPxoMsEwUS45jDYZFieCKdtov5enaT8NyTtV//+W9z/uKlIazosqIR+lkuD755XJtyGwko1TZWy43m5VCTslXsnZJP6lg6JrQHjV596gQluT2dvBAf4pNjI4pi7/VsydAgj/u9zFqm+IiFHoxsxMeVTr3jCCYY9fgDQ+HY8Gu332B5DjK4086tPhSFN93D8TilJ+KTzBeffFBR0FaueXHxaldHE+MhmLziX1xxjaeednBGtgV/aHp6RgyFa08ek/qOXMo5gijGJl0eH0xGIO8+H/a4esVDxLkF3zCl1JTIDMNyycQEWyqUM9tA64luVq1kWYYVcAttfatGPxf8Iui3ypoNDVV9vv4XFRydDWA980MXh22jQzsmZZu2KZtqnhPGoDBCLGKZuoORGXvLSN34H6+NBEr56QH6AAAAAElFTkSuQmCC","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/2qCuzkMe5Mw3yXvl43jV5Y/ad7f614887d682612681731aba2adeca/Image_default_Adaptability.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2qCuzkMe5Mw3yXvl43jV5Y/ad7f614887d682612681731aba2adeca/Image_default_Adaptability.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2qCuzkMe5Mw3yXvl43jV5Y/ad7f614887d682612681731aba2adeca/Image_default_Adaptability.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2qCuzkMe5Mw3yXvl43jV5Y/ad7f614887d682612681731aba2adeca/Image_default_Adaptability.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2qCuzkMe5Mw3yXvl43jV5Y/ad7f614887d682612681731aba2adeca/Image_default_Adaptability.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2qCuzkMe5Mw3yXvl43jV5Y/ad7f614887d682612681731aba2adeca/Image_default_Adaptability.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2qCuzkMe5Mw3yXvl43jV5Y/ad7f614887d682612681731aba2adeca/Image_default_Adaptability.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2qCuzkMe5Mw3yXvl43jV5Y/ad7f614887d682612681731aba2adeca/Image_default_Adaptability.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2qCuzkMe5Mw3yXvl43jV5Y/ad7f614887d682612681731aba2adeca/Image_default_Adaptability.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2qCuzkMe5Mw3yXvl43jV5Y/ad7f614887d682612681731aba2adeca/Image_default_Adaptability.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Adaptability is key to your success as a software developer"},"metaDescription":{"metaDescription":"One of the most important software developer qualities is adaptability. Find out why it’s so critical and how developers can be more adaptable."}},{"title":"A Tiny road to Reason","slug":"tinymce-reasonml","featured":false,"lastUpdated":"Sep 21st, 2020","description":{"description":"<p>We are incorporating ReasonML in TinyMCE to take advantage of its guaranteed type safety, superb type inference, more advanced type system features, and the ability to compile to extremely fast native binaries.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"We are incorporating ReasonML in TinyMCE to take advantage of its guaranteed type safety, superb type inference, more advanced type system features, and the ability to compile to extremely fast native binaries."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Time-lapse photo of highway road at dusk, a stream of white light on the left and red on the right.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAADTUlEQVQYGQ3BW08cZRgA4Pc7zOzMnmcXdlksCLSgMYYeYmtDpKaxtTXGaNL2Rm8kxit/gBdeNsZf4YV3XmmMxhMJaQSE1kMTE2nTKKUIrKW7LOzO7M7M973vq88j3OsLwlqBKNFKQkASjEwEjMAsiQUTEwsmZgZmBlAACEwgdKlcYWsctApRo2VEQSjRSkJFBEQIjMSGGZksMTIJZgHAAHq+OpRLY2NSY41FlCbVNlVoJaIlSohS5hTgCETCnAKkzJYYgZlBz/s+AvbTQTcOm1GUGNM3adZxHK2tMYJIELlSFawpOP9zWQgAMEIaIXSys9kJe724b5kbWislQhShicMYGYAIs0oCSR/AGpKEWS/jKQXAynH19sMHE8Xyi5XqkJfxpZAMUorQmFYcd61NEfeTgRGAABpE2fM87WjX1Y6bSCWgOgJIl+u1C1MTRa19pUbzRRCi4vkoFQIUgZlwaXd3uj5y+qljh8Y+isJsJiNAiGpj3BB14wRqQX24kq2WHi7dgajzdnC8MXPirhlcC/LTvvvJxsZ4qTQTBIbp0417z1eqBdfVvptxrXFcTjuR0b6qDEPU8V66WH3j9aDR+GDQ23hwf2FpXQ81lttP7L274BWA1D+7e0Cs00EfAASi7g9s2Ptb0Ts3P37z1Vfyufzt5eXTEFfKhR/r3upedLI2hmNn04OtuLubJAaYVC6TY4uqkFWNWm1ubuG99+fmzpcKha9Xby/+vPJWoVBM6Hy1vm8Of9rbhuIEHrakCR0ps1pqUcw5teEBw9SpM1euXq0G5TgM/zrsfvn94mNINqNkNow8AzcnZ/MGPt9fLx61tRFKSimEyj3zbD+xs5euvHz5ElgMDw7K5dKtO7//8sOi4ztP1xvzrXbTCO7HF/JVRlyLIw9RMzAIFYxPXbx+44VTJ4/anebW9sSxRrPT+/arb/SjraCQwZHRM48Pp9lZaXXKvf7ZYKio5VIc+cwKSb324UczoyOtf/c3/9w4PjmW8XOr678O1pa5H4Gr7HBtLLHP7fSCTvpF78mJIzNdGx73M/f7vVRLOVMptVvt726tTI4Maa332+2d9TVvEAmD2B8MDlq/ZVW72QkQznXFZ92m/8feuXzl3bGJDPF/0UvmX79MqwsAAAAASUVORK5CYII=","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/769iuq6HFbLRFFch3CrhSy/d7cf38e382559adbf73aa7ef4e09d26e/Image_default_Road-to-reason.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/769iuq6HFbLRFFch3CrhSy/d7cf38e382559adbf73aa7ef4e09d26e/Image_default_Road-to-reason.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/769iuq6HFbLRFFch3CrhSy/d7cf38e382559adbf73aa7ef4e09d26e/Image_default_Road-to-reason.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/769iuq6HFbLRFFch3CrhSy/d7cf38e382559adbf73aa7ef4e09d26e/Image_default_Road-to-reason.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/769iuq6HFbLRFFch3CrhSy/d7cf38e382559adbf73aa7ef4e09d26e/Image_default_Road-to-reason.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/769iuq6HFbLRFFch3CrhSy/d7cf38e382559adbf73aa7ef4e09d26e/Image_default_Road-to-reason.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/769iuq6HFbLRFFch3CrhSy/d7cf38e382559adbf73aa7ef4e09d26e/Image_default_Road-to-reason.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/769iuq6HFbLRFFch3CrhSy/d7cf38e382559adbf73aa7ef4e09d26e/Image_default_Road-to-reason.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/769iuq6HFbLRFFch3CrhSy/d7cf38e382559adbf73aa7ef4e09d26e/Image_default_Road-to-reason.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/769iuq6HFbLRFFch3CrhSy/d7cf38e382559adbf73aa7ef4e09d26e/Image_default_Road-to-reason.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Andrew Herron","slug":"andrew-herron"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"TinyMCE’s Road to ReasonML"},"metaDescription":{"metaDescription":"We are incorporating ReasonML in TinyMCE to take advantage of its guaranteed type safety, superb type inference, more advanced type system features, and the ability to compile to extremely fast native binaries."}},{"title":"Agile, waterfall, or hybrid: what’s right for your development team?","slug":"waterfall-vs-agile-development-team","featured":false,"lastUpdated":"May 7th, 2020","description":{"description":"<p>Agile is almost synonymous with software development, but that doesn&rsquo;t mean your dev team should automatically adopt it. We talk about alternative approaches and what to expect when you transition to agile.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Agile is almost synonymous with software development, but that doesn’t mean your dev team should automatically adopt it. We talk about alternative approaches and what to expect when you transition to agile."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Pineapple painted pale orange and green sits on a blue background.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAACV0lEQVQYGQXBPW5dVRSG4fdbe59zg23lRibYCcigUICQEgRNhERJxRCQaBAFs6DJOBAUDIARMABSUiBEZBHsACH+ybVv7s/Ze63F84hHv1EKRRTDhAHCBCL01a3p+4Udpj93SAjHE3falm2vmDBhhgkTBqkvdttn+9eX0/jwzvbevzs/ndXniEgQARKCahUTBkUYGEhIl1k+nZ++rZPLcvhi9+jb/24jsARhiUMpkAZCQiAhYUJaO0MPK9o//2VYLaAgwwwJExIIYZAIAAAAkp657lhbzIa249fvFgeBEEhIIJCRSQQReBIQEHwyrA/GxVAySn3L/rqviRQBAREkpAhVInABCBIMkpfNoliayjC6xn8mEUEkkfQgAg86xpS0oDk96EFPWn539dqz6SDqzrLxq997vBlpgSc96UkLutNbpTmZZGJgYNDz0cPd2x99eLY9uujctfmXMf143ClBD3rgTnd6VHqHAolBgUyq7r8zXs1m5cYtTx+2q/cON/zhZOJBOO64417JwA1L5KRIfVByr12fL3HvU2+rtk06JB6Ek0EEEURUJDLogKEAu2p58Opv37v7p++s1u16mpaT0xwc74TjQQZkRZBJJp5kYP3ZVpuNv++nK7/ze46TbLFas1hSwQQCkKjFIAEAA0uUn9/so2/65tXR5vjNfnG29ienS9pEBoBBLYyV2VCRyESJksGY6esH2wdvLPt6Oa3b7OLpyfH+z09fZ76HACgFE2ZAxYREKVRRjPHGNyd7L+Lmx/OXtl09Ph9+WM85HNhsCMdgGDEjIeJ/+jhprlqRihwAAAAASUVORK5CYII=","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/4tDsBx08Z8InkWXqt5XOuk/2cf53cd6878ad6e5acb2d4dc828ae63a/Image_default_AgileWaterfallHybrid.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4tDsBx08Z8InkWXqt5XOuk/2cf53cd6878ad6e5acb2d4dc828ae63a/Image_default_AgileWaterfallHybrid.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4tDsBx08Z8InkWXqt5XOuk/2cf53cd6878ad6e5acb2d4dc828ae63a/Image_default_AgileWaterfallHybrid.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4tDsBx08Z8InkWXqt5XOuk/2cf53cd6878ad6e5acb2d4dc828ae63a/Image_default_AgileWaterfallHybrid.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4tDsBx08Z8InkWXqt5XOuk/2cf53cd6878ad6e5acb2d4dc828ae63a/Image_default_AgileWaterfallHybrid.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4tDsBx08Z8InkWXqt5XOuk/2cf53cd6878ad6e5acb2d4dc828ae63a/Image_default_AgileWaterfallHybrid.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4tDsBx08Z8InkWXqt5XOuk/2cf53cd6878ad6e5acb2d4dc828ae63a/Image_default_AgileWaterfallHybrid.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4tDsBx08Z8InkWXqt5XOuk/2cf53cd6878ad6e5acb2d4dc828ae63a/Image_default_AgileWaterfallHybrid.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4tDsBx08Z8InkWXqt5XOuk/2cf53cd6878ad6e5acb2d4dc828ae63a/Image_default_AgileWaterfallHybrid.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4tDsBx08Z8InkWXqt5XOuk/2cf53cd6878ad6e5acb2d4dc828ae63a/Image_default_AgileWaterfallHybrid.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Dallas Clark","slug":"dallas-clark"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Should every software development team adopt agile?"},"metaDescription":{"metaDescription":"Agile is almost synonymous with software development, but that doesn’t mean your dev team should automatically adopt it. We talk about alternative approaches and what to expect when you transition to agile."}},{"title":"Comparing Implementing Collaboration: TinyMCE & CKEditor","slug":"tinymce-vs-ckeditor-collaboration-implementation","featured":false,"lastUpdated":"Nov 25th, 2025","description":{"description":"<p>Compare collaboration features in TinyMCE and CKEditor, including comments, revision history, and real-time editing. Implementation effort included.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Compare collaboration features in TinyMCE and CKEditor, including comments, revision history, and real-time editing. Implementation effort included."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Comparing Implementation in CKEditor and TinyMCE","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABuVBMVEUJElMKE1QAB08ABU4ABE4AA00AB04JElQJE1QEDVEAAE0AAU4ABk4ABU8AAk4CDFAEDlEGD1EIEVIIElMAAE4EGV0rMWkkKmUuM2ksMWkpL2gwNWoxNmsyN2suNGoYHlsAAEgEDFAAA04AAFKFhpaFiJo0Qnk9RHtBSH0/R3xMVIRGTX5CSXpBSHo2PW4pL18dJFkAAU0ACFAACFWHiZhRYJNlb6Fca6Vdb6Ribp5qdaSltdumtt2ktNqltNujstl/i68AAEkADFIAAFAUJGRVYJNga6JdbaBcc5xfbZteZ5l2gq1rdqBkbphkcZlgbpZdaI9GT3cFDlEjKWNUXo9eaZ9eaZ1gaZdfaZdZY5RPXJEvOXUbJGYgInFFHJgWGWYAAE8DC1AFDlAIEVEfJmM9SJNET5lCTZhDTphCTZk0Q4RVQ248Om0oNW8sMnVMVnspPF8ADFMACE8IEFEAAEoKGGRebM58h+B1gt54hN5xft8vRJ6FSz5gP1gNJmMcJ2APIVsACVIJElIMFFIACE4EE14IFmAAEV8CEl8EFWEAE1k0LlYgIVYLFFQCC1ACC08AB00AAEQAAEWAlhNmAAAAmElEQVQIHVXBPQ7BAACG4e9tG23aJtrJIJKG2QFMNrvFOUicwGxwBOEUNqvdZpBgkhgspWjrN5I+DwIh9Eau3BQJDvcSiXORG3vcbITAMILY40V8HSt7jIgPiZ9DzXIDOJf5E+EKP21RtBB+Z2m0KZhbcdCdhRRk+L2QgnHysOyIbZ2fUWOdme7VOnk0mQwkdlPFm7Sv6vAJVJckrHdnKzQAAAAASUVORK5CYII=","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/3W3sUzUnjIF1kp32gUGVQI/a2f3012e87e992acbedeab4852416eb9/Comparing_Implementation_in_CKEditor_and_TinyMCE.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Coco Poley","slug":"coco-poley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"TinyMCE vs CKEditor: Collaboration Implementation Comparison"},"metaDescription":{"metaDescription":"Compare collaboration features in TinyMCE and CKEditor, including comments, revision history, and real-time editing. Implementation effort included."}},{"title":"Comparing Implementing Collaboration: TinyMCE & Froala","slug":"comparing-implementing-collaboration-tinymce-and-froala","featured":true,"lastUpdated":"Nov 6th, 2025","description":{"description":"<p>Compare how much effort it takes to implement collaboration tools - comments, mentions, version history, and more - in TinyMCE vs Froala.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Compare how much effort it takes to implement collaboration tools - comments, mentions, version history, and more - in TinyMCE vs Froala."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Comparing Implementation in Froala and TinyMCE","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAALABQDAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAgMHCP/EACgQAAIBAwMCBQUAAAAAAAAAAAECAwQFEQASIQZRBwgUFTETFlJhgf/EABoBAQABBQAAAAAAAAAAAAAAAAMCAAEEBQf/xAAhEQABBAEFAAMAAAAAAAAAAAABAAIDESESMUFxgRORsf/aAAwDAQACEQMRAD8AxB4O+G9p6/qKn3W4xxsF3CIbt6YI5OCODnH811WaZ7H6GtNVvx14tVTQzVebqvrKoF38vdhgoK9LdKJ6xIGeMtLsG74XlnA+dTh+eY23joInOaMFQXrWSilv0kdss32/BTokElH601Y+qoxI4kP5Nk4HAzxrJYySK2Su1HoD8SamOyAkeqnoZmamnkpmwATC5QkduNRAB3R2gHV97S319u91q2obgI1qoHmZlmCNuQNns3OrmKMuDyMi69TjYpSoqwxYUcr2/Z1XKA5X/9k=","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1m3Oz5274jXLX3XftB6Xu5/d8fe08bb03076779f11400d30413d0c7/_TinyMCE__Blog_Header__Comparing_Implementation_in_Froala_and_TinyMCE.jpg?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Coco Poley","slug":"coco-poley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Comparing Implementing Collaboration: TinyMCE & Froala | TinyMCE"},"metaDescription":{"metaDescription":"Compare how much effort it takes to implement collaboration tools - comments, mentions, version history, and more - in TinyMCE vs Froala."}},{"title":"Comparing Implementing Collaboration Features: TinyMCE and Tiptap","slug":"collaboration-features-implementation-tinymce-and-tiptap-compared","featured":true,"lastUpdated":"Oct 14th, 2025","description":{"description":"<p>Compare the level of effort to integrate collaboration into Tiptap and TinyMCE, and how much coding and configuration is necessary.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Compare the level of effort to integrate collaboration into Tiptap and TinyMCE, and how much coding and configuration is necessary."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Comparing Implementing Collaboration TinyMCE and Tiptap","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABrVBMVEUJElMIElMACE8AB08ABk8GEVMHEVMABE4AB04KE1QEDVEAB08ACE8ACFAADFMADFQAClEACVEAClQAEFUEElUABU8AAU8AAE8AAFAACFQ7L1dKMlYAE1YABlEAFFZTOVQ8K1cACVMsH05CLEw+KU1AK0w9KU1BK0xGLkxCK0xFLUxJMEwkH1RGL1ZYM1UAG1wAC1cAHV1pPlNMLldYNkqKVkOQWkKGVEONV0KHVEODVEN7T0R8T0WCVEVdPEwACFYAGVwvNWFJS2ssNGEAGl0AEVYAAE1SLlCDRk2EP0V9Qk2ESE50PEwdF1IAAE4AAEsAAVEADFhSVHCOjptNT24ADlgABk8AAEhWWXOSlKGWmaWjpa+YmqaLjZuDhJOamqaZmqWEhZQADFIAElcAHl0bJltER2kXJV0WI10OGVcACFEAAEwTGVJCRWZVV3FHSWhERmdBQ2UzNl1TVG9PUG0AD1NvREtUM1MAHFxnQlBUNFYAA04AAEkAAEoAFFRvO05WLVMAElUABlAAE1U5J1cuIlgACVIABU4AD1IAEVQAE1QADFEAClIAD1QGElQtkPicAAAACXRSTlP+/v7+/v7+/v4itX5mAAAAfUlEQVQI12NkYGRkgAEg6z8jCHDCBBkZQNw/rECChQeukhEOWJi4GdHBfRYGIQzBWyz6cDbDfyYwfcKTMZwRE7CIwBWCiJP/LRkZZzBWn+bUBTrnki7DZbhJzGceR7OxTeZlkZuiIsfGxtZ2yomVlRHJR0zMDH/+M7D9YwAATocVpRCoAqQAAAAASUVORK5CYII=","aspectRatio":1.780758556891767,"src":"//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=1109&h=623&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=1478&h=830&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=1925&h=1081&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=1109&h=623&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=1478&h=830&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/7BBFYSN5SWgsjNdMkF00H9/af69b9548a29e6acbd9fff4d3124cf8c/Comparing_Implementing_Collaboration__TinyMCE_and_Tiptap.png?w=1925&h=1081&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Coco Poley","slug":"coco-poley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Collaboration Features’s Implementation: TinyMCE and Tiptap Compared | TinyMCE"},"metaDescription":{"metaDescription":"Compare the level of effort to integrate collaboration into Tiptap and TinyMCE, and how much coding and configuration is necessary."}},{"title":"Why TinyMCE Is the Right Rich Text Editor for CMS Projects","slug":"why-tinymce-is-the-right-rich-text-editor-for-cms-projects","featured":true,"lastUpdated":"Oct 2nd, 2025","description":{"description":"<p>Find out why TinyMCE is the perfect rich text editor for CMSs, from collaboration features to content conversion to media optimization and more.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Find out why TinyMCE is the perfect rich text editor for CMSs, from collaboration features to content conversion to media optimization and more."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Why TinyMCE is the right solution for a CMS","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABxVBMVEUKE1QACE8ACFAACFEOFVIIFlQTHFggHlgAElUJE1QDDVEABk8AB08AClAIFlUVG1YHFlYOGVYBD1MAElZAKlZoPU0UHFcABE8AAE8AAk8AAU8AAU4AAk4AClImHlVZMk0eIVoWJFwCGlgEHVoiJ1wwKFcKHFg2Jk1bPEo/JkxAIE1SJ003FU5UHlBaH1FUHVAABlAAElQeGlYEG1oIHFhNJ0w4IE4AG1kNF1QAAE5kREWkbDWbWjh6PEGSQEKgP0qpOlGjNVKTLlAAAEkHFlUAFVcHG1hSL0tAKE0AGVgDD1IPF1MAAEhSVHB3eImGg5BvboKHiJaDfo16eYqFhZSIh5Z5eosmK1kIElMdGlQRH1kIGlcXIVoRGFQAAEZaW3R1dohvcYR7fY2XmaRnan9TVnFcX3ZcXnZXWXMTHFQyIVJrP0sADlQBEVQQGVUBCVBWV3F6eotra4B6e4yKi5hOT2wAAEQAAEcAEFMaIVcnIVMmIVc8JlQSG1UKE1IAAE0AAEsABE4AFVNdL05ZK04AB1A7JVNhOk8IElQCDFEAA04HF1RJL05FLE4GE1ILFlMCDlEFD1ILFFQHFFIAD1MHE1IABU9as10IAAAAkklEQVQI12NkYGBkgAJGxv9MQAIIOIH4K1iMhxEOxBkhipABCyM/Ixq4aMBoieB944apFEYIigDxeyFGxuUsQihaz5oACQ5GHxUo/9D9BAijmYHFmPEMg/ZzpZ0enoyM/5gZGY8cYGBg4uS0u7B0H+PlBk4gqOXgcP024T9LxaQqhq8MDQzcHIxPZDk5Gr8AfQgAtA4dxOtwuy8AAAAASUVORK5CYII=","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1TAGispnUU2xwtPVjoopsx/927256ed2a0f6bbfa52ea341e2faacfa/-TinyMCE--Blog-_-_-Why_TinyMCE_is_the_right_solution_for_a_CMS-.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Coco Poley","slug":"coco-poley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Why TinyMCE Is the Right Rich Text Editor for CMS Projects | TinyMCE"},"metaDescription":{"metaDescription":"Find out why TinyMCE is the perfect rich text editor for CMSs, from collaboration features to content conversion to media optimization and more."}},{"title":"Full Page HTML Returns: Complete HTML Document Editing in TinyMCE 8.1","slug":"full-page-html-returns-tinymce-8-1","featured":true,"lastUpdated":"Sep 30th, 2025","description":{"description":"<p>TinyMCE 8.1 brings back Full Page HTML&mdash;secure, modern, and built for complete HTML document editing for emails, reports, and CMS templates.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TinyMCE 8.1 brings back Full Page HTML—secure, modern, and built for complete HTML document editing for emails, reports, and CMS templates."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"A screen shows an abstract of an editor that includes HTML markup, including the ability to edit both the head elements and the body element in a single screen.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABoVBMVEUJElMKE1QACE8AB04ABU4ABE4ABk4JE1QEDlEAB08AAk4AAU4ABE8ZI14tM2kkKmUtMmgrMWgqL2gzOGw1Om0yOGsgJl8AA04ABk8OE1I6IVE8LV85Qnk4QHg+RXs+RXpDSn47QnE4P2U2PmUoL1cHD00ACFAfHlZZNE1QNltVYJJkb55rdqVsd6Zsd6dkb6BKU4A9SXRBTXs4RG4RGVAACFEBClAMF1UAEFIhK2VYYpRocqFteKdoc6NibZ5KUn0tNlYsNFIME0wCClIBCVACClAMFFMjKmVdZ5hwe6pyfqxzfq1zfqxxfKlueaZMVH4sN2AuOFwpMEwKEksBCVEBCk8ME1IhKGNGToNQWYtPWIpPWIlPWIxNWJxNWJ1ATI4uO24xOl4rM04IEEoAB1ABCU8LE1IUG1kaIF4WHF0WHFwVGlgXJXlgcNpzgeRte98uPogtNEkjKkEHD0kABlAFD1EMFFIIEVEGD1AEDlAEDFAEDE8DCk0AClIXJHIcKHUcKG8cIksRFDQOEzcFDUoLFFQAAkoAAEIAAD4AAEEAAEozpH9vAAAAfElEQVQIHQXBsU3DUABAwXeOwaKJvQgTsBALpCMNiHUYgZKOXVCojCCfOxGVqjH9NoaFv67TqG7yM8btGKalA4jgsje3AkYTuNS8HAGuB7B95u4efB+D4H1u9fHACsBbc5t9AwA1t2kDAKUTAOB17POynavyAs+PX52f/gGRyR5Wla7YcwAAAABJRU5ErkJggg==","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4ymgkoblToFt0GvJ32Hwku/3a21f8f4ebc8a5ae86a2e82b7e59fa52/New_Full_Page_release.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Coco Poley","slug":"coco-poley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Full Page HTML Returns in TinyMCE 8.1 | TinyMCE"},"metaDescription":{"metaDescription":"TinyMCE 8.1 brings back Full Page HTML—secure, modern, and built for complete HTML document editing for emails, reports, and CMS templates."}},{"title":"Simplifying User Identity Management Across TinyMCE with User Lookup API","slug":"user-identity-management-with-user-lookup-api","featured":false,"lastUpdated":"Aug 20th, 2025","description":{"description":"<p><span style=\"font-size: 11pt; font-family: Arial, sans-serif; white-space-collapse: preserve;\">Discover how the TinyMCE User Lookup API unifies user identity management across Comments, Revision History, and Suggested Edits.</span></p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"span","properties":{"style":"font-size: 11pt; font-family: Arial, sans-serif; white-space-collapse: preserve;"},"children":[{"type":"text","value":"Discover how the TinyMCE User Lookup API unifies user identity management across Comments, Revision History, and Suggested Edits."}]}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Simplifying User Identity Management Across TinyMCE with User Lookup API","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABnlBMVEUJElMKE1QACE8ABk4ABU4ABE4ACU8AB08GEVMHEVMJE1QEDlEAB04ABk8AA04HD1EEDVAEDlABEFIAGFcAEVQEEVMABE0eJF4tM2kkKmYrMWksMWkqMGgzOWw1O242PG4eJl4aGVVdN1U6K1cAA1ABCU8KElIIEFElK2U8Q3k7Qnk+Rns+RXs/RntBSHw8QnYyN2kvNGcbIlgZFEprQElAL1YAA1EJE1MAC1IkLGZcZphteahteKdmcaFYYpRHUIo4R6ZGVK5AT6o1RqYSLH0ADk8DDVEJG1koIFkoM2pcaJlueahsd6ZibJ1IUpBZa9Nufd1hcNVXaNMeMpIAAEYABU0ADFESI11wO0tIO2JXZ5hsd6VncqFmcKBha5xWX5NXYI+Yps2LmL8aImAAAE0AA00ABk0MGVc1KVcwOGpMXJVQXJVTYJlUYZtSX5hFT4c2PXU4P3VeaJJWYIsdI18AAEsACE4AB1AABlESHlwxPHMwO3M0P3c5RHw1QHcoMWoZIF4YH14KEloPFlsSGVgAAk0AAEkAAEgAAU0LFFQSppsqAAAAhklEQVQIHQXBsU0DMQAF0P98diROLhzooWQQFmEUoMsi9GzARugogtCFmPeEEElynamB1aXth/k7k5X9AEq73GEWcF2gtnuAANDrI0gAfFqewDaPtgGoGfD9gFvAe60fzzgCsI1zTQYAeC17rPy8icyvkeXvpew35ziV0mttrdWl915KOfkHr1UfAAWQlAgAAAAASUVORK5CYII=","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6JIHk6uxQAQymmfo9HEK5P/dfc3abab083915ae004a729c16c9132b/Simplifying_User_Identity_Management_Across_TinyMCE_with_User_Lookup_API.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Benjamin Chau","slug":"benjamin-chau"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Simplifying User Identity Management Across TinyMCE with User Lookup API | TinyMCE"},"metaDescription":{"metaDescription":"Discover how the TinyMCE User Lookup API unifies user identity management across Comments, Revision History, and Suggested Edits."}},{"title":"Improving the Developer Experience with TinyMCE Developer Center","slug":"improving-developer-experience-with-tinymce-developer-center","featured":true,"lastUpdated":"Aug 13th, 2025","description":{"description":"<p>Explore how TinyMCE is leveling up its developer experience in 2025 with the launch of the new Developer Center, tailored for real-world use cases.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Explore how TinyMCE is leveling up its developer experience in 2025 with the launch of the new Developer Center, tailored for real-world use cases."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"TinyMCE Developer Center","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABiVBMVEUKE1QAB08ACE8ABE4ABU4ABk4JE1QJElMCDVEABU8ABk8ABFEAAFIAA1EABE8AAE0AAU4DDFEJElQAAk8AAE8AA08ACFMrMmBDR2owNmIAD1UxNF8zNmAhJlgZE02DWUGGVEKNTUWdTUiYP1BjIlAAAE4AAFRhZHyenqhvcIUAAFZ6e42jpLA1OGAACk9nUVp5TEmDS0t7QlJ2MFBPI1MAEFYnLl55eos1OWIAEVg2OWBcXnYACFEAAEozNl6cnqmWmqaYnKieoq2iprCXmqU5PGAAAEwACVIAF1kAHF4AF1oAFFgAE1kAB1gCFFYABVAAAEscIFR1dohub4J0dYdwcoRYWnM6PWEeH1dUM1YlJ10AHV9gYnqAgZEqMF8nKViHiJaVlaGXmKORkp4rLVkAAEgnJFhlQVAtMmMAKWZ/gJGmpq8+QmcAAFEAAEkAAEcAAEYAAk4DFFUAHlwAIF8AHV4pMWE7P2cOGlcABlACDFEACU8ACFAAC1IADFIABlMEDVELFFQAB07MiIrRAAAAlklEQVQIHWXBMQ7BUADH4f/v9bVEmmoiYpYuEmdwBpPdBRzAWLvVJQw2i3PYRNKEwYg0Bonn5dXm+5BAgTMScgZsYpDQC6mNJ7wsRh61UhrP2iYdgvyW03g4+84J7oMuDQcT/uxtj8a2uEwJdh+rjKC4khHMN/Y4HEFdjU8o5cdWs01fOh/QEnBmvWhFUolnAlZxFNlSX1WpHy8jzz5nAAAAAElFTkSuQmCC","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4J9rhe3agXZVgj760rgCiZ/42dcc015dbe61b22457e163f392689ad/TinyMCE_Developer__Center.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Frédéric Harper","slug":"frederic-harper"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Improving the Developer Experience with TinyMCE Developer Center | TinyMCE"},"metaDescription":{"metaDescription":"Explore how TinyMCE is leveling up its developer experience in 2025 with the launch of the new Developer Center, tailored for real-world use cases."}},{"title":"Tell Us What You Think: The 2025 TinyMCE Developer Survey Is Now Open","slug":"tell-us-what-you-think-the-2025-tinymce-developer-survey-is-now-open","featured":true,"lastUpdated":"Jul 23rd, 2025","description":{"description":"<p>The 2025 TinyMCE Developer Survey is open! Share how you build with rich text editors and help shape the future of editing experiences.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The 2025 TinyMCE Developer Survey is open! Share how you build with rich text editors and help shape the future of editing experiences."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"2025 Rich Text Editors Developer Survey now open until August 5th, 2025","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABjFBMVEUJElMIElMKE1QAAE4AB08AAEoAAEgAAEwAB04AAEkAAEsLFFQJE1QKE1QACE8AB08ABk4ABU4IElQCDFEABE4ABk8DDFANFFIME1IMFFIOFlQAAEsAAEcAAEwHD1ELFlUBElUCElUED1IGDlEPF1NCRWZyc4ZwcoU0OV8AA08ABE8AC1ALE1MPHFkEH10AHGAAHl8BGVkADFIOFVNcWHCPi5eIh5RMR2URC04VDk8aEU8ZEE4GEFEEFFQAHl4xKlRnSUpaOU0CIV4AFFcOFlNjK0KNPjGJOzOSRTeTSDx9QEaNTEiKS0mST0hIKVAAD1UAIWJTOlKMU0WCQ0oSJmAAGFpVVG+IhZN9eoqIg5GNh5RUUmwfAUsfEU4zGk4ZFFEAElQAH14eH1djM1BCIVIDIl4FGFgRF1Q8P2NmaH1cXnZrboJnan84PGEBD1IHEVIAEVUAH10AI2IAIV8RIVwLFFQIEFEAAEYIEVIIEFIGElQFFFYHFFUPF1QDDFEEDFALElIID1EGD1IMFFSOpqeZAAAADXRSTlP+/v7+/v7+/v7+/v7+JG0F5gAAAI9JREFUCB1dwU0OwVAYhtH3ufn0NkWaNrEUS7AKQ1uwDyxAjMwlNmABprZBwqB/iYvSpHEOGqMOSIKrESEqtTwg4czFiNAEST6m5cwlgCZIdGSkwCOlR0YG5PTczFzGn/xk5HwcRprxI6uOaL6nuCs5T3nbSO65KMttWdYh+MsuGphp6W1Y1Ppa+WYtBVG8AOOaIQiqqypMAAAAAElFTkSuQmCC","aspectRatio":1.7833333333333334,"src":"//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=370&h=207&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=739&h=414&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=1926&h=1080&q=50&fit=scale 1926w","srcWebp":"//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=370&h=207&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=739&h=414&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/5qdYVJWkent9FOyuyplJgg/20d4adcbbb491871ef5405de711f9484/_BLOG_HEADER__Survey_Launch_Blog_Post_-_Tiny.png?w=1926&h=1080&q=50&fm=webp&fit=scale 1926w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Coco Poley","slug":"coco-poley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"2025 TinyMCE Developer Survey - Share Your Feedback Today | TinyMCE"},"metaDescription":{"metaDescription":"The 2025 TinyMCE Developer Survey is open! Share how you build with rich text editors and help shape the future of editing experiences."}},{"title":"Text editor developers 2023: Survey says RTEs are core component of everything","slug":"text-editor-developers","featured":false,"lastUpdated":"Oct 3rd, 2023","description":{"description":"<p>Insights about developers who work with rich text editors: their experience, preferred programming languages and comparison to the previous year</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Insights about developers who work with rich text editors: their experience, preferred programming languages and comparison to the previous year"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Survey results represented by charts and percentages with several media images involved.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABDlBMVEV28dt28tt18ttz8tt08tty8ttw8ttx8ttz8txy8tyN5+B379xt89pu8tpv8tt18tx08duT8N6f7t6X8eB+7dKD6tKp3t6d596X6uCa6uGW6d+F69tu89uJ7dR+79hz8dvA8ebY7OfJ8eh+6NGh49Po4+Ty6fL36Pr56f316fnM09+H4tet48+M7dR18duB6N6yruOv4dD59/f8+fnr8fnM1tve4+ncwvLdwu6Xz+Fw89py89t86t7Nwbbe3rLq8vL7+/vV2eXPt43Hwbu/y+WQ1N1249t08tpz89x28deI79qJ49ak49eh2c+Wz7uj182d4NNt79Z18dp08txv8dpt8dpu8ttv891x89x28tzui5r6AAAAdklEQVQIHVXBOxLBABRA0XuTjBRINpAtWIBeawFWqVFr9dS0ZtLRKIw8iU/COfIiBD3p2GoICDqSpH7dHqP8GpAlhb2pygUySv/UBunsVB2rfDCtQUjm/jgfggRiN+ltx/sAAYvFZmlrfW8YqGVrpdKSD4Hg7Ql/oBwNQMUUyQAAAABJRU5ErkJggg==","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/7Gxv5uyBVNHWaO4HvR4Gj/f0671b79dd25b449a71931c094fee426/text-editor-developers-in-2023_-77-say-a-rich-text-editor-is-critical-to-their-app-2023091920381562.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Di Mace","slug":"di-mace"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Text editor developers in 2023 | TinyMCE"},"metaDescription":{"metaDescription":"The freshest insights about developers who work with rich text editors: their experience, preferred programming languages as well noticeable changes in comparison to previous year."}},{"title":"Looking for a rich text editor? Start with our Rich Text Editor 2023 Survey","slug":"rte-motivation-expectations","featured":false,"lastUpdated":"Nov 8th, 2023","description":{"description":"<p>Discover glimpses of the future through the rich text editor survey results, with trends showing more on&nbsp; users migrating, new technologies being employed, and more on AI</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Discover glimpses of the future through the rich text editor survey results, with trends showing more on  users migrating, new technologies being employed, and more on AI"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"charts and documents under investigation representing the survey results analysis","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABBVBMVEXw3j3w3j3w3j3w3jzx3jzx3zzx3j3w3jvx3jLx3i/w3jbu3T3v3j7x3zvx3jHw4G3x4F/i2m7O1mna2V/y3jXt2zLw3znx3zbx3jbw3jnw3A/v6LT7+O7l5sTF1IrQ1Xfv3Ufby2/tzivq3k7o3Vrx3TTf2lKz3cHr9/z5+P3p7d/X13vn2GHNp7HswHTm7dDg4qfx3iPx3jvy3jHN0nO32bHr7M/29vj39vPs3GTs2S/txHTx1XD08+jq46Dx3iLp2EbOw2Pr2zfw3S3v4pHx683p2mHt2i/s2y7s3EXv4ozw30zu3EDt20Hx3zfw3jPw3SDv3j/x3znu3D7w3i3x3jnx3z0vNOPWAAAAAnRSTlP9/o2EjdMAAAB2SURBVAgdXcHLDYJAFIbR77/eMREfOxuwBHrBbo0VkNgH7NywwLlORiPEc4T4Fy5RSAIxU0kCkqqJyEBIAmv0M2bCKc5aMGYk+euitUc4oJNWnuDA7qhFP4DBPB2q2/7eNP0QgMy2KSVvu9avyTdmpoIPBV/xBtTiGuFFO362AAAAAElFTkSuQmCC","aspectRatio":1.7816836262719704,"src":"//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=1478&h=830&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=1926&h=1081&q=50&fit=scale 1926w","srcWebp":"//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=1478&h=830&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/35JZiiZ73QCRDt3soUGowG/e2085e9c0acb478d16752f45569deca0/img-looking-for-a-rich-text-editor_-see-the-future-in-2023-rich-text-editor-developer-survey-report-2023110621420531.png?w=1926&h=1081&q=50&fm=webp&fit=scale 1926w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Di Mace","slug":"di-mace"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Motivation behind choosing rich text editors | TinyMCE"},"metaDescription":{"metaDescription":"We cover main motivations and expectations that lay behind the choice of building a rich text editor or using a third-party tool."}},{"title":"Working with rich text editors in 2023: Industry overview and challenges","slug":"rich-text-editors-industry-and-challenges","featured":false,"lastUpdated":"Nov 1st, 2023","description":{"description":"<p>Insights from developers who work with rich text editors on the industry, editing experiences, main challenges and the most important features.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Insights from developers who work with rich text editors on the industry, editing experiences, main challenges and the most important features."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"The words industry overview and challenges with different charts and icons around it, including a happy face and pen","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAA6lBMVEWYovyYovyYov2YovyYov2Xov2Xof2VoP6Xof6an/2XoP2XoP6WoP2YofyXofzIwtrHwtmWov2WpPjJqtadreGRpPmmrOWgpu+Zov2Zo/2Zovvdz8LXzcuVo/ydrO7M5+Dl7szY7NbP6+Ld69Wjr/WapP2fpfmMs+5ou+eno9rx8Ozw8PDw7+/9/Pn///+7u/adn/mao/2Vpvybo/jkoe388/b5+vf7+vj///7U1fWRsfiSrfuZof2Zof6pmtzW1dva2+La2uLU1uLX2eymrvl2vPeFuPmRnfeMl/CMlvGLlvCRm/aVofuYov4vTVW2AAAAA3RSTlP9/v6XUDd1AAAAdklEQVQIHQXBK05DYRhAwTn9r+FRWYEAxUIIjhWjwXQB3UITErCkdXzMZAEA+KsFaGBgwy5jV9W1Qa1u6ndfVfWNDfe1r6rOjz9DLdtTVVV1GmpxeKjqelt1ZGPy9Vx1V3Vp1BrptdLHy+dlqAW84R2YBAID5h84yxxJ2KGlpQAAAABJRU5ErkJggg==","aspectRatio":1.7816836262719704,"src":"//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=1478&h=830&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=1926&h=1081&q=50&fit=scale 1926w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=1478&h=830&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6buweme8KyJwSadjqtaPCP/238e17f126a484d76a1287802f71f9f0/img-working-with-rich-text-editors-in-2023_-industry-overview-and-challenges-2023101718551676.png?w=1926&h=1081&q=50&fm=webp&fit=scale 1926w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Di Mace","slug":"di-mace"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Working with rich text editors: industry overview and challenges |TinyMCE"},"metaDescription":{"metaDescription":"Insights from developers who work with rich text editors on the industry, editing experiences, main challenges and the most important features."}},{"title":"Rich Text Editors 2023 Developer Survey: Highlights and trends towards AI","slug":"text-editors-highlights-and-trends","featured":false,"lastUpdated":"Sep 13th, 2023","description":{"description":"<p>Find out rich text editing insights and trends gathered from our annual survey, which investigates the varied aspects and facets of rich text editing</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Find out rich text editing insights and trends gathered from our annual survey, which investigates the varied aspects and facets of rich text editing"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"AI, represented by a robot, reaches out for survey results and data","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAA8FBMVEXssf/ssf/tsf/ssf/tsf/tsP/usP/psf7lsvvlsfvmsvzsr//ssf7rsfnrr/bS2Ou/8N+/7t+87tzD5t7mtvrsrv/usP7tsv/ssvrtsvvft/rbtdb25+v9//34+Pj4/Pn49/P27fnS2uvTserts//ku/bRwebhqe7as+zt4fP3+/f5+Pj0+Pfz+Pf29/jP6efEtufvr//o0PHQ0L/jr/Ltr//z4fr6+fry+PXj6ePY5dna7O214t6+zO3stv3uvO3ts/7tt//qvfq+zNrfvOnowMfi18XVzcfVvvPssP/psf3ur/7srvXrr/vur//ssv/Y1uLrAAAAA3RSTlP9/v6XUDd1AAAAfUlEQVQIHV3BMQrCQBRF0ftmPoRIpjJrsHENrsFNW2hto+5hRFBBAs43McSA5wgxEjhfrshAIOGOA8UYyEOQPKgDB0WgftWaXPFitOQm6edWwNp0J2m2PoLRS5o9AAOWjbTbaHQAYlNVXT4/F6eVBetdwLXdM8kMnCIF/r0/TFMiIUjnCd8AAAAASUVORK5CYII=","aspectRatio":1.7816836262719704,"src":"//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=1478&h=830&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=1926&h=1081&q=50&fit=scale 1926w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=1478&h=830&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2ln1R1Coal342UkFeYUhw5/07e5096214ee68f276234174ea39a5cb/img-rich-text-editors-2023-developer-survey_-highlights-and-trends-towards-ai-2023090719485963.png?w=1926&h=1081&q=50&fm=webp&fit=scale 1926w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Di Mace","slug":"di-mace"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Rich Text Editors 2023 Developer Survey: Highlights and trends | TinyMCE"},"metaDescription":{"metaDescription":"The freshest insights on rich text editing trends and highlights on what has changed in comparison to previous year survey results."}},{"title":"Technical debt and types: The benefits of TypeScript vs JavaScript","slug":"benefits-of-typescript","featured":true,"lastUpdated":"Jul 26th, 2023","description":{"description":"<p>Heavy technical debt burdens can sink a project. But selecting the right language can help keep debt down. Find out what the results are after weighing up JavaScript vs Typescript, based on TinyMCE's development history</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Heavy technical debt burdens can sink a project. But selecting the right language can help keep debt down. Find out what the results are after weighing up JavaScript vs Typescript, based on TinyMCE's development history"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"The rich text editor represented as a document symbol with TypeScript and JavaScript logos above it","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAA4VBMVEX+ov/+ov/+of/+ov/+ov//ov//o//+of//of/0nv2ikfzHk/v/n/7+o/z8p/H9of7/oP/1qvrlqu79oP7ql/ugoP3Gofn8nPz4usP12nz6p/D5of3xp/fnsPH/n//6rvX2rfTyufnzu/r4ut/20cj6rPbzsPj5wfr7wvv6svr+oP/9tP758/T18Or69vn59vny9vnt9fj36fr2vvbs1Ozr1uvtu+7+n//8tf358vb48vT4+Pj4+fj6+/v6/fv38/j3rPj6mfv8nf39n/7+pf/+uP/+t///uf//uv/+s///nv8Vl2KaAAAABHRSTlP9/v78RvGEPgAAAGtJREFUCB0FwbttAlEUQME5+64jixSJBojovwKX4MwSEikhKZ/1TANhB+g5CATYtYE2LNYiBqymquqBIeu7qqoeaLQ+p6qq6s9rcDxUVVVh4FBVVf1gcD9H1e26v0VfWMcL/N7f4JVA7ADbP7fqExxdbHuwAAAAAElFTkSuQmCC","aspectRatio":1.7816836262719704,"src":"//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=1478&h=830&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=1926&h=1081&q=50&fit=scale 1926w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=1478&h=830&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2xiNigXJElGz4ouNTELxiO/d4d4fe5378e2be8bc1921dad842d168a/Technical_debt_and_types__The_benefits_of_TypeScript_vs_JavaScript.png?w=1926&h=1081&q=50&fm=webp&fit=scale 1926w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Millie Macdonald","slug":"millie-macdonald"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Benefits of TypeScript over JavaScript: tech debt and types | TinyMCE"},"metaDescription":{"metaDescription":"Giving a preference to TypeScript vs JavaScript can have long term benefits in terms of dealing with technical debt."}},{"title":"What does it mean to be SOC2 compliant for SaaS?","slug":"soc2-compliance-meaning","featured":false,"lastUpdated":"May 18th, 2023","description":{"description":"<p>Is your data security practice working to protect your customers? Read on to find out how SOC2 compliance contributes to your data security.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Is your data security practice working to protect your customers? Read on to find out how SOC2 compliance contributes to your data security."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"The text \"Compliance\" written alongside a representation of SaaS in a cloud symbol","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAA0lBMVEX7dYP8dYP8dIP8dIL7dYP8dYL9dX/+dHz7dIL7coD7bHz7anv7b37sc5/hgbbvcpj6dIL5cYD5dIH5pqz6zM/5k5z6bXz6c4H+dXzDcM2Vk/zPacH/dXv2dYjqfZf60NP+8/P/+fn75OX5for6cYDnbaDNY7vrcpr0onb4f3/5d4f2wcfwxtHww870xs/6go77dIP+dn/7fH7zsXj1jYP4dIP2aXnzaHnzZ3nwcHjsf3r7c4Lyd4TudYHzb334coD4cYDueX3mh3z6c4L5c4H9dIO0QdYAAAAAAXRSTlP+GuMHfQAAAG1JREFUCB2NwbsNwkAQQMH3dAsOOBIaoABSOqBxp4ROqAKHCAn5tPwsRwTM8Iuy0EzeotBCMzN8mSZaIQA7vW/8GoGgxU7dOhsBg7bau7jVoRBA1svBWT0DBjRwffSjTwoBFFo+Oq8DnpICyp+eWREcKyS9ydsAAAAASUVORK5CYII=","aspectRatio":1.780758556891767,"src":"//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=1109&h=623&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=1478&h=830&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=1925&h=1081&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=1109&h=623&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=1478&h=830&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2QUVwzLBzYHfvlnfmr6lXW/492ae4fd65ffe6661c9c33abe80e8941/What_does_it_mean_to_be_SOC2_compliant_for_SaaS___1_.png?w=1925&h=1081&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"John Rau","slug":"john-rau"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"What does it mean to be SOC2 compliant for SaaS? | TinyMCE"},"metaDescription":{"metaDescription":"SOC 2 compliance means that your company has been audited by an independent third party to ensure that your data security practices meet industry standards."}},{"title":"Dangerous examples of technical debt in rich text editors","slug":"technical-debt-examples","featured":false,"lastUpdated":"Dec 19th, 2022","description":{"description":"<p>Read the story of our team's technical debt experience: handling cases of technical debt accrual in rich text editors, and how we approach the issue</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Read the story of our team's technical debt experience: handling cases of technical debt accrual in rich text editors, and how we approach the issue"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"An exclamation mark as a warning, representing the dangers of technical debt","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABjFBMVEUiNHUiM3UiNHYiNHcjNHcjNXggMG0gMW4fMG4eL24bLW0bLm4gMW8hMXAhMnAdLWQdLWUZKmUAHmEAAl0ABF4AHGEZK2YdLWceLmceLmgbKl4bKl0bKl8YKF4AGFopNGO4usK8vcU0PWgAFVoZKWAcK2EcLGIZJ1cZJ1gZKFgZJ1kNIVYAAEWipK7d3uHa296rrLUAAEcMIVgZKFsbKVwbKV0YJVIXJVIYJVMVJFMAAEo+RGPt7e7W19rQ0NTx8vNMUWwAAEwVJFUXI04XI08XJE8RIE4AADusrbT////r6+zn6Om2t70AAEARIVEYJlMYJlQZJlQVIUoWIksQH0sAADqmp677+/vs7O37+/yvsLYAAD8XJFAXJFEYJFEVIEcVIUgVIUkTH0kAEEQAFUZXW21hZHRhZHVZXG8NHUsAEEcTIU0UH0YUIEgRHkcAFEUAAD4AADwAAD0AFUcSH0sWIUwXIk0UHkQUH0UUH0cSHkcPHEcOG0cOHEgPHUgTH0oVIUsWIUsWIkwXIk7kJeYXAAAAc0lEQVQIHQXBMU5CQQBAwTefjYmB9WslhZ3cgPsfgd4LUBhLrVlnZLVVVcraylOV4HEoizWeUwWgahyt2gCUGjMBQGnsFAD30pixNvA48PZOY0/B/QM/l1hjRrDD61c0Zr+rF/B95tptGcdOf52CT+g6+wf33xSQSPhocgAAAABJRU5ErkJggg==","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1z2X2gKj3AqHd0KdZtgxkN/e6c9c76f477affea75b1817a73f02f00/tech-debt-4-2022121313085824.png?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Millie Macdonald","slug":"millie-macdonald"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Dangerous examples of technical debt in rich text editors | TinyMCE"},"metaDescription":{"metaDescription":"In this post we talk about the examples of technical debt that our team has the most expertise in: cases of technical debt accrual in rich text editors and share how we approach these issues"}},{"title":"Managing technical debt is difficult in rich text editors","slug":"manage-technical-debt","featured":false,"lastUpdated":"Nov 29th, 2022","description":{"description":"<p>We&rsquo;ve collected the aspects that can make or break your strategy of tech debt management - read on to find how.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"We’ve collected the aspects that can make or break your strategy of tech debt management - read on to find how."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Pie chart depicted in contrasting colours","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAA/FBMVEUjNHciNHchM3YfMnQdMXIXLGweMXIiM3YlM3UxN304OH5NUaJES5kkL3AeMHImNHc2Pow0RJ05P5FkduFrh/9aacwqNXcfMXMiM3UvPIkwRJ8rQ58wPY9fdN9oiv9pif9TYsAeLWwrP5MpQJooP5goOIlcc91oif9nif9jfe8sOHwgMXMhM3UmNnpCU6pDVq9CVK1CUqhfeOZniP9lgvgzQIkfMHIhMnUoN3pgeupnh/9nhv9mh/9hfe8pOH0dLW1JX71oiP9MY8IjM3VOZ8lkhPxlhf1Qac4kNXggMXIeLm80R5ZEXLdEXLg1SZgfL3AgMHIbK2oXJmMbKmnWBGX7AAAAg0lEQVQIHQXBMUoDUQBAwXnZ1Z9kQbG0VPAiXjrXsBEPYCOIkEIJC8Y4E1CVfi8XCBhV1bpCYGyrqo4rZnBXVdUnBGN9rKrqFTM8VVUq2MCyLMf9frv73u1+YAMvY2zHxclVXzDB33JzO32c7u/m67czAuO5qjqsMIHz+8OYp+lyWME/4pwdJJVHZF8AAAAASUVORK5CYII=","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6R0dgGR7Une66VCag5E6Bz/3f09fcd022ea9991bb49499d9bbcd9cc/management-2-2022111614140854.png?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Millie Macdonald","slug":"millie-macdonald"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"How to manage technical debt in rich text editors | TinyMCE"},"metaDescription":{"metaDescription":"Dealing with the technical debt of rich text editors isn’t easy. We’ve collected the aspects that can make or break your strategy of tech debt management."}},{"title":"What makes a secure text editor?","slug":"secure-text-editor","featured":false,"lastUpdated":"Mar 23rd, 2023","description":{"description":"<p>When selecting a secure text editor one of the most significant considerations is security, which is why it's worth reading on to find out what makes a text editor secure.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"When selecting a secure text editor one of the most significant considerations is security, which is why it's worth reading on to find out what makes a text editor secure."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Security icons together on a blue background","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAB6VBMVEWUq/+VrP+Xrf+Xrf6Yrf6Wrf+Trf+Srf+Urf+fsvyfsvufsfqbrvyWrP6Yrf6Xrf+Vrf+erfayrtq1rtSoremWrf+Yrf/s6+/q6+/4+PrO1fSSqf2UrP+dq/LDrbKzrNKtrNzArbmxrNSTq//s0qzr39D///3Z3vaQp/2XrP6XrPvPtKfkunHkumvduo/duo7fuYPmumDeuYWpq9+Xrf7u6eD28+7V2vWMpf2RqP6Tqf6VrP+Yq/nnvGv6xgj4xSr1wznwwUz4xSX4xS35xACyqcqOqf+Sqf+yv/azwPi0wPiktPfAyPXQ1vbAyvGXq/vlvHT4xSz3xCzLs7Gnq+PvwFT3xDj2wyGwqM22xfvL1fWRp/uTqv+Xq/7k7O/f+Nji7uidsP6Wq/zlvHXWt5ywrNX0wj72xDv2wiWtpMjX4PXr8uiRpfOYrv+Zrf3X3+7f7eTk5/Sar/73xTHhun7Hsa72wzX2xDqtpcnZ3/X18eqSp/SZrv+dr/ybqvKcrvqWrP/mvGr6xQD4xA/4xAv3wwv4xA35xQr4wwCxqMytvv3AyviWq/uZrv6MoO6RpvaTqPiSp/e3rszCsLu/rbu/rrvArru+rLqbp+yTrP+WqvqTp/aZr/+Xrv+Srv+OrP+NrP+PrP+Vrv8Nj/DEAAAACXRSTlP+/v7+/v7+/v4itX5mAAAAjklEQVQIHQXBsU0CYQAG0O8dfyIUeBzQUSAJC1g6gFNQWNpZUTADYYIrncaEGUiwoCQabQghwHsSSJJrB+cqiR5IAjg/nFIe4T/RB/x1T+bgYAJgNy+N3wENAEbKyBi+XgBgIYB9PQSU5vMN7FxmsJ9R6tTtO46vwDNs/KRdAXGrsNYuP5Lp9xMkuVW2uQMC6xyLou1c8wAAAABJRU5ErkJggg==","aspectRatio":1.7775489186405766,"src":"//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=1478&h=831&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=1726&h=971&q=50&fit=scale 1726w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=1478&h=831&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6qrNMdgVG6Fe5606ZKnppo/78ad6f291c2a2dc7cdb02b40530add78/what-makes-a-secure-text-editor_-2023031610315788.png?w=1726&h=971&q=50&fm=webp&fit=scale 1726w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Elise Bentley","slug":"elise-bentley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"What makes a secure text editor? | TinyMCE"},"metaDescription":{"metaDescription":"Discover the key considerations and features you should look for in a secure text editor. Learn why TinyMCE is a reliable and secure option for your text editing needs."}},{"title":"How to track and prioritize technical debt","slug":"technical-debt-tracking","featured":false,"lastUpdated":"Feb 21st, 2023","description":{"description":"<p>The worst technical debt is unidentified technical debt &ndash; find out how to identify, track and prioritize technical debt.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The worst technical debt is unidentified technical debt – find out how to identify, track and prioritize technical debt."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Overlapping rings representing the converging concerns and focus needed for tech debt management","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6hQk4SjPBGK9MIa1F3TTju/d4ccfd4c1f4fe8cbfb2dd3d8c4fe0c97/track-and-prioritize-2023020212375488.jpg?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Millie Macdonald","slug":"millie-macdonald"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Technical debt tracking and prioritization | TinyMCE"},"metaDescription":{"metaDescription":"The worst technical debt is unidentified technical debt. In this article, we discuss how to identify, track and prioritize technical debt."}},{"title":"Are developer velocity and technical debt impacted by a rich text editor?","slug":"developer-velocity-and-technical-debt","featured":false,"lastUpdated":"Jan 17th, 2023","description":{"description":"<p>Find out how developer velocity is impacted by a technical debt following our rich text editor stories, and what can you do to improve it.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Find out how developer velocity is impacted by a technical debt following our rich text editor stories, and what can you do to improve it."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Time represented in a clock currently set at 3 O' Clock. ","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAArlBMVEUQGDcPFzYQGDYPFzUPFjMPFTMOEzAWIEYXIUkOEzEQFzYPFTQQGDgmQXoxSY8uRIYnQnwRGjsODi0bQW0hRnkhTX4TJkghRHYdRHIPCCwZV38TMlQRXngPc4oSSmcZWIEPCy0PBi0SUW4RYHsPJDsPMkcRX3kSVXIPBCwQEzQQGzgOZ3sMdoYMdYUOaX0QHzsQEjQQETMQCzAPNEkPNUoQDDEQEDMQFzcQFTUQDzOJjvqOAAAAXklEQVQIHQXBsRHCMAAAMb1jSM6LUKVm/x1oWITjaIIEQA2ACWjk6gI2oDnGNl1AYFVVv+sDE9irqi+YwF5VxxdM4KiqgAkcVRUQsB5VvT5gAOf7vt221wkAeK61AP7SdgzQy6dxTAAAAABJRU5ErkJggg==","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/pSCoh3sRCzJCGPQ1rLfTi/9d0994f65e8d7732aafecf44302421cc/developer-velocity-2022122007162835.png?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Di Mace","slug":"di-mace"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Developer velocity and technical debt: rich text editor impact | TinyMCE"},"metaDescription":{"metaDescription":"We’ll explore how developer velocity is impacted by a technical debt on the example of rich text editor, as well as what can you do to improve it."}},{"title":"Is your code half-life shorter than your engineering career?","slug":"rte-code-half-life","featured":false,"lastUpdated":"Nov 8th, 2022","description":{"description":"<p>Find out more about Code half-life - a metric that provides interesting perspective on developer&rsquo;s work efficiency and product longevity</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Find out more about Code half-life - a metric that provides interesting perspective on developer’s work efficiency and product longevity"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"A graph represented as a line on grid background","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6cg9iKrkdj6a8hWynmgnZg/56f3a41a4879ef769b82c0bada47ac57/tech-debt-2-2022110213124606-2.jpg?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Di Mace","slug":"di-mace"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Half-life of the rich text editor code | TinyMCE"},"metaDescription":{"metaDescription":" Code half-life metric provides interesting perspective on developer’s work efficiency and product longevity as its contributes to the technical debt your app is accumulating"}},{"title":"Reduce technical debt with the right rich text editor","slug":"reduce-technical-debt","featured":false,"lastUpdated":"Oct 25th, 2022","description":{"description":"<p>The choice of your software components can either increase or reduce technical debt acquisition.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The choice of your software components can either increase or reduce technical debt acquisition."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"a graph showing a drop in costs associated with technical debt","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2xMpI8uNuoFJAcwMcL4KEC/c2a0da85780e387924db38955a0492bf/img-tech-debt-1-2022092912314335.jpg?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Di Mace","slug":"di-mace"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"How to reduce technical debt with the right rich text editor | TinyMCE"},"metaDescription":{"metaDescription":"The choice of your software components can either increase or reduce technical debt acquisition. Learn how your decision about RTE components can affect your tech debt."}},{"title":"Rich Text Editor developers in 2021: survey says full-stack all the way","slug":"rich-text-editor-developers-in-2021-survey-says-full-stack-all-the-way","featured":false,"lastUpdated":"Nov 2nd, 2021","description":{"description":"<p>Usually considered a&nbsp;front-end UI&nbsp;component and/or API, it&nbsp;appears that rich text editors (RTEs) aren&rsquo;t the shy retiring components we&nbsp;all thought. They&rsquo;re primarily being used by&nbsp;full-stack developers, for more complex major projects.</p>\n<p>&nbsp;</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Usually considered a front-end UI component and/or API, it appears that rich text editors (RTEs) aren’t the shy retiring components we all thought. They’re primarily being used by full-stack developers, for more complex major projects."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":" "}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Post 1 in our series exploring the results of the 2021 rich text editor survey.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAMAAADOQy/fAAAA/FBMVEUXI08VIk8mJU8tJ04tJk4uJ04kJU8SIk8WI08XJFIWJFItKFEuKVMrKFMqKFMyKVI/KlEnJVIVJFIZJlUYJlUXJlUtKlYnLFobKFgZKFgXKFgiKVg3KlIuKFMaKFoZKFoYKFouLVwmMGQcLWMcLGIaLGMkLWI2LFYtKlUcK2AbK2AaKl8vMGUnNHEfMm8eMm8nMm83MF4uLFkaK2EeLmccLWcyNG4sOX8mOH4lOH8tOH44NGguL10cLmgeLmghMnEgMnEfMXAtNXI/Pno8O3U7OnQ5N2YwM2QfMnEjNnojNXohNXosOHczOG0xN20yN20yN24sN3YiNnsjNnsxE16+AAAARUlEQVQI11WNMQ4AIAgDRVmU0f9/U92wKInCUnppgRKGMHqFFjxXhy536c+coKLCEmEJ0OsyHYabMmI9acZRAG7fW4OW3FSZDqx45LiCAAAAAElFTkSuQmCC","aspectRatio":2.4767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=185&h=75&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=370&h=149&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=739&h=298&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=1109&h=448&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=1478&h=597&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=2130&h=860&q=50&fit=scale 2130w","srcWebp":"//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=185&h=75&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=370&h=149&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=739&h=298&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=1109&h=448&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=1478&h=597&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/68vHF42PTMjZuY8LEa2Sf6/0fee9ed609ad60c413910c96ef23ca00/Image_Developer_Survey_post_1.png?w=2130&h=860&q=50&fm=webp&fit=scale 2130w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Di Mace","slug":"di-mace"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Tech stack used with rich text editors in 2021 | TinyMCE"},"metaDescription":{"metaDescription":"Key findings from developers using rich text editors on programming language and front end frameworks – can you guess what’s used the most often?"}},{"title":"State of Rich Text Editor 2021 Survey uncovers hidden hero of content creation","slug":"state-of-rich-text-editor-2021-survey-results","featured":false,"lastUpdated":"Oct 26th, 2021","description":{"description":"<p>Rich text editors are the silent heroes of the content revolution. The State of Rich Text&nbsp;<br />Editor 2021 Survey encouraged industry-wide feedback from the developer community and product managers. 500 people share their stories, and &nbsp;you can read the full report now, as well as analysis of the results to stay up-to-date with trends in rich text editing.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rich text editors are the silent heroes of the content revolution. The State of Rich Text "},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"Editor 2021 Survey encouraged industry-wide feedback from the developer community and product managers. 500 people share their stories, and  you can read the full report now, as well as analysis of the results to stay up-to-date with trends in rich text editing."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"You can read our analysis, and download the results, of the rich text editor survey 2021.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAMAAADOQy/fAAABpFBMVEUAGT4BGD0DFjoFFjkHFjgFEzUHEzQPGTYOFzQIES8MEy8MEi0AACQ3OENYWV8hITADAh8UECQZEyUWDiIHHkIIHEADHD0IIj8KIj4JIDsLHTkQHzgSHjcRGjMYHjUbHjQDAydjY2iPjpE9OUMXBiEcEiUWESMBGT8CGD0EKkUIMUkONEoTNkoRKD8XLEEcLUEaJTogJTkjJDcpJDYgGS4oIjIcDCUmFigrFycUDiEXDyMAGD4EJEEEHT0GGzoIGzkIGDYLGDUNGDQOFzIQFzARFS4SFCwTEioTDycYEScbEiYoFicWECIZEiUEI0EGI0AIJUALIz4MIDsPIDkTIDgVHzYYGzIbGzAgGy8jGi0lGSsmFSYIHkIFGz4GJkEJJ0EMJj8PJD0SIzsUIjkXITcaIDYdHzQgHjIjHTAmHC4pGywcEycnFicYEiQDGkADGT0GJUEJJkEMJT4OJD0RIjsUITkZHzUeHDEiHDAlGy4nGiwcEyYWDyIFHz4HHzwIHToLHDkNHDcPGzUTGTIUGDAXFy4ZFywbFisdFSkYESYXESMcFifuwZ1MAAAAUUlEQVQI12NkYMQCRDCF3rIIY1HHInLMGkOUhYFBCMo8aQEiPwjcu8UYw/hRAE3hMhYhxvtKYOZ7wQeKIPojQyYzyxoDOXYQWGUlwQECD9U4AE41EFF1T0aYAAAAAElFTkSuQmCC","aspectRatio":2.4767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=185&h=75&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=370&h=149&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=739&h=298&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=1109&h=448&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=1478&h=597&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=2130&h=860&q=50&fit=scale 2130w","srcWebp":"//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=185&h=75&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=370&h=149&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=739&h=298&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=1109&h=448&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=1478&h=597&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/j1o8o0rad7oiiBKWiLbHj/5b0ae7aacc305c42cd86cb21accb3bc4/dev-page-summary-2.png?w=2130&h=860&q=50&fm=webp&fit=scale 2130w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Di Mace","slug":"di-mace"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":{"metaDescription":"\n"}},{"title":"TinyMCE’s Highlights from AITX Meetup 2025 & What’s Next","slug":"aitx-meetup-2025","featured":true,"lastUpdated":"Apr 15th, 2025","description":{"description":"<p>TinyMCE joined the AITX 2025 Meetup to connect with devs and founders innovating with AI and web tech. See the event highlights and upcoming meetups.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TinyMCE joined the AITX 2025 Meetup to connect with devs and founders innovating with AI and web tech. See the event highlights and upcoming meetups."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"TinyMCE at AITX Austin Meetup","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAALABQDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABAMJ/8QAIhAAAgICAQMFAAAAAAAAAAAAAQIDIQAREgQFIhMUMTKx/8QAGAEAAwEBAAAAAAAAAAAAAAAAAAECAwT/xAAeEQACAQMFAAAAAAAAAAAAAAAAARECITEDEiJBgf/aAAwDAQACEQMRAD8A01l7x1EfdvbRRRzxrRRQBIa3RLAV850rSbp3twvSZGSPOerhfksMBjPOB0BflWvIHQ1dXvYvMsdgRWT10Vw6yAj7KKP7l02VwqhvjgesrcReRCCScnnrleOEEh5BxbQoZohH/9k=","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1KrBiRKOUdS4x4urYerK7M/135dc1bda04bf83a8984ec5c210cb72a/AITX_Autin_Meetup_Post_Event_Blog_updated.jpg?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Mrina Sugosh","slug":"mrina-sugosh"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"TinyMCE at AITX 2025: Event Highlights & What’s Next | TinyMCE"},"metaDescription":{"metaDescription":"TinyMCE joined the AITX 2025 Meetup to connect with devs and founders innovating with AI and web tech. See the event highlights and upcoming meetups."}},{"title":"Key Takeaways from Umbraco Spark 2025","slug":"key-takeaways-from-umbraco-spark-2025","featured":true,"lastUpdated":"Apr 4th, 2025","description":{"description":"<p>Explore top takeaways from Umbraco Spark 2025, from caching and observability to TinyMCE innovations for Umbraco 14+. Plus, don&rsquo;t miss our May webinar!</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Explore top takeaways from Umbraco Spark 2025, from caching and observability to TinyMCE innovations for Umbraco 14+. Plus, don’t miss our May webinar!"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Umbraco Spark Event Recap 2025 by TinyMCE","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAA9lBMVEX5+/77/P/8/f/7/f/////+/v/+///8/v/6+/3V1ujw8ff9/v/9///09PTd3d7p6erg4eHe39/j4+Pi4uLh4eHy8vL19vqnqdLh4u/8/f77+/3d2OXi3un6+vrs7Ozx8fHu7vLp6u3q6+7s7O7o6Ov39/j7/P7x8fj4+fz6/P74+Pykj7qzpMX9/f/u7uzv7+/f4PnV1vnU1vnZ2/rZ2vr09f78/P7u7fPw7/X4+f7p6frv7/vs7fzr7Pzk5fr29v7v8/fg7ffT1fjZ2/nh4vrc3vnd3/n39/7T2umtyun3+P7w8v/9/f75+v33+f3g4//6+/79/v7VBOzPAAAAi0lEQVQIHU3BMQrCQBRF0XczY9Lp2EZ3YCF2rsAV27gAwV4QQRBJl8qAhSBmvjFOwHMQaICpYwZOAzCZpNYVpgSXOR/V8aOcpBnTq/EKJE2gNz15KfBjobFKS47ymvMl9tmz5HGvamdeuYNXAbLrjLDichNFqyTbwHlSso3+jZK4y6XFYY0h0B+kaB/JvSfHwtHiJwAAAABJRU5ErkJggg==","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6zPeaYFT8YEprNdFrf6XvA/8d06d556c7c2e1bee8546f39001d62e1/-BLOG_HEADER-_-BLOG-_Umbraco_Spark_Event_Recap_2025.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Mrina Sugosh","slug":"mrina-sugosh"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Key Takeaways from Umbraco Spark 2025 | TinyMCE"},"metaDescription":{"metaDescription":"Explore top takeaways from Umbraco Spark 2025, from caching and observability to TinyMCE innovations for Umbraco 14+. Plus, don’t miss our May webinar!"}},{"title":"Learn with TinyMCE at MLH Global Hack Week AI/ML: Workshop Replays","slug":"learn-with-tinymce-mlh-global-hack-week-ai-workshop-replays","featured":true,"lastUpdated":"Mar 13th, 2025","description":{"description":"<p>Missed the MLH Global Hack Week AI/ML? Watch TinyMCE's workshop replays to learn how to enhance your AI/ML projects with a powerful rich text editor!</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Missed the MLH Global Hack Week AI/ML? Watch TinyMCE's workshop replays to learn how to enhance your AI/ML projects with a powerful rich text editor!"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Global Hack Week AI/ML 2025 Event Recap","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABy1BMVEUXIlAWIVAVIVAUIE8SH08QHk4XIVAVIE8TIE8SIVANIU8UIVAMG00DFUwGGU0OHE4bJFAPHU4UIU8MG04ABkkLHE4hIE83IVATH08AFkwbI083OlkAFEtFSmiSlKcgKVMVHk4pI04IGU00OVuCg5AqM1oiJlQ4HVEHF00BFUwNHE4AAEGgnqjs5OyMjZsAHFlNUnASIVMRHVAjIE4BGE8vNlx3eYonM1wAKFaFipbFzM0+QWACFkwVIU8MHE4AAECjoarx6e6Oj51OUm5nan5eYnhVVG5yb4BucYRlaHpjZXNrboFWWnNzdoetsrczOFoGGE0AFEweKFM+TGcIJFSHipyforSoq7ykpraUlqmlqLenqruVmKqmqbmFiJ0AEFoAAEkMGE0FOlsAKFRpbYd7f5eFiaCBhJtjaIR9gZeHiqF8gJiEiJ9TWXsGJGUOGEw0MUwTIFAvL04AAEqEg5HMxso2PV8AAEUAF00AFk8AD08ADU4QDk8AAEObnKbKys1qbH0AAEYWIU8AAEh0dIO3srg2PFwUKFIYJFIbJlQfJFO5ur/p6emAgo8AAEQQHk8AFUwADEpITGYpMFYPHk4LG00AAEIAC0oRHk9V9pmoAAAAjklEQVQI12NkYGRkBOJ//1h/szECEeO3/0AuEycjGPz8Lgii/jG//M/CLMqIBhheMmoxYgIWEUyxTYwsvmhCe/68ZGQU90RXOYGF4YcgmlgTKxPrNwEQWMrfycfH95gXCBh+Mf36Vc8zgZPrTxVL5c8qQ/a9bOuAjmdgYGPsnXbrL+svBjbziDdAV2f+BwDB5ifRbwSk8wAAAABJRU5ErkJggg==","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6BGJYvIEUBleufd0Yjt8DN/f4d2b5d3587292001459561171be5f28/-TinyMCE--Blog-_Global_Hack_Week_Event_Recap.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Coco Poley","slug":"coco-poley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Learn with TinyMCE at MLH Global Hack Week AI/ML: Workshop Replays | TinyMCE"},"metaDescription":{"metaDescription":"Missed the MLH Global Hack Week AI/ML? Watch TinyMCE's workshop replays to learn how to enhance your AI/ML projects with a powerful rich text editor!"}},{"title":"Join TinyMCE at MLH Global Hack Week AI/ML to Build an Email Editor with AI","slug":"join-tinymce-at-mlh-ai-ml-hackweek-build-with-ai","featured":true,"lastUpdated":"Feb 5th, 2025","description":{"description":"<p>TinyMCE welcomes developers to join us for an Angular session and a Laravel session, each on creating an email editor with a different AI IDE.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TinyMCE welcomes developers to join us for an Angular session and a Laravel session, each on creating an email editor with a different AI IDE."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Build an Email Editor with AI at MLH Global Hack Week AI/ML","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAACglBMVEUAAC4vM0olKUUXHj8wM0sIFD4WGEAeI0geJUwVHk4fJlQaJF0lLmcEGmkAFW0AGnAAGW0AGGcBF2EAADWJipGGh46LjJNQUmRqYm93doR4eotsb4VwcoVucZV6fqM+R48AGIoAII4AIIwAH4UAHHsAGnEAADAdGToSCzQTEjYABjkAADgAADwAAEcAAFYADmUAF3YAH4cIJ5YAJ6MAKKgAJaAAJ54AJ50AIY8AHoEAAjUAXHQATHYAPX1DS2tYWmpfYXRfYnpaXoAxOn0AGogAK5wANa0AN7IAJIFEPlIqLU8ALYgALp0AI40AADMxYXY2YIImS39ZXnZlZnVvcIJ1d41kaY1LVZEANZgAQasATrwAOJhBNkTJk2eSZkAAHVcAPJkALJIAADRubXZ7eoFvbndxcn1jZXZydIVtcIprcJR3gKonUaQAVbIAYr4AO49uVF7pq3+zfVsQHUoPRZwANY89QFNCRFY6PVM4O1Q5PVk/Q2NGTHMcNXgTQYwATp8AXK4AZrkAT6RSRGDUnXendVQVIDcUS5YANIUAAjZRVGJfYm5dX21JSl9NT2VUV29fY34mOXIANH8AQ5AATJwAUKUATqUgN3BnTEhHOT8AMmUAPoQAKXIABDYfAEERADgBETgAJ0IfI0crMVQAC08AGl4AKGwAL3gAMoAAMYUZO4tfa51fbJZlcpZSYY0AJmoAGVwADDdZDlZMBEY7M0E3XF9oaHNyc4EoLlMAEE8AGVgBG10AG2EAE2I+RHNlaIdiZoRlaYNjZn4hKlcACEgADTcEDDYACTcAAzsHEkAABD8ADEQBEEcBEEkAD0oACkoAAEkAAEUAAEAAAD0AAD4ABz2CXsb7AAAAKklEQVQI12NkYEQFYL4wI7owIyOLMCMmYBGhTPCNBhZBa4otSmGYi+olAElSA9+Ik1oPAAAAAElFTkSuQmCC","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1jcdt2u9lnJtYrOlL1Khxy/57b88c2c3e5320dea6b0d28838d009ce/_BLOG_HEADER__Review_MLH_Pre-event_Blog_v1.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Coco Poley","slug":"coco-poley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Join TinyMCE at MLH Global Hack Week AI/ML to Build with AI | TinyMCE"},"metaDescription":{"metaDescription":"TinyMCE welcomes developers to join us for an Angular session and a Laravel session, each on creating an email editor with a different AI IDE."}},{"title":"Meet the Top Experts at Frontend Nation 2024 with TinyMCE","slug":"tinymce-frontend-nation-expert-interviews","featured":true,"lastUpdated":"Nov 7th, 2024","description":{"description":"<p>Explore key takeaways from TinyMCE&rsquo;s interviews with tech experts at Frontend Nation.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Explore key takeaways from TinyMCE’s interviews with tech experts at Frontend Nation."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"An image of Mrina Sugosh and a speech bubble that says Key Insights from Industry Experts","artistName":"TinyMCE","image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABXFBMVEX669X769X77NX669b56tb56dX56tX66tT769T77Nb77db469f26tj16tn06Nn16Nr059r06+H17OH27OD37eD67tz75M354sv87df67tn27dn17dn27Nj57Nb07Nnw69vt6t7r6uDy3NLy29Dw6eLv7/Hq6+3p6+zt7/H58uncyb2TfYakk5Pm4NHt8uHr7+Dw7tz37Nfp7uDk7ePg7Obf7Ofk493o3tbs5t/x7Ofx6+Xz7eXz7eb16dt7b4modFxdKTOmqKrp9OXp8OHe8Ofa7+rZ7uva7enf7Obn6uHu5tzu4NDx4s316Nf259X46NOLeoe2fVxiKhmxrafx8uDy7tv67Nba8erZ8Orc7+jg7ebn7OHu6tzz6Nby487159H46dX97dfm1cGznYy4qJbx5dD57tng8Obj7+Po7eHt7N7y7Nv569b97tj+79j87tft7t7w7dv37Nj47NZL2XX0AAAAeUlEQVQIHWXBIQ7CQBRAwfeWTYokBAcn4RQIkuomHIDDVKGQJASB4izoanxT89mKmnZGQIQgmCgQjEQIigyxEiyGyqAPzGntQt67lHfO/chb575Hayf3xtGnM28s3qc2kR4X9NaLV1/nodUgUgX0BB7q7kkRFCmC4g+eBh8ACCRV4AAAAABJRU5ErkJggg==","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/24VeBYN2sU2qt3AyyJ3B4z/aa66e0398cd42bbd2991fe243de8cc2c/Frontend_Nation_Post_Event_Blog_-_Interviews__1_.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Mrina Sugosh","slug":"mrina-sugosh"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Frontend Nation 2024: Key Insights from Industry Experts | TinyMCE"},"metaDescription":{"metaDescription":"Explore key takeaways from TinyMCE’s interviews with tech experts at Frontend Nation."}},{"title":"TinyMCE Sponsors and Presents at Frontend Nation Online Event","slug":"tinymce-at-frontend-nation-online-event","featured":false,"lastUpdated":"Jun 3rd, 2024","description":{"description":"<p>TinyMCE will be attending Frontend Nation, a virtual event that brings together front-end developers, designers, and tech enthusiasts worldwide. As Diamond sponsors, Tiny is excited to present talks and workshops to help attendees understand the power a rich text editor can bring to their applications, and how to do it.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TinyMCE will be attending Frontend Nation, a virtual event that brings together front-end developers, designers, and tech enthusiasts worldwide. As Diamond sponsors, Tiny is excited to present talks and workshops to help attendees understand the power a rich text editor can bring to their applications, and how to do it."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Blog banner promoting TinyMCE at the Frontend Nation event June 4th - 7th 2024 ","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAALABQDAREAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAwYEBwj/xAAmEAABBAEDBAEFAAAAAAAAAAABAgMEBREAEjEGBxMhgRUiMkFh/8QAGAEAAwEBAAAAAAAAAAAAAAAAAwQFBgL/xAAoEQABAwMCBAcBAAAAAAAAAAABAgMEABEhMVESIkFhBRMVMnGBscH/2gAMAwEAAhEDEQA/AMZ9DK6flNVNTN7Xwb6eyFeax+pSkPSTuKsqaQpKT6ITjP6z/NaySl5pC3Q5wgb4A++lKxwHlhtIz2pgrqSrg0NzeMdp4VvWx5aGnHJ0x0IjFW5QSMLUogpxx6+3Up2PMdlNAS/L5TygcQVpk6afNPBpCGFuBsmx7D+n8qtrWrNnZyZcevjVLDy9yIMMK8TKcYCU7iSeMknkk8ca0qIriUgKNzvvUMugkmnmmUqFYsOx1Fl0K9LQcEfOrkiKzJZU08m6T0ocR9xiQhbZsamsX9iirsIaZbiYst1Cn2QcIWRkAkcegSPnRR4fFDja+DKQQNcVz6hKUy7dfuIvp1xtjG1ATGax+A0+EJ2pG5r/2Q==","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/3PAUJnDIil2svWxT6bOGLw/3e7b89a0917699adbc8c76d03c8998bb/Final_TinyMCE_Sponsors_and_Presents_at_Frontend_Nation_Online_Event1.jpg?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Team Tiny","slug":"team-tiny"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"5 steps to build and improve your QA process","slug":"5-steps-to-build-and-improve-your-qa-process","featured":false,"lastUpdated":"Sep 17th, 2024","description":{"description":"<p>Discover the essential steps to build and improve your QA process. Learn best practices and tools to ensure software quality.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Discover the essential steps to build and improve your QA process. Learn best practices and tools to ensure software quality."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Shapes representing the vital steps in a QA process","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAAz1BMVEVv1Z1u1Z1t1p5p1p9v1p1r1Ztl05hk1Jhj1JiE3aiH3apn05y5zHnDzHFu1Zlv15uL2ayv4MKv4cKv4cOr4L972KNm1Z3NyWxawr1ky7Fw1pto1Zqq3L3j4+Pi4+Lj5OPh4uHL1c9rz5po155q2J1jzK4vp+dKtNRt1Zxx1Z530J50zpxzzZuD0qN/1KSQwpLGooZ+zplr1Z2K3Kt82KRu1Zxu1p1t1p1r1Jtp0pmC26eC3qmbvpHVlICEypdr1ZyH3Kl72aJs1p1y05xs154jW/0IAAAAWklEQVQI12NgIAQYGaE0MsnI8J/pD5TLyALkMkLB1z8QQVZuqOB3LiDxDCIozYgEbjH/AQtqIAsynmZgYAEK3jBDEvsCtxdEmwFN/vTp5n8kQSAwY/x/Co8nAFplERv849BpAAAAAElFTkSuQmCC","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2FE0jPLhO8j8oGnZ3BkXfK/204461c97e571703683da746f1141366/5_steps_to_build_and_improve_your_QA_process.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Shiridi Gandham","slug":"shiridi-gandham"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"5 steps to build and improve your QA process | TinyMCE"},"metaDescription":{"metaDescription":"Discover the essential steps to build and improve your QA process. Learn best practices and tools to ensure software quality."}},{"title":"Angular vs React vs Vue - Detailed Framework Comparison","slug":"vue-react-angular-js-framework-comparison","featured":false,"lastUpdated":"Aug 30th, 2024","description":{"description":"<p>Discover which framework is best for your project. Our detailed comparison of Angular, React, and Vue covers performance, scalability, and community support.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Discover which framework is best for your project. Our detailed comparison of Angular, React, and Vue covers performance, scalability, and community support."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Angular vs React vs Vue trends for each of the two frameworks and a library represented as symbols","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAAtFBMVEXQ6eHQ6uHR6+HS7OHS6+HR6uHQ6uLQ6+PQ6+DR1uaywO/D4+TT7eDS7ODR7ODQ6eDX3dbT5d3P6uHYqe3Jm8yqtcm1x+i0xee1yOXO5N/ltbLa083P6uLV2NPjyY2jgNeVkfSYhvS1qOTN5OHR4dnS5+HQ5ujR6ePO6ODO6uDO5uLh2ff39v349f75+fjT6uG108fO5uDR5ujR6OPS6uHm8+zp9O/k8ezR6eHP6ODP6N/O6eAMO25wAAAAUUlEQVQI12NgwAIYYcR/EP0fIsgCkQIChj+sjP9//4cLsjPCwAe4dkZBuCDjE7iZMghBxpsw7TxIgnAzbzCYAHkgof9w14CA9VsG4aMwJxEPABz0Dj2e3QHvAAAAAElFTkSuQmCC","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2zovvGaRy7UQ9jXMreHkR2/9400d5dc095753a0bf86f93888e87340/-Blog_Header-__-Rework_-14-_Angular_vs_React_vs_Vue.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Coco Poley","slug":"coco-poley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Angular vs React vs Vue: Detailed Framework Comparison | TinyMCE"},"metaDescription":{"metaDescription":"Discover which framework is best for your project. Our detailed comparison of Angular, React, and Vue covers performance, scalability, and community support."}},{"title":"Supercharge Your Learning Management System with TinyMCE 7","slug":"supercharge-your-lms-in-tinymce-7-webinar","featured":false,"lastUpdated":"Aug 27th, 2024","description":{"description":"<p>Learn how TinyMCE 7 enhances your Learning Management System in our webinar. Get expert tips and see the features in action.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Learn how TinyMCE 7 enhances your Learning Management System in our webinar. Get expert tips and see the features in action."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"A picture of a book, media, spellcheck, and revision history to show learning management systems with TinyMCE","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAAolBMVEXf4//f5P/g5P/h5P7j5//o6v/o6//q7P3w8Pfg5P7h3vng4/7i3/ng4fzL0PvJy/fHyPTFyvjj5Pnp6/vi5fzk2O/j3fTk5f3Izv7HtODRp8fCx/bo6Orr6+vs7e7h5Pnb3/zo4/fV1vvNy/XOyfLL0Pzi5Pbi5PXk5vPj5vbf4/zg4v7l2u/i4/zi5f/k5//k5v7n6f/b3vzc4Pjk5vfh5f/UCT6BAAAATklEQVQI12NgIBYwQqn/TEDiLyPDf7ggUICJEQK+/wPyWUASXIww8AOsDyT4HyHI/RkmyPhGHi4KV8mgCRf7hrAdSDAa/2RgP/OfgUQAABv3DW0TW+g0AAAAAElFTkSuQmCC","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/7l6vsSzRu7xyED9vZgAn1G/5eddb92a34cff554382e07daab6c10a7/Supercharge_Your_Learning_Management_System_with_TinyMCE_7.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Bee Lawless","slug":"bee-lawless"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Supercharge Your Learning Management System with TinyMCE 7"},"metaDescription":{"metaDescription":"Learn how TinyMCE 7 enhances your Learning Management System in our webinar. Get expert tips and see the features in action."}},{"title":"Frontend Nation 2024: Exploring DevRel, Full Stack, and AI-Powered Apps","slug":"frontend-conference-wrapup","featured":true,"lastUpdated":"Jul 3rd, 2024","description":{"description":"<p>This year&rsquo;s Frontend Nation conference was held from June 4th through 7th and showcased an impressive array of technical sessions and discussions, establishing itself as a must-attend event for front-end and full-stack developers globally. As Diamond sponsors for this year's event, TinyMCE had a front-row seat for this completely free, virtual conference. Read about the highlights that caught our attention!</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"This year’s Frontend Nation conference was held from June 4th through 7th and showcased an impressive array of technical sessions and discussions, establishing itself as a must-attend event for front-end and full-stack developers globally. As Diamond sponsors for this year's event, TinyMCE had a front-row seat for this completely free, virtual conference. Read about the highlights that caught our attention!"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Header image for the TinyMCE Fronend Nation 2024 Conference wrap up post that displays the logos for TinyMCE and Frontend Nation. ","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAACEFBMVEUADDMADTQADjUADjYADjgADzkAEDoAETsAETwAEjwAEz0AEz4AFEAAFUEAFkIAF0QAF0UAGEYAGUcADjcADzgAEj0AFD8AF0MAGEUAGUYAGkgAG0kAG0oAEDsAET0AEj4AEz8AE0AAFEEAFUIAFkQAF0YAGEcAGEgAGUgAGUkAHEsAHUwAHk0ADT0AADgAADkAAD0ABD8AAD8AAD4AAEEAFEYAFUcAEUkAAEsAAEcAAEYACkkAHE4AH1AACz8ADUBaXW1LUGQ3PlgkLlA+RF1NUmdHTWQAF0kNI1AjLUtjX0NiX0lWXHNZX3haYXlXXXQFJFQAIFMAAkAqM1K2t7ymqK+dn6efoamipaylp6+TlqBFTGZrcINWVk21qRaoni2cmXmenIKXlYFqcIMKKFkAIlcAE0YAFUhPVWo4QF0rNlg/R2IlMlYzPV0yPV0SKFQmNVwWKVJZWU9PUU9CR05ARU08Qk8AE1QAI1kAJlsAG0sAGUsAB0gADkoAEksAEUwAFk4AFU8AGVAAH1MAH1QAH1cAFFgAFVkAGVoAHFsAH1wAJlwAKF0AKV4AH08AIFAAIFEAIFIAIVMAIlQAI1UAJFYAJFcAJVgAJlkAJloAJ1sAJ1wAKV8AKmAAK2EALGIAJVcAKFwAKV0AKl4AKl8ALWMALWQALmUAL2YAJ1oAKFsAK2AALGEAMGcAMWgAMWmGjW3SAAAAYUlEQVQI163Luw6CQAAF0T2wIgtGCpTOx///2toQEsBKCy00tk5352YEn7xXb6TYze1MWpN7jVMOw+u+HWHa49x914+CePVLPPxTjjrEiHbBNg+UKsSyXUNqFrm5mKqaDU8OtRHYujecmwAAAABJRU5ErkJggg==","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/27GgjDXGXoRRLWmBjVtOXv/624a5780405e8338b0278dc7a69bc2c9/Frontend_Nation_Wrapup_Post.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Mrina Sugosh","slug":"mrina-sugosh"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Frontend Nation 2024: TinyMCE Wrap-up"},"metaDescription":{"metaDescription":"Explore the highlights from Frontend Nation 2024, featuring DevRel insights, full stack and front end development, and OpenAI integration."}},{"title":"Understanding Uncaught TypeErrors in JavaScript","slug":"javascript-uncaught-typeerror","featured":false,"lastUpdated":"Mar 7th, 2024","description":{"description":"<p>It's time for a refresh (or an introduction) to understanding and solving JavaScript Uncaught TypeErrors.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"It's time for a refresh (or an introduction) to understanding and solving JavaScript Uncaught TypeErrors."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Uncaught TypeErrors appears inside an editor with the JavaScript Icon, with colors capturing the error handling phase","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAAw1BMVEX/8PD/8fH/7u7/7+/95+b+4uL+4OD+4eH+5eX+7e3+8PD/7u/75ubz8fD39PX49fX59fX59vb49PX/5+b85eb89PX98PL/8fL/8/T//v/8/P397/D64dz75+b87+/+6en+6Oj95+f+7Oz//P779Mz36aP97uv+5OP66ej5+vr5+fn7/Pz7/v76/v35/P338cnr3Z387Oj/8PH/6en86ur68vL78/P89fX99vb27/D28PH68/T97+//7e3z2tz97e397Ox8UJH1AAAAX0lEQVQIHQXBsQ3CUBBAMb/oN0DHKLRZH4aAETJAaJAOOxAwgA1i2kaAkLaqOoEF16qUL0PkXqnqdxgW5lJVVQ4suFVV1afGwqOqqs4MoXZe7d4HhgXzxNRhQCATDPAHf1YZ8QTlufwAAAAASUVORK5CYII=","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4M7RjXxIVOXAHZphdOOR0Q/d92f16510de2bfbcce97ac77a9212661/img-Understanding_uncaught_type_errors.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Understanding JavaScript uncaught type errors | TinyMCE"},"metaDescription":{"metaDescription":"Discover all you need to know to solve JavaScript Uncaught TypeError messages, the most common kind of error you'll face learning JavaScript"}},{"title":"Understanding byte offset and WYSIWYG cursor position","slug":"byte-offset","featured":false,"lastUpdated":"Apr 18th, 2024","description":{"description":"<p>Byte offsets, and how they affect WYSIWYGs, is important to know. Read on to find out more.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Byte offsets, and how they affect WYSIWYGs, is important to know. Read on to find out more."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"images representing javascript and numbers around the rich text editor","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.7833333333333334,"src":"//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=370&h=207&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=739&h=414&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=1926&h=1080&q=50&fit=scale 1926w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=370&h=207&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=739&h=414&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4IVzxBAQGLCegTCvwqBpSr/ec866cf7e42753fb7d7f9995307dacd2/Design_1.jpg?w=1926&h=1080&q=50&fm=webp&fit=scale 1926w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Understanding byte offset and byte offset meaning | TinyMCE"},"metaDescription":{"metaDescription":"Find out the important byte offset information you need to know to understand more about byte offsets in your WYSIWYG"}},{"title":"Understanding cross platform app development","slug":"cross-platform-app-development","featured":false,"lastUpdated":"Feb 21st, 2024","description":{"description":"<p>Getting started with cross platform app development is not without challenges. Find out the essentials in our new guide.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Getting started with cross platform app development is not without challenges. Find out the essentials in our new guide."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"The steps of cross platform app development shown with Android icons, a phone interface, and iOS icons","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAAyVBMVEX+3OD/3OD/3eH/3OH+3uL+3N/+29//3N/93uH93OD74uX48fHN2tqy1NK61tXr1NH61tPy3d/s3t752Nf73+L73uH529r229nj5vHk7vLU0Nze19z42Nr03d/r3Nn008r929392t7+2t7+2uDz6/n87eTd2N/r5uvn09D+2tr45en44+X/29/72tz32Nna4e3V2dPC2+DX1djSwcb619z65On64+b/2+D/3eLhz7vYy7DI1tSu1dGu087x2dz109j62N3729z829ySwQDnAAAAZElEQVQIHQXBsRFBURRAwT38GQ3IFKAEodoVoQEzMtGPedduQAADQRBaDCEcS+ur1tjIqaqq2v1Ec66qqnrNbGi/VFVVLRuT97WqqhYht6qqz5MRHOfeY4lhCDoMshgI5LBggD+plh9Dd3iiZwAAAABJRU5ErkJggg==","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6VjjHZN8Kr1nKHY4SJJerz/60d0ed9bae480cbf511582778f7796eb/img-Understanding-cross-platform-app-development-1.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"What is cross platform app development | TinyMCE"},"metaDescription":{"metaDescription":"Cross platform app development can save time and resources, but it's not without challenges. Find out more about cross platform app development in our new guide."}},{"title":"Is there anything better than React? Discovering React alternatives","slug":"react-alternatives","featured":false,"lastUpdated":"Feb 8th, 2024","description":{"description":"<p>What are the React alternatives? Find out what frameworks provide an answer when React isn't the right choice.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"What are the React alternatives? Find out what frameworks provide an answer when React isn't the right choice."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"A rocket launch showing the power of React","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAAz1BMVEUA4KwA4awA4KsA4asA4KoA36pA3qsA4LcA4LMA3qqk49Kf6dIA5beq4sTp6eGE37YX4a2Y38ts4MYA2LCo087y7vyf3dVV48Sw5Mzs6uSF37YA4a2I3cZa4bk74LPg6OvO5uRW18J/3bdx4rmw5N574cU/3qho26Jr3qua5snu8/OS3cYA1q2U2J+W4LvG6fel5Nxc3KWW152a0qDe5dj//f7P5txzxaiV0KRs5Ltw58tM4rgA4q8A4K9i4rl25r5c4LVn4bg14rQA4rEA4KmoahRXAAAATElEQVQI12NgIAgYUSgmRgbGfwzMjH/+wQUZmVgYoeAzSJQFJMjPCAdf4YLcCEGwYSBBaWyCyCoRFkkrQoV+Hv2P7EIWFxYmIMDjBwBWfAvNNMVjIAAAAABJRU5ErkJggg==","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4hsGQMZeid58sjsjKPwbw1/8a4af88ccd3792f3e764fcf7c6a36348/img-anything-better-than-React-1.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Is there anything better than React? Discovering React alternatives | TinyMCE"},"metaDescription":{"metaDescription":"Explore top alternatives to React JS, evaluate its competitors, and learn how to choose the right framework for your needs."}},{"title":"Improving our engineering best practices with semantic versioning","slug":"improving-our-engineering-best-practices-with-semantic-versioning","featured":false,"lastUpdated":"Feb 7th, 2024","description":{"description":"<p>What is semantic versioning, and what does it mean for you? Switching to semantic versioning is just one step you can take for engineering best practice.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"What is semantic versioning, and what does it mean for you? Switching to semantic versioning is just one step you can take for engineering best practice."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"The different stages and levels representing the specific numbering found in semantic versioning","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAAwFBMVEX/yxf/yxb/yxX/yxP/yw3/ywT/yw//yxT/ywD/ygD9yif/ywP/yxD/zBf7zUbT1LO8ycPe0pj9yy//yx7/yxr/zBn6zEbM17yu1dPIxJr8yib7yjH/yxn5vTb5vzX/zRb/zA/6ySrrw0rd0JS10c7HyLnyyF//yxL6ykD/xwD9xx79yh/sz3q/2MzGx6zovHfIz8G6ysjh0JL/zBb/zAf7yBT+yQD5zUvM1ry3zcTjyHr/zAj/zAb7yBr/yw7/ywwGo4veAAAAQHRSTlPl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl3t+NJQAAAH9JREFUCB1dwYcawTAUBtD/puilYtemasVeoUaN938rPsToOXghQYggKxZP2IQ/NidT7KQFJD7IyWRzeS4UqeS6eCMuV6q1eqPJrbYHo+N3e/3BUI3GEwlDTv3ZfLFcrTesYbh6y7tgfzieWOOLVHjm4MJXwi8S1i1UAhH0gKc7tSUJ29tKf+kAAAAASUVORK5CYII=","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/Bd9ENssvqhYSiDbIORoTr/269ba3a4694f50bfe57506ecc8e4d3ca/img-Software-Versioning-best-1.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Millie Macdonald","slug":"millie-macdonald"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"Agile at Tiny: How we’ve adapted agile principles to work for us","slug":"agile-principles-at-tiny","featured":false,"lastUpdated":"Jan 17th, 2024","description":{"description":"<p>How do we use agile principles at Tiny? Find out how we put agile into practice and adapt the concepts to work for our teams.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"How do we use agile principles at Tiny? Find out how we put agile into practice and adapt the concepts to work for our teams."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"A collection of Agile related imagery such as notebooks, pinned cards, and a stop watch","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAA0lBMVEVk86Rk9KRj9KRg9KNf86Ji9KRf9KNe9KNf9aOJ67iQ5Lpe8qFg86Jl8qR37Kp57Kph86Vc9KRZ7qKJ6LSO67hY8p1/26ps6KWO8rby8Ors8+yT6qei4Y5e9KWB4pfaxkalyKVh4LmIzats56SV8rn/4tbz7OOW45+u3Ipf9KV765nXzVCttLduzc1e8p5S3qZ8xcTn7+zd9eeE6qCQ45Vi8aRj9KVh9KVk9KNh8alj8qdf7aVW3KtW261n7ad38Kql6ZyE7Zxh86Ri9KVj9aJg9KKHdYJiAAAAZklEQVQIHW3BywkCMRRA0XszQcQPWIAN2IH70f7X9jHgRvN8GRGy8Bz+kU5SCEEnydTCSds7AiogG9Nza1peQSW5M+3tFgMBzw4ejUo6OAAq6egg+LLMpXi93afTpQiykpUEwUh+PriNFKHJEqftAAAAAElFTkSuQmCC","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2deNFqN8uYnV3qCLfs4nR0/c9d8e0c108baa1cf58b0eaab0b748174/img-Using-agile-principles-adopt-or-adapt-1.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Using Agile principles: To adopt or adapt? | Tiny"},"metaDescription":{"metaDescription":"How do we use agile principles at Tiny? Find out how we put agile into practice and adapt the concepts to work for our teams."}},{"title":"How to work with PHP escape quotes","slug":"php-escape","featured":false,"lastUpdated":"Dec 7th, 2023","description":{"description":"<p>There's more to PHP escape quote procedures than using a backslash. Read on to find out the essentials of handling PHP escape characters.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"There's more to PHP escape quote procedures than using a backslash. Read on to find out the essentials of handling PHP escape characters."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"PHP content escaping a page, representing the PHP escape quote process","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAAnFBMVEWqtP+rtP+ps/+qtf+os/+Wr/Kbvuaotf2ptf+ptP+puP+qtv+pt/+Wre293d3i7vCvuPzY2fLV1/Kptv+qt/+quf+quP+mtf+qtOzs7+jn6e6xuPvf3u3a2u+ptPmlruilruaosvSnsv+rs+zq6ufk5O6ps/ertv+ZotScosabosamr++rtf+osv+wufPT2PKxuu+drvCnsvmos/5DvsiFAAAATElEQVQI12NgIBUwMoFIZigHwmQEAQYQ+vGXgYEFJMPOxAgHPxigglzMCMG3cO3yEL4IiLwCVcnADeJdZpW7yKB5BclyBl1juOUkAADBjQlbDxm0tgAAAABJRU5ErkJggg==","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/3EihLXXBO1fnatkO9ozUld/884edeb3c23d2335cc3c4e56e9c36a38/img-Howto-work-with-PHP-escape-quotes.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"How to work with PHP escape quotes and characters | TinyMCE"},"metaDescription":{"metaDescription":"Master PHP escape sequences with our guide. Learn string escape basics, single vs double quote usage, and how to navigate heredoc syntax."}},{"title":"How to get content and set content in TinyMCE","slug":"how-to-get-content-and-set-content-in-tinymce","featured":true,"lastUpdated":"Jan 24th, 2024","description":{"description":"<p>A brief guide on how to get and set content in TinyMCE, including related FAQs like how to set content on initialization and how to get content without any HTML tags.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A brief guide on how to get and set content in TinyMCE, including related FAQs like how to set content on initialization and how to get content without any HTML tags."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"All kinds of content including text, video, and images being collected and set in an editor","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAAz1BMVEX5q/P6q/P6q/P6q/T5q/P7qvT6qfT4q/T6qvTyrvD2rfLkx/HI0vDawPHrpfHxr/H4p/P7q/TPvOPivezS39nP4bbX2d3hxb/XtuDzo/Pvr/H5qPP6qPT6qvPup+3rsO3jxtjDxLK2uMy1q8ajjeDnte7szO70yfH2xfL4rPL5qvPtpu3sqOzkm+xudOygrPC0v/NScevNuOTj0d7o2ubn0uX0rO/7q/Pzp/GPguqQjuuomuujh+vinu34p/D2pvDvpvHxpvH3qPL7rPT6rPSbYVaoAAAAAnRSTlP+/qap3hAAAABoSURBVAgdBcGxMQRgFIDB/d79BMY1oA6x2q8NGhDIzIiMe3YBAEBDACzMGe6Z6u/yy0CH9VhV9W2HDvvwVFVVn9JhX6qqqj5y4FpVVeU+B969VlX5MjpY9q1+nm+QgVaX6XqDCBBY4B/PDBUc0FJGtAAAAABJRU5ErkJggg==","aspectRatio":1.780758556891767,"src":"//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=1109&h=623&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=1478&h=830&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=1925&h=1081&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=1109&h=623&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=1478&h=830&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6ElZ819XSaYszxbXjWNQIm/0b9d3a3f5f46c2a6ecccb3b3d3db954b/How_to_get_content_and_set_content_in_TinyMCE.png?w=1925&h=1081&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"How to get content from the editor and set content | TinyMCE"},"metaDescription":{"metaDescription":"How to get content from the TinyMCE editor in JavaScript. How to set content in TinyMCE. How to get content out of TinyMCE without HTML tags."}},{"title":"2024 State of Rich Text Editors Developer Survey is open – have your say!","slug":"tinys-developer-survey","featured":false,"lastUpdated":"Mar 8th, 2024","description":{"description":"<p>Announcing our developer survey! Tiny aims to lead innovation, and with your help, we hope to learn what the best practices are and how to cater to future needs of our community.&nbsp;</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Announcing our developer survey! Tiny aims to lead innovation, and with your help, we hope to learn what the best practices are and how to cater to future needs of our community. "}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"A symbolic version of a survey, with star rating, emoji, questions, and results represented.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABNVBMVEWVrf+VrP+SrP+WrP+Trf+Qq/+RrP+NrfuGsPGws9exstWIr/KCsPKCsPGIr/aUrP+Urf+drfbVvsK4seGNv+qg3LPD2puyybSSxsaT47uT4buU47qW0cyhq+aksO2csfuRrf+ureT/zGDZtqu9yfzr6/jO3/bGtvXg1Prv6vvu6Pzv6f3y7Pvf4PaYqPeYqvmVrv6VrP6urOGbpuzR2Pjr5Png2/re1fno4vvv7fTq4/3s5P/i0PnPj/jCgfuumfmTrP+Nqf+Lpvrh5Pnr5Prh2vbl3vnn4fXm4Pvp4v3KyOyEtPeNy/6Lv/iUrP6PqPzV2vXq4/bl3fjm3vnl3fnq4fzb2vKozet/uvGKtPeSq/+kt/24wv21v/60v/22wP62wP+4wv+6w/+zwPyUqv6Vq/+Qqv+Mn4RUAAAAZUlEQVQIHQXBwQ1BQQBAwTeyNxG/ABcXbdCKytxEWzpYiausmaqqqqqqVBWtXdWvSg2AglkaBwCBzxydAADejeYZAFCjeQQCKNV2RawdvFajmnsgsEpVt0uPe9X3WaWqtqpqVvUHgrARVvIC/egAAAAASUVORK5CYII=","aspectRatio":1.7790178571428572,"src":"//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=1109&h=623&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=1478&h=831&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=1594&h=896&q=50&fit=scale 1594w","srcWebp":"//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=1109&h=623&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=1478&h=831&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/5RkV4KkTsTDLYV5q0UwlHY/f0669377994d735f6a01ec7becfde967/image__1_.png?w=1594&h=896&q=50&fm=webp&fit=scale 1594w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Di Mace","slug":"di-mace"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Annual developer survey for rich text editors opens now | TinyMCE"},"metaDescription":{"metaDescription":"The TinyMCE annual developer survey for the state of rich text editors is now open! Have your say on how you develop software with rich text editors."}},{"title":"Angular Change Detection and the OnPush strategy","slug":"angular-change-detection-onpush-strategy","featured":false,"lastUpdated":"Mar 7th, 2023","description":{"description":"<p>There is an alternative method for detecting value changes faster in Angular applications with immutable reference types and the OnPush strategy. Read on to find out how this works.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"There is an alternative method for detecting value changes faster in Angular applications with immutable reference types and the OnPush strategy. Read on to find out how this works."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Angular logo on a yellow background with process elements","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAAqFBMVEX42r/52r/527/728D628D528D53cH53sL53MH428La2MDn2sP63MHxxq7usZvzybD52sD02sKszrHM1r7lqpbmgYLqhYvnjHz12sH32sD117z028P23cTalYLnhYrzur7qmZL23Mb43sf017zqzrTv0bf12L3vz7XclYvhcm7utqH02sDz17322L3v0rjz1rv01Lr22b7x0rfy1Lrz1bvy1brw07j53MAPx842AAAAaUlEQVQIHQXBwUlDARBAwXnfv6BR8O4hbdh/GWILIl6FxHUmCFiAE0GwQMRR1f1mwQmPVfWL5x8kvVZVfXFbTvp7qqp6uNNK57Wqqm8vn+yJS/q4Xqq32qCOmZl5n5kZRQQAWAcLFmD5B8m3FsOkv4dTAAAAAElFTkSuQmCC","aspectRatio":1.7777777777777777,"src":"//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=1478&h=831&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=1920&h=1080&q=50&fit=scale 1920w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=1478&h=831&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/1LXmifcjJCDfpxF9LDdwnI/849dce013c1618601b0333fdc7a093f5/An_Angular_5_tutorial__step-by-step_guide_to_your_first_Angular_5_app.png?w=1920&h=1080&q=50&fm=webp&fit=scale 1920w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ahmet Shapiro-Erciyas","slug":"ahmet-shapiro-erciyas"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Angular change detection: how it works and strategies explained | TinyMCE"},"metaDescription":{"metaDescription":"AngularJS's change detection is one of its most powerful features. In this article we explain how it works and review some strategies for using it effectively."}},{"title":"Lessons learned over 20 years as a web developer","slug":"lessons-learned-over-20-years-as-a-web-developer","featured":false,"lastUpdated":"Oct 5th, 2020","description":{"description":"<p>A discussion of the top five areas of expertise that no web developer should be without, covering performance and optimization, tools, image compression, testing, and approaches to learning.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A discussion of the top five areas of expertise that no web developer should be without, covering performance and optimization, tools, image compression, testing, and approaches to learning."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"The number 20.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAADh0lEQVQYGR3BTUwcVRwA8P9782Zmdz52Z3e2O/vBR4GCbJGkxGjQtCqxFTRROPSstNx782g8GA+mUQ8meLBFaJNi0oMx2prYEA8UG0Ji0kYOFoILC8x+wLJ0dmd33nszY+Lvhz45SySfSxSMCiRfy8LFD4+svJHN5c2EQMTmi1Mh8B2Pp/3OyNFmevc7pALoAKoG6jDxuR8yCCuAZ640xi/Fzw2OZqyUkVCjCkKYMq4rkYB6jtP6x+6jyVz++afYhRA1AYrCKxKQGmgzk+HbV1JDhYyVKR/aTrOpKEqUiBIhB3Z5e+ffuKr19vZtQcyHAcP+AwGA7xJ+BDDSRcYvqemsqqiLCz/cu7UAALNzs9OXJ0JEZm/cYM3jrp6Xbs3PFwYG/+64icZ1016AEDAHUN56j2oxy8pUKxWv1Vr68e7nX36xeHuxuFN8tHzn8sTEysrqO2++8fODB5IsdfcObOfGGRagA1iMALayqqYjjDK57Edz16NhWCmXJ96f6uo/267tm6YZj8dyudyBbXucpU2zEc+exqaDNmBp7AIjoqoqnDFOKe+0d5aX7n/z7dTUZDKTSfb27Ty8f1zalSMRj3PKGBZQNG7UtT6/DRgnUj5GgiAwRlnHRUQ8DvHLr786fL6AI1HJzKSL9erTv1AY+IxRn/HQl2W5rZ5hLmAQJYQQhAGjHiKSXa3e/OXRxekZTdMAIBaRhwE6D5drG094GDCv3em4POA8xKwJmL04DX2fMQYAPAjWVh+PjBaGzxf8IGDUq1fKHoCX6hbTls88r93yaMdpNWVK2Qlgb3MtcFtNxyGiWLbL976//cHVq6quB0HAOeOuiwcg+e6kku+q16oe5x6jjXotrJVpCwivgl+rnsSNpGnuFYsAQCndfPZMkqR8KkmapycRa6vurP653tPdLRBSqdf5kc0OtzoIhDEApIhK/znKueM466uPn6ytrfz2+/bu7lhhKHkmtS3Fv/p6vru/b3bumqZrxdJ+/95O9Nc7IAG6ZkJ4DJm5j6XBISQIRiJBCMEYi6IouE4C89DqctueEdMkWd7dK/W4zfjSzUijJCogXDBkEPzW+lOjMIx13WPM+J+m662TeiphID1GiNhoNPZLB5bTkH+6yzafCwkgMgijMTkMWeDCyfqGlrPiVuagUrEPD91Wq7ZXDBgt1Y5L+wfY95MVGxY+8zbKQQywCAjDf4ZOwjSZZuE9AAAAAElFTkSuQmCC","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/6amp8fmeVDhXPf8o6nxzBC/65575f34ce81cc2cca8e7dba6c5d68d8/Image_default_LessonsLearned.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6amp8fmeVDhXPf8o6nxzBC/65575f34ce81cc2cca8e7dba6c5d68d8/Image_default_LessonsLearned.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6amp8fmeVDhXPf8o6nxzBC/65575f34ce81cc2cca8e7dba6c5d68d8/Image_default_LessonsLearned.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6amp8fmeVDhXPf8o6nxzBC/65575f34ce81cc2cca8e7dba6c5d68d8/Image_default_LessonsLearned.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6amp8fmeVDhXPf8o6nxzBC/65575f34ce81cc2cca8e7dba6c5d68d8/Image_default_LessonsLearned.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6amp8fmeVDhXPf8o6nxzBC/65575f34ce81cc2cca8e7dba6c5d68d8/Image_default_LessonsLearned.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6amp8fmeVDhXPf8o6nxzBC/65575f34ce81cc2cca8e7dba6c5d68d8/Image_default_LessonsLearned.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6amp8fmeVDhXPf8o6nxzBC/65575f34ce81cc2cca8e7dba6c5d68d8/Image_default_LessonsLearned.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6amp8fmeVDhXPf8o6nxzBC/65575f34ce81cc2cca8e7dba6c5d68d8/Image_default_LessonsLearned.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6amp8fmeVDhXPf8o6nxzBC/65575f34ce81cc2cca8e7dba6c5d68d8/Image_default_LessonsLearned.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Marty Friedel","slug":"marty-friedel"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"A how-to guide to SVG animation","slug":"guide-svg-animation","featured":false,"lastUpdated":"Aug 29th, 2022","description":{"description":"<p>Find out different ways you can animate SVG with HTML, CSS, and JavaScript.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Find out different ways you can animate SVG with HTML, CSS, and JavaScript."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"SVG animation","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/AmJMd7T2Cbyjxwx8g4YrA/a2246d2d63ffe3542c5a5490991ab6fa/img-svg-howto-tinymce.jpg?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Juan Calou","slug":"juan-calou"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"How to create SVG animations | TinyMCE"},"metaDescription":{"metaDescription":"Guide on different ways you can animate SVG with HTML, CSS, JavaScript with detailed instructions and examples."}},{"title":"Software development trends 2023: Stack Overflow survey analysis","slug":"software-development-trends","featured":false,"lastUpdated":"Oct 4th, 2023","description":{"description":"<p>Curious about your career direction? Stack Overflow's software developer survey has some useful career insights. Read on to find out about education, business size, and AI adoption.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Curious about your career direction? Stack Overflow's software developer survey has some useful career insights. Read on to find out about education, business size, and AI adoption."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Charts and code brackets are arrayed together with a robot character completing results analysis","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAALABQDAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAQQHCP/EACUQAAICAQMDBAMAAAAAAAAAAAECAwQRAAUGEhMxByFBYQgikf/EABgBAAMBAQAAAAAAAAAAAAAAAAIEBQcG/8QAJhEAAgEDAgQHAAAAAAAAAAAAAQIRAAMEISIFEjFhBkFRcaGxwf/aAAwDAQACEQMRAD8ArXo5xTh/Il3ibmN9aFWt2hXJs9juM3V1DP1hf7raeOZOfYCLw8HmMzAnQR2PepOLZtsrXLo2j7+Ko+/fjbsFqtYucf3etFQtVopduee40hY+/U2Av7K2QB4xjXO43iLLtALlqWKk820DT08oI9qYbFsONhiY7/tZvKsjFXUo4OGU/B+RrSVYOoZTINR2UqSrdRQBMbB19nHhh50RAYQaHprT0XJt4ghSKPdr0cUYCpGtlwqqPAAzgD60s+Di3CWe0pJ66CjFx1GhpJpGlYu56nYkkn5OmFVUAVRAFBM6mv/Z","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/wpK4Dky9vEeRjCrUC76HV/66974732f1d0f49234f332fbc669e579/TinyMCE___-Blog_Header-_-Rework_-34-_v1.jpg?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Latest software development trends 2023: Stack Overflow survey | TinyMCE"},"metaDescription":{"metaDescription":"The most recent info on software development trends based Stack Overflow survey results for developers"}},{"title":"How to add rich text editor in Django ","slug":"django-tinymce","featured":false,"lastUpdated":"May 13th, 2020","description":{"description":"<p>Thanks to the django-tinymce project, built and maintained by a dedicated community of open source contributors, developers can enhance their Django apps with the power and flexibility that comes with our TinyMCE rich text editor.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Thanks to the django-tinymce project, built and maintained by a dedicated community of open source contributors, developers can enhance their Django apps with the power and flexibility that comes with our TinyMCE rich text editor."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Text \"django-tinymce\".","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAMAAAAhxq8pAAAC9FBMVEUHougGougNpekRqOkSqOkKpOgEoOgYs+siw+8eu+0GoegIo+gIn+cOo+gRpegSpegLoegHn+cFnecWr+ogvu4bt+wGnucJoOcPpOgInOcOn+cRoecSoecLnecHm+YEmOYVrOkevO0atOsIm+YNnucImOYOmuYRnOYSm+YRm+YLmeYPougXruoduewbtOsVpegTpegJmuYPluYRluYRlOYUnecNmOcHkeYHkuYIkeUIkuUTo+gctuwbtuwet+weuOwXrOoKluYRkeURkeYYp+oky+kdstwQm+QOm+gRoekPnegRoOgNmecRoOkbsuwdtOwctOwVp+oKkeYMj+UQiuUXoukn0eYo1OQjxNwix+Aj1eck0uUkzuYkzeQl0OYky+Ml0eYUoOESm+gZsOwSpOkHjOUMjOURjuURiuYPkechvuQhvtocyt0AuNkkutYQqdUAq9oOyeQZ1eEAst0AudkAidYAg+YAk+cAh+YAheUFiuYMiuYVpusKhucGfOMAjOMtodiVr+aSrONxmN9WlOhGs+Q1ptNPjOJdluZYlekpiOhZlelAjudUl+kAhuYXr+0TousIhecAhuhDqebT2+y+x9/M0+XN1Oi5xejAyujFzePU2urQ1+jCzui0wd/CzufU2uZUkOEAgecWre0RmOoIf+cAgOcAid+it+WquNyottiWqtqftOHL0uOPptmbrtqltt2puuCnuuSyvNQ0gdwAf+gQlusJeugIeegEeugAd+kAd+YAdeMAdOQAdOV/oeV7ltUAceUAdeUAd+UAeOUAe+QAeuMAfOcAfegJd+kJeOkIeOkFeOkAeOkAhuoAheoAdOkAeekAe+kCfOkHeukHeOkJduoIduoIdeoKd+oMduoKhusMou8Nou8MiOsNd+oNeeoNeuoMeOoJdOsIdOsLdesMdesMhuwPoO8Po+8RpO8So+8PiewNdusNeOsMdusIcu0Kc+0MdO0Mh+4OpPEPpvEQpvERp/ERqPERpvEOie4LdO1vg87MAAAAeElEQVQYGQXBQUrDABRAwTfhG7Q0ICb3P2JxEypUiTPKtZBXtcLz5l6IV7UCs4X89l5v4HmbO3hVtQab2QC64Fown4Br4W+A+QIAwBwAAJgDAIBmBwDAHAAQMDsA4FqYPTyuPVBhtsodQDmbrQRAzi3fFQA/H2f1D4+IFQEAslCnAAAAAElFTkSuQmCC","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/7C0UgRv1Jnh4eKxONOcOoU/615f7b30daaea58215eb692c0672c96c/Image_default_Django.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/7C0UgRv1Jnh4eKxONOcOoU/615f7b30daaea58215eb692c0672c96c/Image_default_Django.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7C0UgRv1Jnh4eKxONOcOoU/615f7b30daaea58215eb692c0672c96c/Image_default_Django.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7C0UgRv1Jnh4eKxONOcOoU/615f7b30daaea58215eb692c0672c96c/Image_default_Django.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7C0UgRv1Jnh4eKxONOcOoU/615f7b30daaea58215eb692c0672c96c/Image_default_Django.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/7C0UgRv1Jnh4eKxONOcOoU/615f7b30daaea58215eb692c0672c96c/Image_default_Django.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/7C0UgRv1Jnh4eKxONOcOoU/615f7b30daaea58215eb692c0672c96c/Image_default_Django.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7C0UgRv1Jnh4eKxONOcOoU/615f7b30daaea58215eb692c0672c96c/Image_default_Django.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7C0UgRv1Jnh4eKxONOcOoU/615f7b30daaea58215eb692c0672c96c/Image_default_Django.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7C0UgRv1Jnh4eKxONOcOoU/615f7b30daaea58215eb692c0672c96c/Image_default_Django.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"How to add rich text editor in Django | TinyMCE"},"metaDescription":{"metaDescription":"Enhance your Django apps with the power of a WYSIWYG rich text editor, thanks to the django-tinymce project."}},{"title":"React accessibility: making your React app accessible","slug":"react-accessibility","featured":false,"lastUpdated":"Sep 6th, 2023","description":{"description":"<p>A11y best practices are essential. For a guide on getting started with accessibility in your React app, read on.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A11y best practices are essential. For a guide on getting started with accessibility in your React app, read on."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"The text area and a react app expressed in symbols on a green background","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAA5FBMVEUPqlgOqlgMqlgNqlgJqlcAqVUAqVMAqFIAqVQCqlYKqlcLqlcMqlcIqVcvq2AsqV4pq14AqE4Ap0kAqE8EqlYBqlcApUiyxKHs8uvZ59xVsHNEr2lhtYCFwqJnt4QAqEwHqlYAqlcApETMx6/f3//d3v/w9fVNr208rGS22tnR7v+62905rGMOqlcApkq+upjSzNvPydrZ3tIwrF8xq1+73eDS7/+/2+NEq2gIqlgAqlVDplFYqVJXqFFAqFMAqFEApklyuY2XxbR2tpAGqVYGqlcAqlYAqlQBqlYAp0cAqE0IqlcLeSYnAAAAdUlEQVQIHW3BsQ7BQACA4f+/qzS9dhSDZ/AA3sEz2ztKbDazwSQSoecapYvv4x8pRBwyXwJGP3K4ZQqBNCzUu416fQGCSxUn5wwV0Dk7bY5QUXTOKAS3/lxW+wwBct+2Q3o2j0Ndr/vMxBhCMKZdioxkJmRGb2rwGStd8qt6AAAAAElFTkSuQmCC","aspectRatio":1.7824074074074074,"src":"//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=1109&h=622&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=1478&h=829&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=1925&h=1080&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=1109&h=622&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=1478&h=829&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/336v6qodKUybJ7KZztKyiL/cb4079e45a50a4bb3c6b0a8bd082c1ec/How_to_enrich_React_textarea_with_TinyMCE.png?w=1925&h=1080&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"React accessibility: making your React app accessible | TinyMCE"},"metaDescription":{"metaDescription":"Dive into React accessibility: Understand web standards, build accessible components, learn a11y best practices, and master"}},{"title":"HTML editor with preview: single screen or side-by-side editing?","slug":"side-by-side-single-screen-wysiwyg-html-editing","featured":false,"lastUpdated":"Sep 20th, 2021","description":{"description":"<p>Side-by-side and single screen editing are two separate ways you can edit source code. WYSIWYG HTML editors running in web applications or websites typically use the single screen method for modifying any source code inside the editor. VS Code uses Side-by-side editing. An issue of trust and resources appear when thinking about implementing a side-by-side editing view in a WYSIWYG. It&rsquo;s possible to optimize TinyMCE for single screen HTML editing, and this article explains how.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Side-by-side and single screen editing are two separate ways you can edit source code. WYSIWYG HTML editors running in web applications or websites typically use the single screen method for modifying any source code inside the editor. VS Code uses Side-by-side editing. An issue of trust and resources appear when thinking about implementing a side-by-side editing view in a WYSIWYG. It’s possible to optimize TinyMCE for single screen HTML editing, and this article explains how."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"A laptop and notebook on a table, representing the single scree and side-by-side WYSIWYG HTML editing","artistName":"Mel Poole","image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.8120481927710843,"src":"//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=185&h=102&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=370&h=204&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=739&h=408&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=1109&h=612&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=1478&h=816&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=2217&h=1223&q=50&fit=scale 2217w","srcWebp":"//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=185&h=102&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=370&h=204&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=739&h=408&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=1109&h=612&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=1478&h=816&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/59sYysl1s64w37koGAoUN9/4dd8044db633f6824cc6a39fba9c2b07/mel-poole-nuFOLbZn6KA-unsplash-BW.jpg?w=2217&h=1223&q=50&fm=webp&fit=scale 2217w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"HTML editor with preview: single screen or side-by-side editing? | TinyMCE"},"metaDescription":{"metaDescription":"There are two ways to check HTML code changes in real time: with the help of a single screen or a side-by-side editing preview. We'll talk about both methods and considerations for their use."}},{"title":"Easy comparison of IDE vs text editors for developers","slug":"text-editor-vs-ide-vs-code-editor","featured":false,"lastUpdated":"Jan 12th, 2023","description":{"description":"<p>Confused how IDE differs from text editor? Get clarity in this article, which explores the major differences between the two.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Confused how IDE differs from text editor? Get clarity in this article, which explores the major differences between the two."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"IDE and Text Editors separated by a large slash character to represent the divide","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABHVBMVEUMEywKESsGDioACSgABycBCygIECoMEiwLEisHDyoABCYACCgSFy4FDioAACIAAB4AABkAACECCykAACUkJzdVV143OUUbHzJUVl55e3+am556e4ABCigABSdAQkxcXmQ9P0kJESsIESsWGzBGSFFsbXOJio5tbnQAACQeIjRUVV1UVl0AASYIECsGDyoAACMAABsAABE7PUhcXWQ+QEoAAiYKEisEDSlRU1pWWF8iJjYACihFRlARFy2HiIyPkJOQkpVBQ00AAB8ABicSGC5OUFhZWmEqLTsAACBISlNub3SDhIhyc3lLTFUvMT8wM0BbXWNJS1MAABp7fIGio6acnaCFhotXWGAEDik8PkkxNEEYHDEgIzUkKDgpLDsiQMDLAAAAtElEQVQIHQXBzUoCYRhA4XOcV2f8xgqin01K1CIIail449Gqfd5BP1gGFUUmgUiT49jzCKiqVaG6bioCiraq88KkzlsQ0CTVpXuqs6MnEE5U/TxUm8z7ClrwVpZl+TFIKUVv2q2ADOqffHuR78TkoF73x3kNAkMfs373a1/V5wkIwy3V6bGqXsUvQW5Pr1fNuaKmP8iIUadzs7l8fVncnUVE+70mYLxieTEumt3v2e3g4XQD/17JNp95bZJAAAAAAElFTkSuQmCC","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/0yNGl6CZizsVGScJAIfXz/08db183d82e5cc2285830849c35f1dbf/img-ide-vs-text-edtor-version2.png?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Difference between text editor and IDE and code editor | TinyMCE"},"metaDescription":{"metaDescription":"Confused how IDE differs from text editor? We’ve covered the major differences and provided examples to clarify this"}},{"title":"Modular programming: beyond the spaghetti mess","slug":"modular-programming-principle","featured":true,"lastUpdated":"Jun 28th, 2023","description":{"description":"<p>Considering a modular programming approach? We unpack this programming principle with everything software developers need to know.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Considering a modular programming approach? We unpack this programming principle with everything software developers need to know."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"A bowl of spaghetti contrasted with modular code blocks","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABHVBMVEUW1eoV1eoU1eoW1eoV1esR1esI1esP1esU1esS1esN1esA1esV1eoO1eoA1Ooc1eoA1eoP1eoJ1esA1exR2O0z1usF1etI1ObB5u2G1eQW0ucI1epu1eaY2uOo08di094Q1esM1esA0+mI1+H29fLh4ehD0eVS1+pU0t2fzsmvz7SOzbpxz9RA0ucB1esO0+Xb7+z/+vnH4eur4+rI6vEA1OiP0Na9x6K+xpqQzc4A1uwQ1eoE1esf1eXE6emk4OwA0OWy5ObA5u0C1OZtrdyjl9uilNhosd4A1usS1utdzN4AzuQAyt9WzNtGydtbyM1AwtVLquFMreILzOUP1usU1usU1eoO1esb1OkC1esE1usA1+oO1usT1esV1utx4B6YAAAAA3RSTlP+/v6VFoksAAAAg0lEQVQIHWXBoQ6CUABA0Xt5wCTADNr8A4PfQfYvDXa/wWQyGpyBos5ZHMoTkmyeIwMhgkKMgAFw8CbTNmkBAxTqO9PXRH20YIA8K9Rnae+yOIOBYu7ItYmkQOlI1UAKVI5FSIH9bOUPYIC17qY3asXXFggJHE/Lw72ru+6Tu6Fn4N8XDY0gAXlft78AAAAASUVORK5CYII=","aspectRatio":1.780758556891767,"src":"//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=739&h=415&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=1109&h=623&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=1478&h=830&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=1925&h=1081&q=50&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=739&h=415&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=1109&h=623&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=1478&h=830&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/2ZBzMsB6nN3dZynFMfQSiJ/1e98de5f4623c4866183c9c126f7f404/Modular_programming__beyond_the_spaghetti_mess.png?w=1925&h=1081&q=50&fm=webp&fit=scale 1925w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Millie Macdonald","slug":"millie-macdonald"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Modular programming: Definitions, benefits, and predictions"},"metaDescription":{"metaDescription":"Considering a modular programming approach? We unpack this programming principle with everything software developers need to know."}},{"title":"Javascript vs Python: A comparison for new web developers and rich text editors","slug":"python-vs-javascript","featured":false,"lastUpdated":"Dec 15th, 2022","description":{"description":"<p>Find out whether Python or JavaScript is better for web development and rich text editor integration</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Find out whether Python or JavaScript is better for web development and rich text editor integration"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"JavaScript vs Python text displayed over a background with a pattern of diagonal lines","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/5bvY0hnEYIbnWk5guqtJiZ/65aa65f60cb3f14abda14145229fc1ef/img-js-v-python-ver0.jpg?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Javascript vs Python: which is better for web development and rich text editors | TinyMCE"},"metaDescription":{"metaDescription":"We compare Python and JavaScript programming languages to help you decide which one to choose for web development and rich text editor integration."}},{"title":"How effective is your web application testing process? ","slug":"web-application-testing-process","featured":false,"lastUpdated":"Aug 11th, 2021","description":{"description":"<p>In this article, we take a look at normalization. A large part of the automated testing is making sure your app or website looks the same and works the same, across different browsers and operating systems. This process is called normalization.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In this article, we take a look at normalization. A large part of the automated testing is making sure your app or website looks the same and works the same, across different browsers and operating systems. This process is called normalization."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Woman coding in her city apartment","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.4976353126642143,"src":"//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=185&h=124&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=370&h=247&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=739&h=493&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=1109&h=741&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=1478&h=987&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=2217&h=1480&q=50&fit=scale 2217w,\n//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=2850&h=1903&q=50&fit=scale 2850w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=185&h=124&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=370&h=247&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=739&h=493&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=1109&h=741&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=1478&h=987&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=2217&h=1480&q=50&fm=webp&fit=scale 2217w,\n//images.ctfassets.net/s600jj41gsex/4SqRagiKVtUJM9PqLWrf6j/e597ec44d9103b0a42f1ed4877e73f8b/photo-1573495612937-f01934eeaaa7.jpeg?w=2850&h=1903&q=50&fm=webp&fit=scale 2850w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"How effective is your web application testing process? "},"metaDescription":{"metaDescription":"In this article, we take a look at normalization. A large part of the automated testing is making sure your app or website looks the same and works the same, across different browsers and operating systems. This process is called normalization.\n"}},{"title":"A quick guide to browser selection models","slug":"a-quick-guide-to-browser-selection-models","featured":false,"lastUpdated":"Feb 20th, 2017","description":{"description":"<p>One of the complexities of writing a web-based text editor is accounting for differences between browser selection APIs.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"One of the complexities of writing a web-based text editor is accounting for differences between browser selection APIs."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Abstract image of browser tab and content.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAANABQDAREAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAABwUGCP/EACsQAAEDAwMCAwkAAAAAAAAAAAECAxEEBQYABxIhQQgUIhMVIzEzUVJhcf/EABgBAAMBAQAAAAAAAAAAAAAAAAMFBgIE/8QAKBEAAQIEAwgDAAAAAAAAAAAAAQIEAAMREgUhMRMVQVFhocHhBpLi/9oADAMBAAIRAxEAPwDaGHYCLw2uqerDSUDIKXCloEhXSPUT+/lGppu2E4XE0EXbp4G4sCaqPXxTzEyrZure+nk9KsL6oSKCTHafi66N38l9vcB3xIAzbn7/AJigXHH/ACtY6w4UuONKLalpTAUQYmO2lak2qKeUMkrC0hYFAc4XMl2mXedrshxdm9u0DtzRwTcGmfWwZSeSU8hJ6fcafhoNiqTdrxifaYyWmJSX+zCtma2nQ9Dl4gs2a8Jdz20z2mvtbuRc8mZbZda8jW0xCJUmOQJdVBH876yhimWsTAo5RT4383XjLIsy0ly6kGqRQ5cNIVqzaZNVVvPe9Cnmsqj2ExJn8tDUwuUVXdolEYqUJCbNOvqP/9k=","aspectRatio":1.5633587786259542,"src":"//images.ctfassets.net/s600jj41gsex/6zfHmjbMtiVMcClusKRcHB/086ad9a0a8049df10d1fc4dd8d887df8/iStock-609056396_A-quick-guide-to-browser-selection-models-1024x655.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6zfHmjbMtiVMcClusKRcHB/086ad9a0a8049df10d1fc4dd8d887df8/iStock-609056396_A-quick-guide-to-browser-selection-models-1024x655.jpg?w=185&h=118&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6zfHmjbMtiVMcClusKRcHB/086ad9a0a8049df10d1fc4dd8d887df8/iStock-609056396_A-quick-guide-to-browser-selection-models-1024x655.jpg?w=370&h=237&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6zfHmjbMtiVMcClusKRcHB/086ad9a0a8049df10d1fc4dd8d887df8/iStock-609056396_A-quick-guide-to-browser-selection-models-1024x655.jpg?w=739&h=473&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6zfHmjbMtiVMcClusKRcHB/086ad9a0a8049df10d1fc4dd8d887df8/iStock-609056396_A-quick-guide-to-browser-selection-models-1024x655.jpg?w=1024&h=655&q=50&fit=scale 1024w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6zfHmjbMtiVMcClusKRcHB/086ad9a0a8049df10d1fc4dd8d887df8/iStock-609056396_A-quick-guide-to-browser-selection-models-1024x655.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6zfHmjbMtiVMcClusKRcHB/086ad9a0a8049df10d1fc4dd8d887df8/iStock-609056396_A-quick-guide-to-browser-selection-models-1024x655.jpg?w=185&h=118&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6zfHmjbMtiVMcClusKRcHB/086ad9a0a8049df10d1fc4dd8d887df8/iStock-609056396_A-quick-guide-to-browser-selection-models-1024x655.jpg?w=370&h=237&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6zfHmjbMtiVMcClusKRcHB/086ad9a0a8049df10d1fc4dd8d887df8/iStock-609056396_A-quick-guide-to-browser-selection-models-1024x655.jpg?w=739&h=473&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6zfHmjbMtiVMcClusKRcHB/086ad9a0a8049df10d1fc4dd8d887df8/iStock-609056396_A-quick-guide-to-browser-selection-models-1024x655.jpg?w=1024&h=655&q=50&fm=webp&fit=scale 1024w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Team Tiny","slug":"team-tiny"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"Handling undo functions in rich text editors","slug":"undo-function-handling","featured":false,"lastUpdated":"May 16th, 2022","description":{"description":"<p>Undo redo in a rich text editor can be complicated, so this article explains how it works, and how to implement undo in TinyMCE with the Undo Manager API.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Undo redo in a rich text editor can be complicated, so this article explains how it works, and how to implement undo in TinyMCE with the Undo Manager API."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Undo functionality represented by writing and circular arrow symbols","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/IICBKTjU9L8gUFJukA9Uf/962ce44ac46123e01dcb3472d516359b/Image_TInyMCE_Undo_Functionality2.jpg?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ravgeet Dhillon","slug":"ravgeet-dhillon"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Handling undo function in rich text editors | TinyMCE"},"metaDescription":{"metaDescription":"Undo redo function implementation in a rich text editor can be complicated. Learn how to implement undo in TinyMCE with Undo Manager API"}},{"title":"Benefits of gradual strong typing in JavaScript","slug":"benefits-of-gradual-strong-typing-in-javascript","featured":false,"lastUpdated":"Jan 24th, 2019","description":{"description":"<p>Engineer Andy Herron tells the story of the migration to vanilla ES5 at Tiny, and explores the future of TinyMCE with TypeScript. We also share Millie Macdonald's presentation at ForwardJS 2019.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Engineer Andy Herron tells the story of the migration to vanilla ES5 at Tiny, and explores the future of TinyMCE with TypeScript. We also share Millie Macdonald's presentation at ForwardJS 2019."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Developer coding on mac","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAANABQDAREAAhEBAxEB/8QAFgAAAwAAAAAAAAAAAAAAAAAABQYH/8QAJxAAAQQBBAECBwAAAAAAAAAAAQIDBBEFAAYHEiETMRQiMkFCYYH/xAAZAQACAwEAAAAAAAAAAAAAAAAEBQECAwb/xAAhEQACAgIBBAMAAAAAAAAAAAABAgADBBEhEjFBUYGRwf/aAAwDAQACEQMRAD8AXuNZ0XYe68TkDKE1t/vCkMMG1lKx2SqgRdKQB7/kdK8OxjYUI4MdZ1StWG9Sn5znU7ecMaNhZCJgaU70n9WKTfhRAs1760uayngjcHw8FchSzPoD7k03tuHa3MeVZzuS2w1Ifbjoihxbqz2CSVeCEURaz5Gq2WVo3S7AH5M0qw8ll3Rsqe3j9gHinHRpm4bksNyWwk206nsk/wA1FPB3CrORqGOVMCmVhn4kWS9AZWikhshfp+b+TtfUfoUNEXXMB0+IPTUpbY4izxvkVYzacXHugzfgiWEPOkBRQPpvx9ga0ltALE6nRYzkVgep/9k=","aspectRatio":1.510185185185185,"src":"//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=185&h=123&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=370&h=245&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=739&h=489&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=1109&h=734&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=1478&h=979&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=1631&h=1080&q=50&fit=scale 1631w","srcWebp":"//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=185&h=123&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=370&h=245&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=739&h=489&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=1109&h=734&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=1478&h=979&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/U4IZCLq00wIhd4eQe9yd6/d2895fc649d487c792bf2e6864a80277/pexels-photo-574071-1.jpeg?w=1631&h=1080&q=50&fm=webp&fit=scale 1631w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Andrew Herron","slug":"andrew-herron"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"How to select and highlight text in rich text editors","slug":"select-and-highlight-text","featured":false,"lastUpdated":"Jun 20th, 2022","description":{"description":"<p>Dive into the complex cases of text selection and highlighting in text editors, find out how they work, and solutions to common problems.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Dive into the complex cases of text selection and highlighting in text editors, find out how they work, and solutions to common problems."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Highlight and select text show with highlighting and selection elements","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4t4ougkRDOLfpI4ybW1MYA/97d3818532313f3fdaf94f68ac39cf88/img-without-background-icons-tinymce-selection.jpg?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Keanan Koppenhaver","slug":"keanan-koppenhaver"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"How to select and highlight text in rich text editors | TinyMCE"},"metaDescription":{"metaDescription":"In this article we have a deep dive into complex cases of text selection and highlighting in text editors and explain possible solutions."}},{"title":"Five common mistakes to avoid when using Angular","slug":"five-common-mistakes-to-avoid-when-using-angular","featured":false,"lastUpdated":"Jul 1st, 2020","description":{"description":"<p>Front-end frameworks like Angular enable developers to build scalable applications that can run on multiple device types. This article highlights five common mistakes to avoid when using Angular.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Front-end frameworks like Angular enable developers to build scalable applications that can run on multiple device types. This article highlights five common mistakes to avoid when using Angular."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Angular logo and a number 5.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAMAAAAhxq8pAAACwVBMVEUGFDgGEzcFATIAAAAmtbk5/v84+vw4+/04/f8dkZYIEjgMGTwHFTkHFDkFADMCAAotzdE5//84/P4WdXsEABkMFjwIFjoIFjsHFDoGADEMFT0y4eQ29PY06+007e817/Ey4+UPUVsMADEIFDsIFzwIFDwLADEUTmA17/IkrrIFEDILOEsMPU4MP1AMQ1MOQlIIADEIDToLGT4OHEEIFz4JGD4OGUEMAC0bdYA3+fsahosEABsCAAAIACwMADcIDjsPHkMSIUYIGD8JGUAMHUMMGUMAACAblp43/v8x4OIx3+Iw294pvsMZcn4KACoIADcJFT4OHkQQIEURIEUJGUEKHEQAFkIAADQArbMi//8v/v82/f84//839fchm6IGACUPE0ERIEYRIUYLHkYAFUQACUBYWmqloqiwwsh7zNJI4uUu9PY1+vw18fMVX2sPADgRH0cRIUgPH0YGHUgAADWPkZn5+fn//v65t77Py9TAw8tWgYsAdn8jp6006+4hoqYMACUSHkgPH0cLG0QAGUcAACqVlp7////e3uCAgo7AwszP0NlTS2MAABYEAAAdiJI4+fsms7YJABoQG0gMHEYLG0YAFUUAADJ6fIj8/Pylpq2LjpmUl6TGyNI7P1sAAD4EACsUWWs5/f8ipKgGABkMGEYMHEcCGUcAADxgYnPf3uHW1Nfe3uOkoq6vrbghAEIAADEEAAIjmKEXd30GAC0MGkgMHkkJHUoAEUaDl6Df7O3j3+SlwstewskAZXYKPVohjpk17O8v2NoFBS8LAEINHUoNHksPIU0JHEsAXHA94+Zl4OQq8fQo//8z8/U07fAWdHoGACgNGUsOH0wOIE4PIU8LFUoZrbYq/P40//83/P4y5ugZgIYNEkoOH04OIU8RHk8PAEYKADoflqEw3+M29vk39vgy4uUKOUgNAEcOHE7hp+U3AAAAvElEQVQYGQXBsS4DcQAH4N8X/0S4O64dPQSJRbvWaqytW3eGLhIPYOgbeAOJ1TuoUbCbmpgk2hskcr5PEiBJgt9d6gR01U+SuqtRqgQ6+5XEITalSeArDYC2tAE7/WA1eh5jWzMBXjbnAJji8RKekgsQcwDfD00/AxYAuGv6KygDACxv9oZQhgC4vb8eImUAgG6+bJHSWh8B9PUppLTWLXBWZXaAxBuvJzj+Sz6MVrqkVDGG/tOkmb7bVsk/aYcqACyFa5sAAAAASUVORK5CYII=","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/5jvgQr5vdDWm9WguPC86YD/28a889ef6992534b85997557aa5ef664/Image_default_5angular-mistakes.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/5jvgQr5vdDWm9WguPC86YD/28a889ef6992534b85997557aa5ef664/Image_default_5angular-mistakes.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5jvgQr5vdDWm9WguPC86YD/28a889ef6992534b85997557aa5ef664/Image_default_5angular-mistakes.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5jvgQr5vdDWm9WguPC86YD/28a889ef6992534b85997557aa5ef664/Image_default_5angular-mistakes.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5jvgQr5vdDWm9WguPC86YD/28a889ef6992534b85997557aa5ef664/Image_default_5angular-mistakes.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/5jvgQr5vdDWm9WguPC86YD/28a889ef6992534b85997557aa5ef664/Image_default_5angular-mistakes.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/5jvgQr5vdDWm9WguPC86YD/28a889ef6992534b85997557aa5ef664/Image_default_5angular-mistakes.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5jvgQr5vdDWm9WguPC86YD/28a889ef6992534b85997557aa5ef664/Image_default_5angular-mistakes.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5jvgQr5vdDWm9WguPC86YD/28a889ef6992534b85997557aa5ef664/Image_default_5angular-mistakes.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5jvgQr5vdDWm9WguPC86YD/28a889ef6992534b85997557aa5ef664/Image_default_5angular-mistakes.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"An Angular 5 tutorial: step-by-step guide to your first Angular 5 app","slug":"angular-5-tutorial-step-step-guide-first-angular-5-app","featured":false,"lastUpdated":"Feb 21st, 2018","description":{"description":"<p>Get to know Angular 5 by building a simple notes application in this tutorial. Guest author Sergey Moiseev walks through the basics of using the Angular CLI, working with forms, and more.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Get to know Angular 5 by building a simple notes application in this tutorial. Guest author Sergey Moiseev walks through the basics of using the Angular CLI, working with forms, and more."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Build a simple notes app with Angular 5","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAMAAACDi47UAAABVlBMVEUPJW4PJG4OJW4LJG4AJW4AJG4AJW8AI28AIW8GJG4PJG0PLHIOLHMBKnIbKnQxIm0AM3QAMXRfNm6BOmkmIGsPJW8PJ28PK3IPK3MOKHQAI3ZYPHq0Kk6cJlZlFWGsRmHWbnNnGGIAJnINJW4PJnAPKXEQMHUQKnQNKHkAD3RvdpvYlJnJAAC3ADlxKmeINWUxKHAAKXgPKHUPJm8PJXAPKHAPKXAMKHgAFXViWojnyczLM0GwADgAJ3EAJ3IAJ3AMKHYPJ3MNKHgAFnNfVYXw3uDfmZylADQAIW4MJG0QKXcQKHYQJ3MPJnEQL3UQLXQOKnoAJHhRGW7QdX3mr7CWCE8EJW4RKXcPJnIPJ3AOKXMAJ3dVIHC1ADaOJlo2HmoLJW4QKHUOJG4PLnQAKnIqLXVCJGsAIG4IJG4OJG0RJm4eLnEOJm8KJW4AJm8NJG4eLXBBSnwKquyNAAAAl0lEQVQI12NkAAHG/0yMjIwMQPyX5ec/BhawGCcjHHwE8YFYlBEF3AUKivIzoAp+esbCIPdRgJHxHzNCTPYZE8NHhg8M7xm4IeA4F5ckNwMzA7Phn4+afBxg8Mtgs+Ev3pvMDN/eM/B/FWcDg03Gn1W+CwgzQpzkzwUybl7yrH+MGYyMzGDH/7lszco65zzL63cMDNYsLAB9+CYdo6OwpAAAAABJRU5ErkJggg==","aspectRatio":1.9104477611940298,"src":"//images.ctfassets.net/s600jj41gsex/2T9SRFBlKsWAuFrOFm2YQR/1a4843866b0cf3642e355e17a332e03a/toptal-blog-image-1518187252525-03f6db7b1c131066061024c236c7e3ff-1024x536.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2T9SRFBlKsWAuFrOFm2YQR/1a4843866b0cf3642e355e17a332e03a/toptal-blog-image-1518187252525-03f6db7b1c131066061024c236c7e3ff-1024x536.png?w=185&h=97&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2T9SRFBlKsWAuFrOFm2YQR/1a4843866b0cf3642e355e17a332e03a/toptal-blog-image-1518187252525-03f6db7b1c131066061024c236c7e3ff-1024x536.png?w=370&h=194&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2T9SRFBlKsWAuFrOFm2YQR/1a4843866b0cf3642e355e17a332e03a/toptal-blog-image-1518187252525-03f6db7b1c131066061024c236c7e3ff-1024x536.png?w=739&h=387&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2T9SRFBlKsWAuFrOFm2YQR/1a4843866b0cf3642e355e17a332e03a/toptal-blog-image-1518187252525-03f6db7b1c131066061024c236c7e3ff-1024x536.png?w=1024&h=536&q=50&fit=scale 1024w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2T9SRFBlKsWAuFrOFm2YQR/1a4843866b0cf3642e355e17a332e03a/toptal-blog-image-1518187252525-03f6db7b1c131066061024c236c7e3ff-1024x536.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2T9SRFBlKsWAuFrOFm2YQR/1a4843866b0cf3642e355e17a332e03a/toptal-blog-image-1518187252525-03f6db7b1c131066061024c236c7e3ff-1024x536.png?w=185&h=97&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2T9SRFBlKsWAuFrOFm2YQR/1a4843866b0cf3642e355e17a332e03a/toptal-blog-image-1518187252525-03f6db7b1c131066061024c236c7e3ff-1024x536.png?w=370&h=194&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2T9SRFBlKsWAuFrOFm2YQR/1a4843866b0cf3642e355e17a332e03a/toptal-blog-image-1518187252525-03f6db7b1c131066061024c236c7e3ff-1024x536.png?w=739&h=387&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2T9SRFBlKsWAuFrOFm2YQR/1a4843866b0cf3642e355e17a332e03a/toptal-blog-image-1518187252525-03f6db7b1c131066061024c236c7e3ff-1024x536.png?w=1024&h=536&q=50&fm=webp&fit=scale 1024w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Sergey Moiseev","slug":"sergey-moiseev"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"Six common mistakes to avoid when using React","slug":"six-common-mistakes-to-avoid-when-using-react","featured":false,"lastUpdated":"Jun 1st, 2020","description":{"description":"<p>React is an excellent JavaScript library for building user interfaces. However, if you don't use React properly, you could end up creating more problems than you solve. So, here are six common mistakes to avoid when using React.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"React is an excellent JavaScript library for building user interfaces. However, if you don't use React properly, you could end up creating more problems than you solve. So, here are six common mistakes to avoid when using React."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Number 6 with React logo inside.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAMAAAAhxq8pAAACTFBMVEUGFDgGETcFAC8AAAAXhIwv9/ow+/4w+v0x/v8Ue4EEACEGEjcHFTgJFzoKGDsHFTkHDjcEACIKNksq3uIx/f8huLwDABAGADIHEzkIFjoKFzsMGT0LGT0IFjsIEzoEAA0ht70p2t0FAy8DAAAGAC4HCDcHEjkIFTsMGz8OHEAIFz0IFjwICjkEABEXfogv9fkx/P8v9fgcn6QTbHcRYW4IH0AEAA8HADAMFD4MGT8NG0AIFz4IEz0ML0oq3eEx//8v+Psv9Pcw+Psv9Pgq4OQeo6oNJEUKAC0IDTsLGT8PH0QIFj8ICDsIABwhq7Iw/P4w/P8nz9QMPVQJADAPG0MQH0UIEj8KADQUTGAt6u4w/f8u9/olxcoOADcQC0ARHUUMDkAOACofm6Qs7vAUp60AbnwAbn8XqLEs7vEZfokPADIRGEURC0IQADEnyM4u9fgDgosnAD9eVHReU3MoAEYQhZYkvsMOB0ESAEIOAEAp3OAm19oAADhxcIiztLuzs7lxbXwAADUo2N0p2d0LADcKADwOAD4MFkUr4eUiy88VAEONjZrBwsaNjJUUACQjzNEq4OMJET8KAD0MAEAp2d4p4uYAF1RWS2WdnaRWS2AADEEq4uco2dwIADUMAEEPDUYLADAju8Iw+/0ftr8NBUglACglACkIAD4etbwiu78IACcMCUYNF0oOADwYdYUo3OAbuL8n2+Av+/4Uc3wLADkOHU0ODkkjtr4htbkIAC4OD0oOHk0OIE8OGU0MAD4RAEgnx84kxsoIADEOGk6yTaD4AAAA9UlEQVQYGS3BMU4CQRiG4e9dx4UM889CYWEMFZ3G0nADA3QGb2BjYqW3MV7BWJgoQT0AHMDYWhILo4sJkijrIjwPklj7dZSmimQSS9MiMWDmARfFvMpkQTRKEfhyxlL9RU3WPpuuwWQbRlLGWh1Xp8HDAilDr9m4S8nVAKGuR8Xude+9CWwcpOngm35M07RSbd3uv+1UKkkIYY/Olv177gwKm4UkhDDWMKz0h5K1oosgKQICpPEROCuS9igEQECYtgMkIZqu8nMzizGe5YXMLDGzjwu6J7Wa975HzL2HO2b+8p7i+EYhp+idUnqidIhWikd+Nud/Q2E7t+RGtD4AAAAASUVORK5CYII=","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/1KcZaJy3VX0YikyVL3rN6e/27e982f3f25644551ec376bf54b0950d/Image_default_ReactMistakes.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1KcZaJy3VX0YikyVL3rN6e/27e982f3f25644551ec376bf54b0950d/Image_default_ReactMistakes.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1KcZaJy3VX0YikyVL3rN6e/27e982f3f25644551ec376bf54b0950d/Image_default_ReactMistakes.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1KcZaJy3VX0YikyVL3rN6e/27e982f3f25644551ec376bf54b0950d/Image_default_ReactMistakes.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1KcZaJy3VX0YikyVL3rN6e/27e982f3f25644551ec376bf54b0950d/Image_default_ReactMistakes.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1KcZaJy3VX0YikyVL3rN6e/27e982f3f25644551ec376bf54b0950d/Image_default_ReactMistakes.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1KcZaJy3VX0YikyVL3rN6e/27e982f3f25644551ec376bf54b0950d/Image_default_ReactMistakes.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1KcZaJy3VX0YikyVL3rN6e/27e982f3f25644551ec376bf54b0950d/Image_default_ReactMistakes.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1KcZaJy3VX0YikyVL3rN6e/27e982f3f25644551ec376bf54b0950d/Image_default_ReactMistakes.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1KcZaJy3VX0YikyVL3rN6e/27e982f3f25644551ec376bf54b0950d/Image_default_ReactMistakes.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Six common mistakes to avoid when using React"},"metaDescription":null},{"title":"A guide to npm: The node.js package manager","slug":"a-guide-to-npm-the-node-js-package-manager","featured":false,"lastUpdated":"Feb 22nd, 2023","description":{"description":"<p>Toptal Developer Martin Gouws walks through the in's and out's of working with npm. Read on to find out how to get the most out of npm.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toptal Developer Martin Gouws walks through the in's and out's of working with npm. Read on to find out how to get the most out of npm."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"npm logo appearing on a grid background.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAAAolBMVEUXIk8WIk8TIU8OIE8JH04IHk4RIU8AGk0AAEMAAEAAAD4AAD8AAEQSIU8AHU5HIEu6kJW+j5S/l5u8i5DDn6O5i5BII00VIU8AG01dMVHtysryyMf95uXyzcz10dDmtbRdNVMAG04CH08xG0t/S1+YWWa2iI6IUGGCSV1/Q1gxHkwUIU8AHk4ADUsAAEgAAEIAB0oAE0wAH04PIE8QIE8VIk9NEVuMAAAAVUlEQVQI12NgwAIYkRn/UQQZQYDhPwiAuCxgQVaw6H+m32yf4YKMHIwQwPWD8T9MuzgjHHx7CRNkVISJ/bj/H6b9PyfESBCB5DJxJmNmE14mUwYSAQAJkhP45oV4xAAAAABJRU5ErkJggg==","aspectRatio":1.7777777777777777,"src":"//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=1478&h=831&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=1920&h=1080&q=50&fit=scale 1920w","srcWebp":"//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=1478&h=831&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/73Ay6sAygYK8Yzyf2i5z0j/e8ec8c9f403a22f0388820da22222c81/npm_guide.png?w=1920&h=1080&q=50&fm=webp&fit=scale 1920w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Martin Gouws","slug":"martin-gouws"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"A guide to npm: How to install & configure npm for your project | TinyMCE"},"metaDescription":{"metaDescription":"npm is an essential tool for modern web development. It allows us to install and manage packages from npmjs.org. In this guide, we'll show you how to install and configure it for your project. A guide to npm: How to install & configure npm for your project"}},{"title":"4 essential skills developers can learn from doing QA","slug":"software-developer-skills-learned-from-qa","featured":false,"lastUpdated":"Aug 26th, 2020","description":{"description":"<p>Whether you&rsquo;re looking to improve your software developer skills, starting your first software developer job, or thinking about switching from QA to development, here are 4 essential developer skills you can learn from doing QA.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Whether you’re looking to improve your software developer skills, starting your first software developer job, or thinking about switching from QA to development, here are 4 essential developer skills you can learn from doing QA."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Photograph of chess pieces on a chess board. Image by Wooden Earth Ltd (https://www.woodenearth.com/)","artistName":"Image by Wooden Earth Ltd","image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAD2ElEQVQYGQXBWY8aBQDA8T/DDAMMsMuyLLuw3Ysea2rr1o2N9Ypp1USfmpr65GvjB/DF+Cn8DNr6YqI1JvrSRI090jQ9d7vdwlLOcg4DDDAHMzD+fr5+v+/alkG9XuW/23/z6MkzVjOb7J6/wM7ZsyQWFhAEAdMY02o1qFSKRGMLZNIZXNchf5Rnfj5BSJYpvTxAtEzDr/W71BtVOp0G81GFSEhGkXxMDB1dAFGS8PCQZYlYNEo4JCP6fXjTGWqjjN7rsbS0TKFYQayUC+TzLynk9lBrNWQ5QlyyiL2+R/3uTwQkP5HYHKOTlxj5AmidJqLoZ9hfwjJH5PYeoKoG6bUtqpUKYnHvLr3qEVKvTdg1MMZDpokJE72Mc3SXaAxCCrxo98hPFygWDogoQdaXE/S6HTwvwLISwmzmsDUVcSeb5lHxMdPWAevxNK2gQ0tzyCgicVFkaro0/ZB6/xLiJMCN67/y1okM6ZlNVoG13Q8YeTKWabLSVhHHh3/SeHgTo22xdRra4TBda8Rjv8ylZJbI7CUPfW/SfLTPi1ybw1qDw1qD/naGby7vEvNGDFw/A2PG1B9GNLsVMnGZlm7hOUOqTZueNcFLJRDWFAI+cHWL2v4tfvt9HwCAUFhgNLbptlU6MyipFmIwjMDKRWZLH1LqgBt8g1R4g0DgBMnoJsLMh2vDavojrly9xvffXgMAICpJjI0pPd1hPhIhu5ZiagwQnz58itTe41gG1o8leO/iFYgkkLGp3/yBvgo7n3xMbeJH1YYAALR0k0BQZvvtHWaSwsj1o6tNxJVFCduQEQ2RmRyk8uwBieQiyuoWw/GEYRecf35B8/xQfA7A7kqQTWWEo1UZNYpoA5tGd0AhX0LczGYpjzX65Rxur0mlVIXjccyDvwjpt0lmIR75g5j/M9KZDWBAcm7KxlIA7C7aqz3MmYCtjRDtPsLyqXdoa2NKDXAmFhc/3eL0uTM4yklKFahWoV6LsLyWYmlRAkwauktnYNPqqOgjm9VEkOOLcDzuIdQKBbTmIZ4Cxee3wduA0Cla1fsISXBDoFkSe81j/Jv3AUPKA4/eZA6HCEf795CTG7x7+Ws+v/ol4v2fv2NqAT7o1UFIZEltn+GLr84zdVLMvDDdlo8f72jcuPMagP54Qk4XUEQFp9bFim5jJy/g+FSEV5NzlPsxGj3oVaBRazMyfKglgfqTIt18g3lxijJ6AIMnAIBFrlxmoDcxmlDLHzCxDHTTRaibLkpygaEfHpvwrG5QH0u0pAvcut5lqENwcR3DFwcAACAgy9izIMMZjB0Pz7WZEwb8D0cf9Q/ExMdbAAAAAElFTkSuQmCC","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/7zZ4oY9AQgCkpPpdUfH8Hl/999b3e7a97cb7a6e4cfa0dd5069fe102/Image_default_4-dev-skills.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/7zZ4oY9AQgCkpPpdUfH8Hl/999b3e7a97cb7a6e4cfa0dd5069fe102/Image_default_4-dev-skills.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7zZ4oY9AQgCkpPpdUfH8Hl/999b3e7a97cb7a6e4cfa0dd5069fe102/Image_default_4-dev-skills.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7zZ4oY9AQgCkpPpdUfH8Hl/999b3e7a97cb7a6e4cfa0dd5069fe102/Image_default_4-dev-skills.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7zZ4oY9AQgCkpPpdUfH8Hl/999b3e7a97cb7a6e4cfa0dd5069fe102/Image_default_4-dev-skills.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/7zZ4oY9AQgCkpPpdUfH8Hl/999b3e7a97cb7a6e4cfa0dd5069fe102/Image_default_4-dev-skills.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/7zZ4oY9AQgCkpPpdUfH8Hl/999b3e7a97cb7a6e4cfa0dd5069fe102/Image_default_4-dev-skills.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7zZ4oY9AQgCkpPpdUfH8Hl/999b3e7a97cb7a6e4cfa0dd5069fe102/Image_default_4-dev-skills.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7zZ4oY9AQgCkpPpdUfH8Hl/999b3e7a97cb7a6e4cfa0dd5069fe102/Image_default_4-dev-skills.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7zZ4oY9AQgCkpPpdUfH8Hl/999b3e7a97cb7a6e4cfa0dd5069fe102/Image_default_4-dev-skills.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Millie Macdonald","slug":"millie-macdonald"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"4 essential skills developers can learn from doing QA"},"metaDescription":{"metaDescription":"Whether you’re looking to improve your software developer skills, starting your first software developer job, or thinking about switching from QA to development, here are 4 essential developer skills you can learn from doing QA, covering problem solving, creative analysis, product understanding, and empathy."}},{"title":"The why and how behind Tiny’s RTC end-to-end encryption","slug":"real-time-collaboration-end-to-end-encryption","featured":false,"lastUpdated":"Jan 13th, 2021","description":{"description":"<p>Find out more about how Tiny implements end-to-end encryption for real-time collaboration in TinyMCE, including a discussion of operational transformation methods. Secure real-time collaboration for document sharing and other team-based productivity and communication tools.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Find out more about how Tiny implements end-to-end encryption for real-time collaboration in TinyMCE, including a discussion of operational transformation methods. Secure real-time collaboration for document sharing and other team-based productivity and communication tools."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Text: \"Real-time Collaboration & End-to-end Encryption\"","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAADK0lEQVQYGXXByU8kVRwH8O/v915V9UJvdMMwS2CGAWxkGGVcJoJxi0ui0ajReDbRxBivatTE+BfMf+BJb8bEgydvJqKIigQVxFkgwNDddNPd1VR1dS3vPR3P+vmQXbmK/6MVIh/eFu6QVJgjKwVm8y8AkogN/osxpGKjlF76OClNcn1D//ylLFZY2qA7AAjKjMcaylPKkNJQkVEaKjbqH72WevGavv/10VMzg6knq2OVxtpXqp82KSmYiFhoeQ4a995dqe+6CL3SSH7QiiAJ/i1gAc+9O99aqV7/qFS859zkwtzwnqao1QjIFkws0dMPPHT6g/feqNcb7Y5bLORc96RUHAoHJwqZTWG2a/tba8uvLm498sS0ePj93Rubb7/1SaItIUhAjIsUVUopgARzp+MeHtaEXegNPWOVLtd98TXNdy+9OX929pvd7Lc7mfUbJ/3by4EXsiUFnPPS4amJyg+rvydJ3G67fa/zh39lNfPoei9HIr1YtkqpIVc5ByEeP8PfJRMLhaC7u9LXjsQAMxPl6l0X5+erlXJJa51OicCMxVbND5LhHMVxrA0nijZbpaem3JutUpvyI+V0qwaJIbHyU+PUyGrzuNftBZXhbNxv9qffSaYWjhRGWBUkWaS7CbXhrB+n1gbyMhQRAyTRN1eXxl55+enbh3VLWtpo6EHfKTfSYiI/SBSGM+EXf6Y3IgcqOAgIpBgaLCBYwhbNdrCzsx9GUTabbTaPU7ZJjXqI/SRwB4lwE90OGN3DkdqPlgp9uwjZA9tgkhAUK+P5wa8bNw/qbi5rd47280sPji/ktpvZo4QHGtcNUC40h8+DCADtfUZEIJZQPH66eN+VS7PViwaIwrCQz9qZbGLvRkoQib22/eFfFRBADAb7HTvYUcYBJ0Rnnk1LWpwb9fyQmRxbzs6cdd2uryu50WoUx/3Erk9fyNR6IkxgtHO0HnV++2W7N1Cg/IUXYm0CX0EbKANl4ClAQ+rJKSfjCHHi47XHci89zyyM5/Wufbq/fNhPW5ZkSUwOsxgibQwAbWBKxhhoY251NCKFDuPzVafuEbOOkuj7eoqELQUL+htGE53NcW8wrwAAAABJRU5ErkJggg==","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/6enckfqO3a0fP0KlTPeNS5/d9ad146a33a4796f527b554f6b77e7a5/BlogImage_default_RTC-Encryption.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6enckfqO3a0fP0KlTPeNS5/d9ad146a33a4796f527b554f6b77e7a5/BlogImage_default_RTC-Encryption.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6enckfqO3a0fP0KlTPeNS5/d9ad146a33a4796f527b554f6b77e7a5/BlogImage_default_RTC-Encryption.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6enckfqO3a0fP0KlTPeNS5/d9ad146a33a4796f527b554f6b77e7a5/BlogImage_default_RTC-Encryption.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6enckfqO3a0fP0KlTPeNS5/d9ad146a33a4796f527b554f6b77e7a5/BlogImage_default_RTC-Encryption.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6enckfqO3a0fP0KlTPeNS5/d9ad146a33a4796f527b554f6b77e7a5/BlogImage_default_RTC-Encryption.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6enckfqO3a0fP0KlTPeNS5/d9ad146a33a4796f527b554f6b77e7a5/BlogImage_default_RTC-Encryption.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6enckfqO3a0fP0KlTPeNS5/d9ad146a33a4796f527b554f6b77e7a5/BlogImage_default_RTC-Encryption.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6enckfqO3a0fP0KlTPeNS5/d9ad146a33a4796f527b554f6b77e7a5/BlogImage_default_RTC-Encryption.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6enckfqO3a0fP0KlTPeNS5/d9ad146a33a4796f527b554f6b77e7a5/BlogImage_default_RTC-Encryption.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Tim Dettrick","slug":"tim-dettrick"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"TinyMCE’s real-time collaboration solution is end-to-end encrypted"},"metaDescription":{"metaDescription":"Find out why (and how) Tiny implements end-to-end encryption for real-time collaboration in TinyMCE, including a discussion of operational transformation methods. Secure real-time collaboration for document sharing and other team-based productivity and communication tools.\n"}},{"title":"Collaboration needs a clean Slate","slug":"real-time-collaborative-editing-slate-js","featured":false,"lastUpdated":"Feb 20th, 2020","description":{"description":"<p>Real-time collaboration in a rich text editing environment is a hard problem. In this article, we discuss why we have settled on Slate as the library that we will use to build a high-quality collaborative editing solution.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Real-time collaboration in a rich text editing environment is a hard problem. In this article, we discuss why we have settled on Slate as the library that we will use to build a high-quality collaborative editing solution."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Abstract browser window with six online avatars overlaid and the word Slate appearing above.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAACyUlEQVQYGQXBS2tcZRjA8f/zXuacmZOZyTSNl1xIQosIRqxdSAVBt92JK/0arvRDuPUTuHXhQooLbRFBEKEootRALDapaSaZZJI5M3Mu7/P4+8n6N2MzlolkAGa0CiCCFwAA8ELmaY1aATqO6AhWW6UkQ8AAuNn3GKp6fm0ieBHMvKNNNIZAFKJBIlQVyXAAqDJa9bu3m9mzK9fxOb1Q5P2RXR7VoRtfnKqpZUJwkMAI2pgAAKBUpdZL131lxWZXG7tzcbUlzXd97MwWx1zbIDhIBgCBFgwAEMMaqvG8PR2r73ZWtLmcSn+oSUN7WU0HsRCSAQCCFF+eGmgCBVBF26TgnMuw1mgMgegsi94JYDgRj0GwRkKq+mszyRwKDgzACYgoghlmTgAAEbTW8qyoXB60kW6vvLG/FPH0cn97BxEARKtG5wvfLyR4MDAAES3n9Vcn81k3iEpz2V7/C95DK8dHqCFCNeXpnzHPmlbZ3SdkYgaYCHXVTFSCBDGpr/zJr0N12WBbBjtl+bw3ObD820dbnw7WPvnw+LMvJt+v2v7boikprQp1CFbKmjhLzrfzFZ5Hp1lvHs5/C73a5zF7oytii78OwqvD4p2u60bLosZIJ+abuR9EXRJS2ayOjkbvrhw/OJz+vVdOttqRC5H8/gfDj4YuSri1Xf9Y179gzlmyl97PeqMr8/2LPzrevff5zXvD4s2NRTWYnfVSccOJd1DPYzLXip8euOlPkxX3tL3ybth7+X6n/u5hXMs6r22GGOP5Y67HneujiKYYKfZ8WrB4puMfaqRpW1mtn2x8XLx4cHAxv7v8+QlCc/hfdbYVvJPlSVOeN9KNXl3/dT/YPLRsdDofNWfJBIXw1h3Z7mT32uZRNv7a8sf/pPWN8i4hqUOcBOedYK49mdQnv1t/R5erqqLgRMYHxezSVRcdwartO9X6HvWcfPA/nUt0AwiPspUAAAAASUVORK5CYII=","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/5joAuBjNUxkzxpmEuJxy6J/ff51e43bd540899ec12a9b93e125ecd6/Image_default_slate.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/5joAuBjNUxkzxpmEuJxy6J/ff51e43bd540899ec12a9b93e125ecd6/Image_default_slate.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5joAuBjNUxkzxpmEuJxy6J/ff51e43bd540899ec12a9b93e125ecd6/Image_default_slate.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5joAuBjNUxkzxpmEuJxy6J/ff51e43bd540899ec12a9b93e125ecd6/Image_default_slate.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5joAuBjNUxkzxpmEuJxy6J/ff51e43bd540899ec12a9b93e125ecd6/Image_default_slate.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/5joAuBjNUxkzxpmEuJxy6J/ff51e43bd540899ec12a9b93e125ecd6/Image_default_slate.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/5joAuBjNUxkzxpmEuJxy6J/ff51e43bd540899ec12a9b93e125ecd6/Image_default_slate.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5joAuBjNUxkzxpmEuJxy6J/ff51e43bd540899ec12a9b93e125ecd6/Image_default_slate.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5joAuBjNUxkzxpmEuJxy6J/ff51e43bd540899ec12a9b93e125ecd6/Image_default_slate.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5joAuBjNUxkzxpmEuJxy6J/ff51e43bd540899ec12a9b93e125ecd6/Image_default_slate.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Andrew Herron","slug":"andrew-herron"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Collaborative editing: real-time collaboration with Slate.js"},"metaDescription":{"metaDescription":"Real-time collaboration in a rich text editing environment is a hard problem. In this article, we discuss why we have settled on Slate as the library that we will use to build a high-quality collaborative editing solution."}},{"title":"Functional Programming and Category Theory at Tiny","slug":"category-theory-functional-programming","featured":false,"lastUpdated":"Jun 7th, 2021","description":{"description":"<p>Because Category Theory is abstract, it can be difficult to learn. At Tiny, we use Functional Programming, which is based on Category Theory. We have some recommendations for learning Category Theory: a book, a lecture series, and a talk recording.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Because Category Theory is abstract, it can be difficult to learn. At Tiny, we use Functional Programming, which is based on Category Theory. We have some recommendations for learning Category Theory: a book, a lecture series, and a talk recording."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Woman teaching and drawing diagrams on a whiteboard ","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.526542324246772,"src":"//images.ctfassets.net/s600jj41gsex/5thrJiM0BoBnbhtsZcVduF/c8c4bd7c8873370b135c1070f9e5a8ae/Category_theory.jpeg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/5thrJiM0BoBnbhtsZcVduF/c8c4bd7c8873370b135c1070f9e5a8ae/Category_theory.jpeg?w=185&h=121&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5thrJiM0BoBnbhtsZcVduF/c8c4bd7c8873370b135c1070f9e5a8ae/Category_theory.jpeg?w=370&h=242&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5thrJiM0BoBnbhtsZcVduF/c8c4bd7c8873370b135c1070f9e5a8ae/Category_theory.jpeg?w=739&h=484&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5thrJiM0BoBnbhtsZcVduF/c8c4bd7c8873370b135c1070f9e5a8ae/Category_theory.jpeg?w=1064&h=697&q=50&fit=scale 1064w","srcWebp":"//images.ctfassets.net/s600jj41gsex/5thrJiM0BoBnbhtsZcVduF/c8c4bd7c8873370b135c1070f9e5a8ae/Category_theory.jpeg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/5thrJiM0BoBnbhtsZcVduF/c8c4bd7c8873370b135c1070f9e5a8ae/Category_theory.jpeg?w=185&h=121&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5thrJiM0BoBnbhtsZcVduF/c8c4bd7c8873370b135c1070f9e5a8ae/Category_theory.jpeg?w=370&h=242&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5thrJiM0BoBnbhtsZcVduF/c8c4bd7c8873370b135c1070f9e5a8ae/Category_theory.jpeg?w=739&h=484&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5thrJiM0BoBnbhtsZcVduF/c8c4bd7c8873370b135c1070f9e5a8ae/Category_theory.jpeg?w=1064&h=697&q=50&fm=webp&fit=scale 1064w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Team Tiny","slug":"team-tiny"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Functional Programming and Category Theory at Tiny"},"metaDescription":{"metaDescription":"Because Category Theory is abstract, it can be difficult to learn. At Tiny, we use Functional Programming, which is based on Category Theory. We have some recommendations for learning Category Theory: a book, a lecture series, and a talk recording."}},{"title":"New TinyMCE integration: How to get started with Blazor","slug":"how-to-get-started-with-blazor","featured":false,"lastUpdated":"Mar 24th, 2021","description":{"description":"<p>Blazor is now supported by TinyMCE and this article we go through the why's and how's about getting started with Blazor.&nbsp;</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Blazor is now supported by TinyMCE and this article we go through the why's and how's about getting started with Blazor. "}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Tessellating wires ","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.3332195288494366,"src":"//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=185&h=139&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=370&h=278&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=739&h=554&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=1109&h=832&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=1478&h=1109&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=2217&h=1663&q=50&fit=scale 2217w,\n//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=3905&h=2929&q=50&fit=scale 3905w","srcWebp":"//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=185&h=139&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=370&h=278&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=739&h=554&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=1109&h=832&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=1478&h=1109&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=2217&h=1663&q=50&fm=webp&fit=scale 2217w,\n//images.ctfassets.net/s600jj41gsex/5kHg6dSDavyVM59QHWQNXI/1f72da1dd6564c63b4e6f31efac4902e/jj-ying-7JX0-bfiuxQ-unsplash.jpg?w=3905&h=2929&q=50&fm=webp&fit=scale 3905w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Elise Bentley","slug":"elise-bentley"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"How to integrate TinyMCE with Blazor"},"metaDescription":{"metaDescription":"Blazor is now supported by TinyMCE. Learn how to get TinyMCE started with Blazor today. "}},{"title":"It’s hard to find a good chameleon","slug":"reduce-software-development-costs","featured":false,"lastUpdated":"Apr 27th, 2021","description":{"description":"<p>When you are building products that depend on other third party software components, think about choosing chameleon components that help you reduce software development costs.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"When you are building products that depend on other third party software components, think about choosing chameleon components that help you reduce software development costs."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Image of someone holding a green chameleon in their hand. ","artistName":"Amy Humphries","image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.3333333333333333,"src":"//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=185&h=139&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=370&h=278&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=739&h=554&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=1109&h=832&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=1478&h=1109&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=2217&h=1663&q=50&fit=scale 2217w,\n//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=3264&h=2448&q=50&fit=scale 3264w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=185&h=139&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=370&h=278&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=739&h=554&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=1109&h=832&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=1478&h=1109&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=2217&h=1663&q=50&fm=webp&fit=scale 2217w,\n//images.ctfassets.net/s600jj41gsex/6aXhFgcTFlwOguPJuI6s4X/159fc74f55c7adabbae2f4ecfd344638/amy-humphries-Qb_eemSJg0k-unsplash.jpg?w=3264&h=2448&q=50&fm=webp&fit=scale 3264w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Reduce software development costs with chameleon components"},"metaDescription":{"metaDescription":"When you are building products that depend on other third party software components, think about choosing chameleon components that help you reduce software development costs."}},{"title":"Top 10 JavaScript how-tos","slug":"javascript-how-to-top-ten","featured":false,"lastUpdated":"May 20th, 2020","description":{"description":"<p>What are the top ten JavaScript how-tos? Check out this list of popular JavaScript FAQs with answers.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"What are the top ten JavaScript how-tos? Check out this list of popular JavaScript FAQs with answers."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Text \"How-tos\" with JavaScript logo nestled in the top of the 'H'.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAMAAAAhxq8pAAAC91BMVEUGFDgFFDcIFzoNGz4OHD8MGTwHFTgJFzoHFDgLGTwHFTkGFTkEFDkCEzkBEjkEFTsLGz8OHUAMGj4HFToIFjoKGDwKGTwIFjsHFjsBEzoAADUAADIAADsAADoAATsEFz4EFDsFFTsGFjsNG0ANGz8IFz0EFTw+Q1hlZWlxZihpZ2JMUWUAADAAADYABjgACzkADjoADToAETsGGD8IGT8OHEEIFz4BFD0AACSRlJ7a1cHZwADUzKqqrLQAAAAkK0cAAC4AACwAAC8AFD4AETwKGkEQH0UIGEAAEz4AACWUlp/p6OPLxKfg39mwsbehoqjV1de+vsKwsbVzdX+7vL+Eho+mp6xpa3cAADgOH0UQIEUIGUEEGEIAAC2WmKDd3uGVl6LQ0dXFxsnLzM9OUmPT09XS0tXJys3h4ePPz9JESV0ACUAPIEYRIUcNHUUMH0cAADSZm6LCwsanqK66u7/ExciwsLXW1tiDhY7q6uump63d3t+7u8AAGUUQIUgRIUgSIkoQIUoAAUBUWGlucH0AACmZmqHBwsZpbHlGS2F+gIoZJEiGiJFrbnwGHUgRIUkNHUYTJEwOH0kEGUUAAD8AE0O/wMTu7/B/gYy5ur7Y2NvDxMeRk5vV1tmlp64AD0UBG0gMHUcLG0YPIEoMHUgKHEgEGUcAAEGfoKeXmKDHyMxdYXPX19orM1K2t7zQ0dS6u8AkL1IADkQJHEcOH0oMHkkIHEkAEkZCR19HTGJ0doTf4OKHiZTGx8vMzdGNj5nCw8jZ2dxFSmEABkMKHUkMHkoPIUwPIEwNH0sMHksHHEoAD0YAAEMAHExzdoNPU2k4P1x+gY5LUWktN1l7fotXW28CGUkOIE0PIU4NH00MH0wNIE0OIk8AF0sAAEIABUgAEUsAAEYADEsAEksAAEQBGksLH0wOIU4OIE4PIk8PIlATJVIPIU8MIE4QI1ETJVMSJVMRJFIMIE8KHk4LH04NIE4PIVAOIVASJFIWJ1UWKFUUJlQPIlFxTLwjAAAAp0lEQVQYGQXBPU4CUQAGwG+WFxNXTFj84QTaURoLQ02hl/MMXoF4AkJhLO04gInakFUwIfKckSQJ2Cc54jDQBsAuSVp/xQQA2yR1qHfl+xSA2rAZlc4Y4Ovi83J9rWMOAIByDgAEyhm83gBY3VHGMD8MfEzA+gGPWM5qAwCewNsUnu/BxkIAXm4BVgCAXdvX0gkAlrMR8U6AAH2NrfBz/HtS09gnqck/cvYp3w9fWEcAAAAASUVORK5CYII=","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/7H0fdAxUhe8rvniGHk2j7h/5d47ce6a732e1143c5ea2bb35d138ce9/Image_default_JShow-tos.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/7H0fdAxUhe8rvniGHk2j7h/5d47ce6a732e1143c5ea2bb35d138ce9/Image_default_JShow-tos.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7H0fdAxUhe8rvniGHk2j7h/5d47ce6a732e1143c5ea2bb35d138ce9/Image_default_JShow-tos.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7H0fdAxUhe8rvniGHk2j7h/5d47ce6a732e1143c5ea2bb35d138ce9/Image_default_JShow-tos.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7H0fdAxUhe8rvniGHk2j7h/5d47ce6a732e1143c5ea2bb35d138ce9/Image_default_JShow-tos.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/7H0fdAxUhe8rvniGHk2j7h/5d47ce6a732e1143c5ea2bb35d138ce9/Image_default_JShow-tos.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/7H0fdAxUhe8rvniGHk2j7h/5d47ce6a732e1143c5ea2bb35d138ce9/Image_default_JShow-tos.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/7H0fdAxUhe8rvniGHk2j7h/5d47ce6a732e1143c5ea2bb35d138ce9/Image_default_JShow-tos.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/7H0fdAxUhe8rvniGHk2j7h/5d47ce6a732e1143c5ea2bb35d138ce9/Image_default_JShow-tos.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/7H0fdAxUhe8rvniGHk2j7h/5d47ce6a732e1143c5ea2bb35d138ce9/Image_default_JShow-tos.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Top 10 JavaScript how-tos | JavaScript FAQ"},"metaDescription":{"metaDescription":"What are the top ten JavaScript how-tos? Check out this list of popular JavaScript FAQs with answers."}},{"title":"How to integrate React with TinyMCE","slug":"how-to-integrate-react-with-tinymce","featured":false,"lastUpdated":"Mar 26th, 2017","description":{"description":"<p>In this tutorial, I'll walk you through how to integrate React.js with TinyMCE. Without further ado, let's get started!</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In this tutorial, I'll walk you through how to integrate React.js with TinyMCE. Without further ado, let's get started!"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"React and Tiny MCE","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAALABQDAREAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAECBgj/xAAiEAABAwUAAQUAAAAAAAAAAAABAgMRAAQFBiFBBxIyYXH/xAAYAQACAwAAAAAAAAAAAAAAAAAAAQMEBv/EAB8RAAIBBAIDAAAAAAAAAAAAAAACAQMEETESISJxof/aAAwDAQACEQMRAD8Aw/6ZaVit1u8i1lMscYLZpK20pIBWST5UIjkc7WxVYncmavrmpbKs00zkNR1PA5i02Bd9mFpXjbdVylxhshCmxz3QRJM+PsVPRopVV2Z8cYz7LvNuvHfwpnOwZHgkRNVCUittLnySFfopjiZjQykGOUhDoA//2Q==","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/jC7yKmwpLMQQnMbORx6xn/fcc229b86e617c1e7becf3f74276462e/img-react-improvements-01.jpg?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Team Tiny","slug":"team-tiny"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":{"metaDescription":"In this tutorial, I’ll walk you through how to integrate React.js with TinyMCE. Without further ado, let’s get started!"}},{"title":"A multi-language spell checker for our rich text editor","slug":"a-multi-language-spell-checker-for-our-rich-text-editor","featured":false,"lastUpdated":"Mar 29th, 2020","description":{"description":"<p>More situations are arising where more than one language needs to be included in a single piece of content. With the release of TinyMCE 5.2, you can check up to thirteen languages simultaneously.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"More situations are arising where more than one language needs to be included in a single piece of content. With the release of TinyMCE 5.2, you can check up to thirteen languages simultaneously."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Text 'Hello' in foreground with greetings in several languages in the background.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAC/klEQVQYGQ3B3WpcVRQA4LXW3ud/pmcmk8RJSLQasAmCRUEpeCFSQb3wXm99Fh/BB/DCJ+gjFBQUKvXvooopSZpkYnPm5/zvffZey34fHj+6nqWqq7swDnNtUWsQOV0TIyHRUe60guK/xiT5fmqsB0IAwPOSKNB61XA96F1S1bo3JJ4dEhW9cjqIlPzbuizEtiXrvdm4gIRZlKKNIRcS6h9eOgEQ2dNw6+QgotZxSHgxACDCKyIRAQLuafECKw+xwm3Nzy3pj+84IkBEYO8GH4WaCJzjExWwCHjXOXXRKS9wPIEQBmM8hRHa7mgU6X65UVoLi1IoItWqRkIACKIA/KAIoWNnMwEo2BO7LNHYGBFIEkb47gZE4BWk8fnT2WFZP7kYnm2EEBHIepUHtJVxZXnViRL36ZfD/K5lLyx6DpKG2rI4IClLnZp02iffnHBrhuuX5sez7OG7yQf36se/2t+X3U/XR1+4OJWrTimF+sGcFXaeFYAsMrdY1hTE2YP7Mgy+bvRXn7t1RVk0fvghfhY0vz3bWTfTrLubkzVeX934zridXLx1L0odn4yGq035+GfetOGbe2yNObtU45F4DmaT4fbmsphtclJsyx70L5sEEOYFL6zkQazbqr1Y2e//wZDIPFF7itc+nChXeLcb6EVz9vVHsBmBeEBA+LZ4bwvf2HFXBeqhrpdVI1Ec4mREy9JddpSHeP/AvVgMopNJ1J/3W/Pt9LZ0Zx3pdyITYWjKahaShLQ922Hv0oQGjwPC6+OocaDGcBibOBI/hFMRonqo5O000X+V4VaPwFlECtjHGhh0qsUy9owLDyOFp2fWWlYk1qtIYztQx7TwSr+VBbsj/ruIrg3tRvB8AEAEBwDy/hT2kZ8W+EeXACKAgEAewL2p1AZDw/r4Na98c2ceOgmmY+6MIJEiOF3gOKAUq0/2EyRCkD8vFREeTnGkm4OtaFm0tCwDpEBLP9JVvekUW+yWtizJdos1rSsdU59gnSd9wI6cW9WodFivyr71/wOTlcVH5OBhgwAAAABJRU5ErkJggg==","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/1AY9IY1ZyN0JlYtxBktwsW/fbca674d8cbfdb45cc52d213eb11f1de/Image_default_multilingual.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1AY9IY1ZyN0JlYtxBktwsW/fbca674d8cbfdb45cc52d213eb11f1de/Image_default_multilingual.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1AY9IY1ZyN0JlYtxBktwsW/fbca674d8cbfdb45cc52d213eb11f1de/Image_default_multilingual.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1AY9IY1ZyN0JlYtxBktwsW/fbca674d8cbfdb45cc52d213eb11f1de/Image_default_multilingual.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1AY9IY1ZyN0JlYtxBktwsW/fbca674d8cbfdb45cc52d213eb11f1de/Image_default_multilingual.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1AY9IY1ZyN0JlYtxBktwsW/fbca674d8cbfdb45cc52d213eb11f1de/Image_default_multilingual.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1AY9IY1ZyN0JlYtxBktwsW/fbca674d8cbfdb45cc52d213eb11f1de/Image_default_multilingual.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1AY9IY1ZyN0JlYtxBktwsW/fbca674d8cbfdb45cc52d213eb11f1de/Image_default_multilingual.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1AY9IY1ZyN0JlYtxBktwsW/fbca674d8cbfdb45cc52d213eb11f1de/Image_default_multilingual.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1AY9IY1ZyN0JlYtxBktwsW/fbca674d8cbfdb45cc52d213eb11f1de/Image_default_multilingual.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"API integrations and getting the most from TinyMCE’s APIs","slug":"api-release","featured":false,"lastUpdated":"Dec 14th, 2022","description":{"description":"<p>Looking for API guides? This guide shows some of the essential API integrations availble with TinyMCE's APIs</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Looking for API guides? This guide shows some of the essential API integrations availble with TinyMCE's APIs"}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"A cross icon and a cog icon representing APIs on a hexagon pattern background","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4aSJRwwfIUTbit3A6YGxFR/e147350256ecf89f26b014102e1c3a00/img-api-basics-guide-0.jpg?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joel Olawanle","slug":"joel-olawanle"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"API integrations and getting the most from TinyMCE’s APIs | TinyMCE"},"metaDescription":{"metaDescription":"API integrations can be confusing, but this guide shows API integration with TinyMCE APIs with API examples you can see to get started"}},{"title":"Using HTML and contenteditable to build a rich text editor","slug":"using-html-contenteditable","featured":false,"lastUpdated":"Apr 18th, 2022","description":{"description":"<p>Learn about <code>contenteditable</code> attribute, how it is used in text editors, its limitations, and how to overcome those limits with rich text editors.</p>\n<p>&nbsp;</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Learn about "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"contenteditable"}]},{"type":"text","value":" attribute, how it is used in text editors, its limitations, and how to overcome those limits with rich text editors."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":" "}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"An online HTML editor and the HTML displayed in real-time.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAMAAAAhxq8pAAACZFBMVEUHG0wDGEsAD0kAAEUAAEQAAEMAAEcAC00ADU4AAEIAFEsEGUwGGksEGUsAE0kAAUQAAEEAADwAADsAAD8AAEYAAEAAADkAFkoIHE0AFkhvc4TEytbEydXCyNTDydXBx9PCx9PL0d3L0NxvdIUMIVAAE0YAADCFiZfn7fnp7/rw9f/o7vrq8Pvl6/bk6fXi6PTq8Pzm7Pjk6vWCh5YAADgAFUgAEUQAACuFipft8//o7//p8P/p8P7q8f/n7/7r8f/u9P/v9f+Dh5YAAC0AEkUAEEMAACeGipfn7//V4frb5fva5fvd5vvc5vvw9v+Ch5QAACkAGUcAEUEAACWHjJnp7/vl7Pjo7vvx9//y+P+EiZYAAC4DG0cAE0CAhJLk6vbj6fXj6PTi6PV+gpAAADMGHEUEFj8ADD0hKEJLUGNNVnJYXHJTWG9WWnBVWnBIUnBGTGhFS2VESmRFS2ZKUGkfKEgAEj8MHkQNHEEMHUIABzMAOGUxVWxGPls5PWIpQmsAQmgENFctGEo8Ql8vNlYzOVg0OlkoL1IOHEEJG0EMHEESIEIQHkEIFTQEFDsAI1AALVEeH0sIGU0AIFIAK1AUK1AhIU0qMlUnL1IoMFMnL1MhKlASHkELGj0JFzsPHT4NGjwJFDIIFTkJGUoIFkkEGEkGGUkIGEgJF0gHF0kBFkgCF0kIFzwJFzgJFzkKFzcJFjcJFDEIFjoKG0wKG0sJG0sIFzsJFjYIFTMIFDAIFTcKGUQJGUMKGUMLGUQIEy8JFDAJFC8KFTALFTEMFzIIEi0LFS8IEy0MFi8MFjAKFC4IEizODDOKAAAAt0lEQVQYGQXBMWpUYQCAwW92/2SzwUU22niAEJAlhfexFey9hZVdbpGjWGlh4QUUEoigSd6+54xAhXk9NW+wA+V+T03ru1e8+bclzOvnU7Ws7vcuAZhOIow9AD3WBsZLgB7alB3Gjt+/3n7veP3z8LfOwfsfV3yt3mWupYEPAFBgXHDzEQDgMwAAxmsApk9f8rTBLahK1bLS2H47oGW1mFsf9ees4dAJTEY1H9vWeFGl5YziqdP6D+0HK9sR51AKAAAAAElFTkSuQmCC","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/hBZlqB7HMp6MD6i1LQMdL/7d62ec1165ff209d9ec5c9af839ff5ce/Image_default_OnlineHTMLEditor.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/hBZlqB7HMp6MD6i1LQMdL/7d62ec1165ff209d9ec5c9af839ff5ce/Image_default_OnlineHTMLEditor.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/hBZlqB7HMp6MD6i1LQMdL/7d62ec1165ff209d9ec5c9af839ff5ce/Image_default_OnlineHTMLEditor.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/hBZlqB7HMp6MD6i1LQMdL/7d62ec1165ff209d9ec5c9af839ff5ce/Image_default_OnlineHTMLEditor.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/hBZlqB7HMp6MD6i1LQMdL/7d62ec1165ff209d9ec5c9af839ff5ce/Image_default_OnlineHTMLEditor.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/hBZlqB7HMp6MD6i1LQMdL/7d62ec1165ff209d9ec5c9af839ff5ce/Image_default_OnlineHTMLEditor.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/hBZlqB7HMp6MD6i1LQMdL/7d62ec1165ff209d9ec5c9af839ff5ce/Image_default_OnlineHTMLEditor.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/hBZlqB7HMp6MD6i1LQMdL/7d62ec1165ff209d9ec5c9af839ff5ce/Image_default_OnlineHTMLEditor.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/hBZlqB7HMp6MD6i1LQMdL/7d62ec1165ff209d9ec5c9af839ff5ce/Image_default_OnlineHTMLEditor.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/hBZlqB7HMp6MD6i1LQMdL/7d62ec1165ff209d9ec5c9af839ff5ce/Image_default_OnlineHTMLEditor.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Shahed Nasser","slug":"shahed-nasser"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Using HTML Contententeditable to build a RTE | TinyMCE"},"metaDescription":{"metaDescription":"Learn about contenteditable attribute, how it is used in text editors, its limitations and how to overcome those.\n"}},{"title":"HTML compliance and rich text editors","slug":"html-compliance","featured":false,"lastUpdated":"Mar 21st, 2022","description":{"description":"<p>HTML compliance and validity is an essential part of web development. RTE can introduce possible HTML issues &ndash; compliance features and best practices keep the HTML validity of the web content.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HTML compliance and validity is an essential part of web development. RTE can introduce possible HTML issues – compliance features and best practices keep the HTML validity of the web content."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Rich Text Editor HTML compliance and validity representation","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/42G3GpDezOShsBGbMDqQWi/83d067e9f3af4af9ed0d68d2ec11250e/Image_HTML_Compliance_Valid_explore.jpg?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Prakash Verma","slug":"prakash-verma"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"HTML compliance and compliance features of RTE editors | TinyMCE"},"metaDescription":{"metaDescription":"Learn more about HTML compliance of RTE editors: possible issues, compliance features and best practices to keep the html validity of the web content."}},{"title":"How HTML focus works in rich text editors","slug":"text-editor-focus","featured":false,"lastUpdated":"Mar 2nd, 2022","description":{"description":"<p>HTML focus can be complex &ndash; this is especially true for the textarea HTML element. Find out what HTML focus means, and how HTML focus works in rich text editors.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HTML focus can be complex – this is especially true for the textarea HTML element. Find out what HTML focus means, and how HTML focus works in rich text editors."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"How HTML focus works in rich text editors.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/64w7Q9hY2R5s7AiLyzkqR1/93897c5aad3bb563440429b810bb1561/Image_Focus_HTML_Textarea__1_.jpg?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Keanan Koppenhaver","slug":"keanan-koppenhaver"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"What is HTML focus, and how focus works for rich text editors | TinyMCE"},"metaDescription":{"metaDescription":"HTML focus can be complex, especially in textarea focus cases. Find out what HTML focus means, and how HTML focus works in rich text editors."}},{"title":"HTML content models in rich text editors","slug":"html-content-models","featured":false,"lastUpdated":"Feb 21st, 2022","description":{"description":"<p>HTML content models are essential for rich text editors. They define what HTML element the content should have. Knowing how they work makes producing content in a rich text editor easier, and improves your flow.&nbsp;</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HTML content models are essential for rich text editors. They define what HTML element the content should have. Knowing how they work makes producing content in a rich text editor easier, and improves your flow. "}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"HTML mapping is important to understand for writing quickly in rich text editors","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.7767441860465116,"src":"//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=185&h=104&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=370&h=208&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=739&h=416&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=1109&h=624&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=1478&h=832&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=1528&h=860&q=50&fit=scale 1528w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=185&h=104&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=370&h=208&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=739&h=416&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=1109&h=624&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=1478&h=832&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6ohdvJvwCih51h92ht2eEd/7f9a8d9953f402ef97dfbd212260b98f/Image_HTML_Mapping__1_.jpg?w=1528&h=860&q=50&fm=webp&fit=scale 1528w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ochuko Onojakpor","slug":"ochuko-onojakpor"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"HTML content models in rich text editors | TinyMCE"},"metaDescription":{"metaDescription":"HTML content models define the type of content each element is allowed to have. Learn about how rich text editors convert content to HTML."}},{"title":"Open source security pros and cons","slug":"open-source-software-security","featured":false,"lastUpdated":"Jan 27th, 2022","description":{"description":"<p>How can you know if an open source software dependency you&rsquo;d like to use is secure (or not)? Find out more..</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"How can you know if an open source software dependency you’d like to use is secure (or not)? Find out more.."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Learn more on how to assess the security of the open source project, possible risks and best practices on how to avoid those.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.0979142526071843,"src":"//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=185&h=169&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=370&h=337&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=739&h=673&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=1109&h=1010&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=1478&h=1346&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=1895&h=1726&q=50&fit=scale 1895w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=185&h=169&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=370&h=337&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=739&h=673&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=1109&h=1010&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=1478&h=1346&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4cFCQEovjuciYoGlvAtYda/00ab5c450ecafff220d3b3108e3c3cc6/Image_Github_Security.png?w=1895&h=1726&q=50&fm=webp&fit=scale 1895w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Open source software security: better or bad from the start? "},"metaDescription":{"metaDescription":"Learn more on how to assess the security of the open source project, possible risks and best practices on how to avoid those."}},{"title":"Tracking engineering performance with analytics","slug":"tracking-engineering-performance-with-analytics","featured":false,"lastUpdated":"Jan 10th, 2022","description":{"description":"<p>Engineering performance metrics are essential for supporting software development.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Engineering performance metrics are essential for supporting software development."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Engineering performance and culture are better with analytics","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.0979142526071843,"src":"//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=185&h=169&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=370&h=337&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=739&h=673&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=1109&h=1010&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=1478&h=1346&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=1895&h=1726&q=50&fit=scale 1895w","srcWebp":"//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=185&h=169&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=370&h=337&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=739&h=673&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=1109&h=1010&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=1478&h=1346&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/48GmaUah7PNcm3jKAxP9KT/16251ff0f9d7cceb46ebbba7cff5dec2/Image_engineering_Analytics_Header.png?w=1895&h=1726&q=50&fm=webp&fit=scale 1895w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Tracking engineering performance with analytics | TinyMCE"},"metaDescription":{"metaDescription":"Learn about why it’s important to track your engineering performance and what software development metrics you can use."}},{"title":"Open source software and managing technical debt ","slug":"open-source-manage-technical-debt","featured":false,"lastUpdated":"Oct 4th, 2021","description":{"description":"<p>While technical debt may appear to be an issue for large, private software products, open source software projects can experience it when they expand in size, or when volunteers depart projects. It's possible to identify the skill set needed to manage it, apply for funding resources to attract contributors with the relevant skills, or even create an associated business to garner attention and resources for an open source project.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"While technical debt may appear to be an issue for large, private software products, open source software projects can experience it when they expand in size, or when volunteers depart projects. It's possible to identify the skill set needed to manage it, apply for funding resources to attract contributors with the relevant skills, or even create an associated business to garner attention and resources for an open source project."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"An hour glass, a pair of hands holding it, and a computer screen. The hour glass represents the time pressures associated with technical debt.","artistName":"Fakurian Design","image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.4922222222222221,"src":"//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=185&h=124&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=370&h=248&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=739&h=495&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=1109&h=743&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=1478&h=990&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=2217&h=1486&q=50&fit=scale 2217w,\n//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=2686&h=1800&q=50&fit=scale 2686w","srcWebp":"//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=185&h=124&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=370&h=248&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=739&h=495&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=1109&h=743&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=1478&h=990&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=2217&h=1486&q=50&fm=webp&fit=scale 2217w,\n//images.ctfassets.net/s600jj41gsex/658ocwXKWBWtrGwltiTxmx/c4f6c0bd42690c0fee34705a2bcb18ba/fakurian-design-mqm-Ze_q_9A-unsplash-technical-debt.png?w=2686&h=1800&q=50&fm=webp&fit=scale 2686w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"Learn JavaScript in 2021: Hassib Moddasser’s recommendation ","slug":"learn-javascript-guide-2021","featured":false,"lastUpdated":"Sep 21st, 2021","description":{"description":"<p>To learn JavaScript in 2021, we have a resource to share - a twitter thread from Hassib Moddasser. Their recommendations can help users to start to learn JavaScript with the best resources in 2021.&nbsp;</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"To learn JavaScript in 2021, we have a resource to share - a twitter thread from Hassib Moddasser. Their recommendations can help users to start to learn JavaScript with the best resources in 2021. "}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"The twitter handle of @hassibmoddasser who's tweets are showcased in this blog to learn JavaScript","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.4169570267131242,"src":"//images.ctfassets.net/s600jj41gsex/5YYKT2puI3GQH5cMJcj2j0/c0cbe2799bdd2ff7c8a3141892d2fc10/twitter-showcase-blog2.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/5YYKT2puI3GQH5cMJcj2j0/c0cbe2799bdd2ff7c8a3141892d2fc10/twitter-showcase-blog2.png?w=185&h=131&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5YYKT2puI3GQH5cMJcj2j0/c0cbe2799bdd2ff7c8a3141892d2fc10/twitter-showcase-blog2.png?w=370&h=261&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5YYKT2puI3GQH5cMJcj2j0/c0cbe2799bdd2ff7c8a3141892d2fc10/twitter-showcase-blog2.png?w=739&h=522&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5YYKT2puI3GQH5cMJcj2j0/c0cbe2799bdd2ff7c8a3141892d2fc10/twitter-showcase-blog2.png?w=1109&h=783&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/5YYKT2puI3GQH5cMJcj2j0/c0cbe2799bdd2ff7c8a3141892d2fc10/twitter-showcase-blog2.png?w=1220&h=861&q=50&fit=scale 1220w","srcWebp":"//images.ctfassets.net/s600jj41gsex/5YYKT2puI3GQH5cMJcj2j0/c0cbe2799bdd2ff7c8a3141892d2fc10/twitter-showcase-blog2.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/5YYKT2puI3GQH5cMJcj2j0/c0cbe2799bdd2ff7c8a3141892d2fc10/twitter-showcase-blog2.png?w=185&h=131&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5YYKT2puI3GQH5cMJcj2j0/c0cbe2799bdd2ff7c8a3141892d2fc10/twitter-showcase-blog2.png?w=370&h=261&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5YYKT2puI3GQH5cMJcj2j0/c0cbe2799bdd2ff7c8a3141892d2fc10/twitter-showcase-blog2.png?w=739&h=522&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5YYKT2puI3GQH5cMJcj2j0/c0cbe2799bdd2ff7c8a3141892d2fc10/twitter-showcase-blog2.png?w=1109&h=783&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/5YYKT2puI3GQH5cMJcj2j0/c0cbe2799bdd2ff7c8a3141892d2fc10/twitter-showcase-blog2.png?w=1220&h=861&q=50&fm=webp&fit=scale 1220w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joe Robinson","slug":"joseph-robinson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"How tiny.cloud uses free monads for testing","slug":"tiny-cloud-free-monads","featured":false,"lastUpdated":"Jul 19th, 2021","description":{"description":"<p>At Tiny, we devised a solution to a file system problem using a solution from mathematics: Free Monads. In this deep dive into our process, we walk through what went into implementing Free Monads for testing our rich text editor.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"At Tiny, we devised a solution to a file system problem using a solution from mathematics: Free Monads. In this deep dive into our process, we walk through what went into implementing Free Monads for testing our rich text editor."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Graphics of TinyMCE and the Cloud","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAMAAAAhxq8pAAACc1BMVEUMEywMEiwMESsMGy4MIS8MHC4MEisMHi8MIC8MFSwMITAKGC0LEisNGy4NIjEMFiwMIjAXIzEMHi4IESoLEysQJDIMFi0MEioMESkLESoMECk3IDwxJjsbFCgHESgJEisMEysRIDESIjILECoLDycJESEMHzYMFi8MECQwIEIjKF8wIT4qGjMSEyoJEikWIzQUIjIMEykJDiAKGysYL18lPYgTIEsLDRMxJFUwUtonQKUhIUckIEUYGTcKESkKESsWHzIXITEIDCIIFyQTKk4iOX4rQpksQpwTH0sLDBEwIEg5WeExUtkhIkkrJE4eI08XH0YQFzUeJTQMFyUPJUIeNXEoPo4rQZgtQ5ssQpoMDhswHjgbKmkeM4YZI04pJE0zKU8lJ1AXIlARFSsiLkAZMWQmO4YrP5MsQZUrQZYrQZclOIQRG0ANESUwHz8bJlQZJlIjJVEoJE4dI08iJk8VIU8KESoRFigmN1cnO4kqPo8qPpAqPpEmOYYcKmQSGz4QGTcOEysvIEIbJ1gbKFkaJFMrJU4yKU4iJU8UIU8MESQlNlYnO4coPIslN38XIUkYIkkWH0QRGTorHz8gJlYZJlgiJVMlI08eJE8kJk4JDyMWLE8nOYUpPIohMnQSGjkYIksWIEYTGz4LEy0TFCwfHT4eJVIdJFMvJk8xKE8gJE8KECQSK04mOYMoO4kqPo4hMXETGz0ZJE8QGDcKEioKEikRFjAXH0QWI1AiJVAnKE8WIU8TK04lOIIlN4AcK2UQGTwOFjEOFjMNFC4LEioLEikVIEkWIlELECUSLE0eLmsRGj8IDBYKECMKEScSGz0XI0/uMlZ+AAAArElEQVQYGW3BTQoBcQDG4fc3/kYkzaCEkoWNE9hxASucQzkLO0tsbe2dw8IBfJU0RYz5aJR4npQiWJKlBAohC8HDVwSFbMDLPQ03XwEUsDNc08oSOkhCEipzcUnsZSTSdSjwYdeM8Nt8cRvQ5Vf+3id2LpLotfhhOvxRnQDHMoHxlMjOvBzg6BBYEBOVGbFTabgmZiSHiDuq9ZtLTiXm2FtCw9Ugu5ea3sbL8QaJ9CFZflaXeQAAAABJRU5ErkJggg==","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=1109&h=911&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=1478&h=1214&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=1792&h=1472&q=50&fit=scale 1792w","srcWebp":"//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=1109&h=911&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=1478&h=1214&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/sQsL5FErxkutJXb8qwwFy/5d0f772e5c09dec7689b38b895717830/How_Cloud_used_Free_Monads_for_testability.png?w=1792&h=1472&q=50&fm=webp&fit=scale 1792w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Morgan Smith","slug":"morgan-smith"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"How tiny.cloud uses free monads for testing"},"metaDescription":{"metaDescription":"At Tiny, we devised a solution to a file system problem using mathematics: a concept called Free Monads. In this deep dive into our process, we walk through what went into implementing Free Monads for testing our rich text editor."}},{"title":"The essential git stash and git reset guide","slug":"the-essential-git-stash-and-git-reset-guide","featured":false,"lastUpdated":"Jun 9th, 2021","description":{"description":"<p>In this guide, we take you through two essential git commands. Git stash saves your work and lets you switch branches.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In this guide, we take you through two essential git commands. Git stash saves your work and lets you switch branches."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":" An octocat figurine stands in front of a computer screen","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.5316091954022988,"src":"//images.ctfassets.net/s600jj41gsex/3kGjWY2aHvXl6Hjad2Ch7V/3bb82ab03e8e0e44db961e742cb3505f/GitHub_reset.jpeg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/3kGjWY2aHvXl6Hjad2Ch7V/3bb82ab03e8e0e44db961e742cb3505f/GitHub_reset.jpeg?w=185&h=121&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3kGjWY2aHvXl6Hjad2Ch7V/3bb82ab03e8e0e44db961e742cb3505f/GitHub_reset.jpeg?w=370&h=242&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3kGjWY2aHvXl6Hjad2Ch7V/3bb82ab03e8e0e44db961e742cb3505f/GitHub_reset.jpeg?w=739&h=482&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3kGjWY2aHvXl6Hjad2Ch7V/3bb82ab03e8e0e44db961e742cb3505f/GitHub_reset.jpeg?w=1066&h=696&q=50&fit=scale 1066w","srcWebp":"//images.ctfassets.net/s600jj41gsex/3kGjWY2aHvXl6Hjad2Ch7V/3bb82ab03e8e0e44db961e742cb3505f/GitHub_reset.jpeg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/3kGjWY2aHvXl6Hjad2Ch7V/3bb82ab03e8e0e44db961e742cb3505f/GitHub_reset.jpeg?w=185&h=121&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3kGjWY2aHvXl6Hjad2Ch7V/3bb82ab03e8e0e44db961e742cb3505f/GitHub_reset.jpeg?w=370&h=242&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3kGjWY2aHvXl6Hjad2Ch7V/3bb82ab03e8e0e44db961e742cb3505f/GitHub_reset.jpeg?w=739&h=482&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3kGjWY2aHvXl6Hjad2Ch7V/3bb82ab03e8e0e44db961e742cb3505f/GitHub_reset.jpeg?w=1066&h=696&q=50&fm=webp&fit=scale 1066w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Team Tiny","slug":"team-tiny"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"The essential git stash and git reset guide | TinyMCE"},"metaDescription":{"metaDescription":"Guide to git stash and get reset - essential git commands. Git stash makes a temporary, local save of your code. Git reset lets you tidy up your code before doing a commit."}},{"title":"3 reasons why a great developer experience is crucial","slug":"why-have-a-great-developer-experience","featured":false,"lastUpdated":"Apr 14th, 2021","description":{"description":"<p>More often than not, we cater to our users by creating an intuitive user experience, but we should also focus on building a great developer experience. Learn the benefits of having a great developer experience in our latest blog.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"More often than not, we cater to our users by creating an intuitive user experience, but we should also focus on building a great developer experience. Learn the benefits of having a great developer experience in our latest blog."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Laptop at a desk office","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.5,"src":"//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=185&h=123&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=370&h=247&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=739&h=493&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=1109&h=739&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=1478&h=985&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=2217&h=1478&q=50&fit=scale 2217w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=185&h=123&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=370&h=247&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=739&h=493&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=1109&h=739&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=1478&h=985&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/4wRTVDqpVEIDf4C7Q0bNxx/c2b0d83dd4770065cbb9dd1e23ed5322/christopher-gower-vjMgqUkS8q8-unsplash.jpg?w=2217&h=1478&q=50&fm=webp&fit=scale 2217w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Qiran Gabrielle-Grace","slug":"qiran-gabrielle-grace"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"The importance of a great developer experience?"},"metaDescription":{"metaDescription":"More often than not, we cater to our users by creating an intuitive user experience, but we should also focus on building a great developer experience. Learn the benefits of having a great developer experience in our latest blog. "}},{"title":"Collecting and analyzing metrics in engineering","slug":"collecting-and-analyzing-engineering-metrics","featured":false,"lastUpdated":"Feb 10th, 2021","description":{"description":"<p>Software development metrics done right can be extremely fascinating and illuminating. They can save your development teams from myriad unnecessary costs and frustrations, and improve performance as a result.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Software development metrics done right can be extremely fascinating and illuminating. They can save your development teams from myriad unnecessary costs and frustrations, and improve performance as a result."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Series of graphs on a screen ","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAADbUlEQVQYGQXBy24bVRgA4P9c5ubx+BZnbMeO08R1moYQS1XUtLShRDQLoGxbsUPsYAMb3oAFEq/AkiVPgFARIlIkAlUSgZI6iZ3E93vs8Vw8c+ZMvw/ByjOomJt7W9sPNzO6HpJlgiklBFNCCAaAWEiNqIogUlkSZEmQJEGWRFEUMMIUKgPQ0ztPt7Lp5Mz1PcZUTUGEEIxlUVRlSVVkURIoxQgC0zL7Q9ucWoPBuNsbUYDQoycbuYWkKiuxMA0rIVEQAQHBhHnMmEybzfZwdKtpocp1++yi6fmwf9iBugvgUQBl7f4dRRECzhnz2r1+rzvq9EZaRLus9fdP29O/x5BC33y1dXLRFgkmga+lBAP7nz7J0Px2NpmMHhydVuqjOU3rje1/GxOwZi8/KJ63htz3IAOfPMsxj/1X7WgSrQ9sEAi47vMPS3T70TrzvXKtCxwrEm4NDXBne+u661qXg36UAqRZoaBfdcwxlixJjuTVCWNSXLx77x4tFHO1egcjtrI4b1qsOWMgCfPz0ePTazDZ2A8kVVBk6a+jY2iYXsC9AKDjf/wqH0stUUWm7swtraSKS+l6q/+Cxx0n0MIiQPB+PuJ5/vqKDoinQ6iwESMIAQQj29vdKQVCFP3w8y/A+GJ6LpdKMMZMx5t52HK4MTEJIQAQj2kIAWNMEkVRoAIhsoTzi/l/ajL97eDopmPsllay6YSAfds2U8n0yWX7qnE7NWzHdD7/6MF5reNzznkgCLTVn2Ri8vfffv222saN/m3A2YyxN2c3JxdNx+UYB4BcxmeHlbYmYcb5YGwgFPx+Wvv1+Gq/3E5ockDV03INc24u69rYMF+XG/tvm56HylfNRrc7taeA/PdWF3vj6djjjYkdiSoLmggSerBZnDjo4qxDMXWiidD/TcsRZcdxGPMPyxcz7hpWUFgAXY+9PqpWplZEEsKawjEBma4Wi9dd4+ECpV+++Ax8FCYNfWhTHJ9MJ2+qVTUuR0RUymcggIN6MykQzok7wx3P39PVpL7wx5+t3cdZOjGc7Pz83s4WIYRzPhqOMolEtz+46rSykVy91QXTceJqmGCREttjT0tFLGo31aMvXhbpT9/9CPnC88dr62t3lwuL6XR6eekO5wFzGcG41+/PxULH57XKyBAw1kSycX916oBgmbls4h1y9LwoBnnxQQAAAABJRU5ErkJggg==","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/6PhK9JTfUHcfDbO6sE4S6J/b60deb9f420181df16d4fc311d799cb5/BlogImage_Feb2021_default_analytics.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6PhK9JTfUHcfDbO6sE4S6J/b60deb9f420181df16d4fc311d799cb5/BlogImage_Feb2021_default_analytics.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6PhK9JTfUHcfDbO6sE4S6J/b60deb9f420181df16d4fc311d799cb5/BlogImage_Feb2021_default_analytics.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6PhK9JTfUHcfDbO6sE4S6J/b60deb9f420181df16d4fc311d799cb5/BlogImage_Feb2021_default_analytics.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6PhK9JTfUHcfDbO6sE4S6J/b60deb9f420181df16d4fc311d799cb5/BlogImage_Feb2021_default_analytics.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6PhK9JTfUHcfDbO6sE4S6J/b60deb9f420181df16d4fc311d799cb5/BlogImage_Feb2021_default_analytics.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6PhK9JTfUHcfDbO6sE4S6J/b60deb9f420181df16d4fc311d799cb5/BlogImage_Feb2021_default_analytics.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6PhK9JTfUHcfDbO6sE4S6J/b60deb9f420181df16d4fc311d799cb5/BlogImage_Feb2021_default_analytics.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6PhK9JTfUHcfDbO6sE4S6J/b60deb9f420181df16d4fc311d799cb5/BlogImage_Feb2021_default_analytics.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6PhK9JTfUHcfDbO6sE4S6J/b60deb9f420181df16d4fc311d799cb5/BlogImage_Feb2021_default_analytics.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Dylan Just","slug":"dylan-just"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Collecting and analyzing metrics in engineering"},"metaDescription":{"metaDescription":"Software development metrics done right can be extremely fascinating and illuminating. They can save your development teams from myriad unnecessary costs and frustrations, and improve performance as a result."}},{"title":"Tiny Programming Principles: The concept of Optionals","slug":"javascript-optionals","featured":false,"lastUpdated":"Feb 8th, 2021","description":{"description":"<p>Just because you can use null or undefined doesn&rsquo;t mean you should. We talk about the problems that come up and how Optionals can help overcome them.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Just because you can use null or undefined doesn’t mean you should. We talk about the problems that come up and how Optionals can help overcome them."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"People discussing at a table in an office ","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.5,"src":"//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=185&h=123&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=370&h=247&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=739&h=493&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=1109&h=739&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=1478&h=985&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=1950&h=1300&q=50&fit=scale 1950w","srcWebp":"//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=185&h=123&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=370&h=247&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=739&h=493&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=1109&h=739&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=1478&h=985&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/6kqW0LP4TCJbdW2de79axH/b8ab73e7c040b67c0caf3667069d33d7/Optionals.jpeg?w=1950&h=1300&q=50&fm=webp&fit=scale 1950w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Millie Macdonald","slug":"millie-macdonald"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Programming Principles: Optionals Vs Null Or Undefined"},"metaDescription":{"metaDescription":"Just because you can use null or undefined doesn’t mean you should. We talk about the problems that come up and how Optionals can help overcome them."}},{"title":"Tiny Programming Principles: Immutability","slug":"mutable-vs-immutable-javascript","featured":false,"lastUpdated":"Jan 26th, 2021","description":{"description":"<p>We share key benefits of immutability, and why JavaScript developers (in particular) should choose immutable objects over mutating functions.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"We share key benefits of immutability, and why JavaScript developers (in particular) should choose immutable objects over mutating functions."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Five eggs are stacked precariously on top of each other.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAeABQDAREAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAABgQFAgMI/8QAJRAAAQIFAwQDAAAAAAAAAAAAAQIDAAQFEUEGEiEHE1FhFDGh/8QAGQEBAQADAQAAAAAAAAAAAAAABQABAgQG/8QAHxEAAQQDAAMBAAAAAAAAAAAAAQACAxEEITEFEnFB/9oADAMBAAIRAxEAPwDrxcuTiEkUtC29hVgRKUJ0KCuL29RlSUqZBEa2tvxUdQqbEzWZqWaGxTLDZLaeRkFV/JOPUG4mQ2Z8jQSaKWzMYxxxPoCwql6ZUHDYG0Jor1TAzKdpyfF4wdKG0A03qQVuVq9QWkMlU2qXCEW2Ht8bhm/NjfKYC8RboHSOFW467w0vSeaaI52xA3TRvndrNc6gq+xDiASp+TKFlsrJiO1DSHU3ptS9PvT7kop8fMe77qFPEp3WCeBjgARw4mHDhNcyAUCbP1I5mfNnua+c2Wih8Uk0NhJsB+x3I9f/2Q==","aspectRatio":0.6669390614055568,"src":"//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=185&h=277&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=370&h=555&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=739&h=1108&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=1109&h=1663&q=50&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=1478&h=2216&q=50&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=2217&h=3324&q=50&fit=scale 2217w","srcWebp":"//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=185&h=277&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=370&h=555&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=739&h=1108&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=1109&h=1663&q=50&fm=webp&fit=scale 1109w,\n//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=1478&h=2216&q=50&fm=webp&fit=scale 1478w,\n//images.ctfassets.net/s600jj41gsex/5b81UPp1646TlwGYqCwI2U/8a0d08a26791a54e23998303dfa9a0f2/jiangxulei1990-eIzzzwtkBjU-unsplash.jpg?w=2217&h=3324&q=50&fm=webp&fit=scale 2217w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Millie Macdonald","slug":"millie-macdonald"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Immutable vs mutable: Definitions, benefits & practical tips"},"metaDescription":{"metaDescription":"We share key benefits of immutability, and why JavaScript developers (in particular) should choose immutable objects over mutating functions."}},{"title":"What is DevOps?","slug":"what-is-devops","featured":false,"lastUpdated":"Sep 20th, 2020","description":{"description":"<p>DevOps is a mashup of &ldquo;development&rdquo; and &ldquo;operations&rdquo;, but it has become shorthand for a significant culture shift that, done right, can drive meaningful organizational change.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"DevOps is a mashup of “development” and “operations”, but it has become shorthand for a significant culture shift that, done right, can drive meaningful organizational change."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"At least three cogs interlocked.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAMAAAAhxq8pAAAC6FBMVEXx8vWhpLAAAAATFR8gIy0KDhmbnqn////S09qIh5fMx8mXlZ3Y19na2dq2truamqSqpqjV09Dq6+66u8PHyM37+vy3t8BPVW7QzMzDv8HX1tipqaxlZWp1dH5RTViAgIrIyc3i4eS1trpyc3dRUldYWl+FiIzO0NP09PbPz9NSV2ZFSmDNysvY1tfY19jIxsibnKAAAA55e4VDR1KenqPY19rW1NbZ2dzg4OTX19qlpqpCRlIAAB18fYfV09Ti4OC2tLdhYWU8PUE8PkZlZmt5eHx4d3phYWYxMz1dX2/EwsampKW0sbKVlZhfZHQhJzlKTVqPkJjEw8bHxMXT0NCSkZMAAwmDhIiipa+ytb6eoaqLjpiNj5eYm6S3uL6zs7fGxcfRzs5VVFVgX2FzdHguMTZ0dXhRUlWpp6h7foSFh46Eh47MzdObm5+Nj5XMzNF6enw7PT+amJpVVFZrbXDf3d3Gw8SenqJsbnZzc3hMTld+f4chIyhnaW45Oj5ydHp0dHuurbO7ub6bmpzJyMvMycvc2duAfoEdHCF3d3rKxMfAur61r7WqpKrJyMjl4+De29nMycbW0s7FwsI+PkVpanGsqKmYk5W/t7fMwb/HurjGu7qFgYIQGiHDwL3n4d3q5uDx7unIxcNWU1NkYmIoKS1gYmi2sLHAtbbAs7LCtLC7rKjIubWzqqySkI7l3trZ08/RzMrc2dXf3NjY1NJ3dnxram+NiYmakpS6ra2/r6rEsqzEsavJtq/AsK0GDxbFvrnf1tLGv77Y0czo493o5eC7t7VNSEc6ODgAAA+Sk5zHwMHTxsTMvLbAr6nOvLXTwrnMubCyo6HKw77g19Hb0s7Zz8va0Mvb1M/X0Mzf2dTW0Muyr7EyN0JKSEmQi465r7K2qKmnnJuroJuimJapm5uwoqTf2NLd2dPg2dPm3NXd1dDh3tng2tXf2NPY089raW1pa3XSzMq8tri0q66TiotGREetoaF10cWDAAAAqElEQVQYGWXBoQ4BARzH8d/X/sm4w64qHsBsmiZJJEyRdE26aYgEbyCfhKLwCp5A0QlE4xyG+XwQCLgaH5bhqNtNcvgwB5dfuwJFLgm+bSViKvOwVoVDFlaSqLFQqOTxMK8HUsPitEC8KOgAlj6leJtIctnnzHEJjXwGCvVXCfJYEvBHGioSbwI9xkS6Ck15MpfIjLaU5iUW8FTVkrcN/8zjn3n8SEpn7nFxHj+FrHhdAAAAAElFTkSuQmCC","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/1OC5CO8rBreAg4edplgfGY/d323567754d2a63829544c582c9be790/Image_default_WhatIsDevOps.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1OC5CO8rBreAg4edplgfGY/d323567754d2a63829544c582c9be790/Image_default_WhatIsDevOps.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1OC5CO8rBreAg4edplgfGY/d323567754d2a63829544c582c9be790/Image_default_WhatIsDevOps.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1OC5CO8rBreAg4edplgfGY/d323567754d2a63829544c582c9be790/Image_default_WhatIsDevOps.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1OC5CO8rBreAg4edplgfGY/d323567754d2a63829544c582c9be790/Image_default_WhatIsDevOps.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1OC5CO8rBreAg4edplgfGY/d323567754d2a63829544c582c9be790/Image_default_WhatIsDevOps.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1OC5CO8rBreAg4edplgfGY/d323567754d2a63829544c582c9be790/Image_default_WhatIsDevOps.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1OC5CO8rBreAg4edplgfGY/d323567754d2a63829544c582c9be790/Image_default_WhatIsDevOps.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1OC5CO8rBreAg4edplgfGY/d323567754d2a63829544c582c9be790/Image_default_WhatIsDevOps.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1OC5CO8rBreAg4edplgfGY/d323567754d2a63829544c582c9be790/Image_default_WhatIsDevOps.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Cameron Bowden","slug":"cameron-bowden"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"XSS security issue - Tiny’s commitment","slug":"xss-security-issue-tinys-commitment","featured":false,"lastUpdated":"Aug 12th, 2020","description":{"description":"<p>Tiny has released a security update for its open source HTML editor based on a cross-site scripting (XSS) vulnerability discovered by Bishop Fox Labs.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiny has released a security update for its open source HTML editor based on a cross-site scripting (XSS) vulnerability discovered by Bishop Fox Labs."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Laptop keyboard viewed from the side with screen half closed.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAMAAAAhxq8pAAACtVBMVEUAAAAEAAABCCQAR28AeqYAm74AlLccja0+kKhPkp89eoYGRFYACBcBAAABAQECAAAHAwAKGi4COFwAWYcAdqYAhqwFgaI5iJ9IhpNAc34mUVsAHicEAgQcIjEWNlUCRW8ARG0AR3UETnoQUHYpXno0YG0ZPUkABBUBAQArKjkpNk8TPWAHOmEAJEgAJUgQQWAdTGQRPVEHJjMAAAMlLkkhMU0IHT0EDiwAGjYCMEkKMkMEGSUEHjwABTIACDEACioACB8AAhEMNlsAETsBDCkABBECFycBCAsRNT0AKTEDAQAgHSEUExwcHCYDCBktNDwVKDYPLDYYNDwySU86Tk8wSVIAN0oKMkUIKToFIjEDGygiRlEqQUwxNkgvM0kuM0oqNU4MLEk+VGU2VmceWm1jho5Fd4BCeoMnam8ua3Q9hJYudo8nYnwhUWobRFxRX29GVnAmOmJHUGs0P1wAN1w9YXhGb4InbIA4gJBqoKdQk5tem6EhfYM9en5fo6wxmLEXf6ATaIsRVnckOWFJUnJYX3okOV4ANFxGYHpZeo4YaYIzhppam6dlqa9gpat9tLdToKJ7qat8rrM4qr4AiKoAapEAUngtO2VcYnotPV8AKVcAMltFZX89cYpIh507jKBXoK1wsrmBu8CKwcM/padpq66Er7VFr70AkLAAa5IAT3dWWnk/SW0AKVgALVsYQ2pOd5RMhaBOlK0Ai6Y8pLd/wsyWzdWKyM0/sbY9q7NXp7MvobQIkbEAbJYAU3wAGUwAIVYAKl4ANmgASHgAX44AeKMAjbMAnb8Arsctu81VxdJbx9JMw84vusgAq70AlrEAhKcAapMAUnsAEjgAGUEAIUsAK1QAOWIAS3MAXoUAcJQAgaAAj6gAma4Pn68coK8XnasAk6MAhZgAcYoAYH4ATW4AOFrOWP21AAAAZklEQVQY08XOMQ4BURhG0fMlf0QiLwoqbMBObFkUKqWeBZgNzAYUiDexALc81Q1E+hTLHh4asevoTtsOsv/SFS2oxVsuPkTNkyRnGmwMqFmSE4xwo1GVo0kjObzWJqO1ym+1/ic+Ae+2DOEd8QKdAAAAAElFTkSuQmCC","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/RfipD0YfixdLF2pYVYTZd/059012812c4fa3815751fc619c66ef02/Image_default_security__1_.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/RfipD0YfixdLF2pYVYTZd/059012812c4fa3815751fc619c66ef02/Image_default_security__1_.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/RfipD0YfixdLF2pYVYTZd/059012812c4fa3815751fc619c66ef02/Image_default_security__1_.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/RfipD0YfixdLF2pYVYTZd/059012812c4fa3815751fc619c66ef02/Image_default_security__1_.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/RfipD0YfixdLF2pYVYTZd/059012812c4fa3815751fc619c66ef02/Image_default_security__1_.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/RfipD0YfixdLF2pYVYTZd/059012812c4fa3815751fc619c66ef02/Image_default_security__1_.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/RfipD0YfixdLF2pYVYTZd/059012812c4fa3815751fc619c66ef02/Image_default_security__1_.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/RfipD0YfixdLF2pYVYTZd/059012812c4fa3815751fc619c66ef02/Image_default_security__1_.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/RfipD0YfixdLF2pYVYTZd/059012812c4fa3815751fc619c66ef02/Image_default_security__1_.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/RfipD0YfixdLF2pYVYTZd/059012812c4fa3815751fc619c66ef02/Image_default_security__1_.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Dylan Just","slug":"dylan-just"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"Full-stack developer skills and the importance of learning","slug":"full-stack-developer-skills-and-the-importance-of-learning","featured":false,"lastUpdated":"Jun 29th, 2020","description":{"description":"<p>What skills are required for a full-stack developer? We list 12 essential skills, and discuss the importance of learning, theory vs practice, depth vs breadth, and more.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"What skills are required for a full-stack developer? We list 12 essential skills, and discuss the importance of learning, theory vs practice, depth vs breadth, and more."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Laptop with hands poised ready to type code.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAADeklEQVQYGT3BW0xbZRwA8P/3ne9cOD1t6Wl7uBTEcW1hkrhN57QkWwbbg+7BS5zJNPHN6Ksmanz3ae8+aLwkJiYuXuKy6SIu2iAbAhMGG6ygbaWjF9jKDufQc/+LJvr7kco9XeA4SgmlZB/sQ0BAAPD8AAEB4b6+O7two1vTCCGu5zqO5fqeHyADIAiA8K8AABABgiAAQggAILi+73pe4HsEkALhCHCUYkCB+OyTLy6IsuJYTd/xpJAiyi30H8JToyMHOtRiuTp5LafIfFiWKQFCkACQ/7DJXK5zoP/zKzNwy1SfSHUnVNsOXj11IqYozT3nux+nNmrr586cIpQn/4N9iBiwgd5+SeGPHWgvOFtdsuyoaqcqjx0ZDYn89PW5j678kApR0zTVeAKR7AsoJQCIAQY+HRhKi5zU09XuEOp7wDx3fPiRtmS8tFH/4MOPqdPAWFulviXwTOCZyASBMUIAEBCBam2a1fRUNdI/0G4R6FNaRx/uM2z3wuXvL1389I+ruXqpnF8vUsqJgkAZFwAGiAQQEJkXoK6byVTbS+eeW1gqjA0elETx4uLM+/PfAqgiR2pLK7/L8Mzpk0hooVyW0dU4SAR+IMvc2++8JzC2US77hKvUmxNHD5uG/tr587BSyp59fpeSxp1r67qQfbTPMHdLpfX2Sin/02SzWkiEJS47MR4grq39OZjJ3ClVbNOam73+OG289cqLL5w8/uzxLOXYwtSlaDwuRSOKrldzV2tIeh/qlnmOe2zsSVkJb9XqiWR8+mbpy6++yYbvv/7y2cxgv6Yltc7O9MhI44GxuLxkuX5rYzvTEY/ydHOrsVzc5ERJ4CV517Bc9H3KDabCT2d6uuMRY8/MzS/MzM4xAqlUSke+LzPiRBKLa+XLKxs3mn5+zyYAEI/GDo+fOXjkWCgaEyhod28Pdyh3DXfbNE5MnG7VOjzKfl1es5hMCdkzzdrm5vz0Lz9//Rl548131UQyGo04lrWYL8aSHYXV1bRXjUVC6Uzf8KGjrZ094bhm+1C8t1vbMX6bnb15+5a5XSeew2hEfeBDpVypFourM1OWbQMv5glNcJwgQnuqm8W7PBsZL3RpiWRrVOH8ZFzNFzfcwGfbuim3SKZu7FSqEi/IosRRNGxrrlA/NJTs9QXbJsqOIQl8iyCEZGkknR7qH/irWi9Wt/4GTjShYZiAiZYAAAAASUVORK5CYII=","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/2mHaYURLMpWxhkwcb3T4m7/9568def5d5cfe4003dd8cb9838febc85/Image_default_fullstackdevskills.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2mHaYURLMpWxhkwcb3T4m7/9568def5d5cfe4003dd8cb9838febc85/Image_default_fullstackdevskills.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2mHaYURLMpWxhkwcb3T4m7/9568def5d5cfe4003dd8cb9838febc85/Image_default_fullstackdevskills.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2mHaYURLMpWxhkwcb3T4m7/9568def5d5cfe4003dd8cb9838febc85/Image_default_fullstackdevskills.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2mHaYURLMpWxhkwcb3T4m7/9568def5d5cfe4003dd8cb9838febc85/Image_default_fullstackdevskills.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2mHaYURLMpWxhkwcb3T4m7/9568def5d5cfe4003dd8cb9838febc85/Image_default_fullstackdevskills.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2mHaYURLMpWxhkwcb3T4m7/9568def5d5cfe4003dd8cb9838febc85/Image_default_fullstackdevskills.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2mHaYURLMpWxhkwcb3T4m7/9568def5d5cfe4003dd8cb9838febc85/Image_default_fullstackdevskills.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2mHaYURLMpWxhkwcb3T4m7/9568def5d5cfe4003dd8cb9838febc85/Image_default_fullstackdevskills.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2mHaYURLMpWxhkwcb3T4m7/9568def5d5cfe4003dd8cb9838febc85/Image_default_fullstackdevskills.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Dylan Just","slug":"dylan-just"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"12 essential skills for full-stack developers and the importance of learning"},"metaDescription":{"metaDescription":"What skills are required for a full-stack developer? We list 12 essential skills, and discuss the importance of learning, theory vs practice, depth vs breadth, and more."}},{"title":"Tiny takes security seriously","slug":"tinymce-security-tiny-takes-security-seriously","featured":false,"lastUpdated":"Jun 18th, 2020","description":{"description":"<p>When it comes to developing software for commercial use, more and more developers understand the importance of security. That&rsquo;s why, at Tiny, security is a top priority.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"When it comes to developing software for commercial use, more and more developers understand the importance of security. That’s why, at Tiny, security is a top priority."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Blurred code on a screen in shades of blue and purple.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAC3UlEQVQYGQXBWXIbVRQA0HvvG7s1tIbIsl0hwWX45CMbAJbC5tgLK+CDpChXKA+yJMtSD6/feDkHv/z0Z1L/htIq48/juvf86Spz8d5DcIG4num5RVOB9uE/RW4RbwxLCH6WrYRKCr2NXo9o1TxVSexDzjgBKChcLdTFK8+yy2eLVmsKyoWYhIwWSEymvwXp1CRrfZqu1GJjZFWkIYDcTM2miSkrQkclT+XK6BLimM9WhWosrbz93Nilr2ZY3JMxF5IyJMFoE6/2u/fHXTS4ksJnsc8Cz23K3gV6qIqcw1Jub9dJtiV/43gUuurf3pbLdYaOrJneX0P6x2BKPbQh+eQQxuVk0wUHaRjSkby/EMVFjZW1JLW2NQNgiZyHSsft9gdbT3JZBj9HqACwCyfOGGPq0kk0zRdrkjGCtDa2koILYGIq1LjQKDHVQKF/SSEQvkkGoXxRhwpmE5jLl13cbnqrts99XYnEBQAogI2nlkR/6WnYP/LYlmKAA6JJMVCeK64EZUl8/fe3/Uu86tMlcz+bbFPiflSa52UInGepba6nHMM1jEtM3OhFPR/5RBCSXJrVw/5xgMNmpST3h2758zYahIcXklkrdjpvgk8Kk6CJFcBdarvxGpcGUXxa/6Ht449XUdBUoTyf3Ptxh2wgBIgTlTPF6NuILl7RnUoip8vg9yqjAhJz/vXm47D54A+v34feiCwlcCUwO1fjZj31xEf0eWXWhc+ZDw1NyHReHUf9Jj/fWizr/dPj2J6QdIlcV0hlpmk305V3uzH/lS0dYbVQm1S6NiQWQ4/Pb/2zbD48PLx+jTmXchzHrwh6KJ0n7N25p+ucOZdXAtGVp5ZqJu/TxeAUi1jwR/zl7ncXWucjMFaVdcEpoRmCFLJ376v6DhFLLAKE4YmUiF7M8yrzSFzkyt6Mcg2VKFnUtjlcdmtzPwY/xL3FsuF7zEyFY+k4Bx2FT5e2HA/xe1sO/wOzBta69+xBfAAAAABJRU5ErkJggg==","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/2Zcdq5Pd0z0UVsJbHukFqR/54e32cfad87249c4c86e6cd5edf09405/Image_default_Security.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2Zcdq5Pd0z0UVsJbHukFqR/54e32cfad87249c4c86e6cd5edf09405/Image_default_Security.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2Zcdq5Pd0z0UVsJbHukFqR/54e32cfad87249c4c86e6cd5edf09405/Image_default_Security.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2Zcdq5Pd0z0UVsJbHukFqR/54e32cfad87249c4c86e6cd5edf09405/Image_default_Security.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2Zcdq5Pd0z0UVsJbHukFqR/54e32cfad87249c4c86e6cd5edf09405/Image_default_Security.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2Zcdq5Pd0z0UVsJbHukFqR/54e32cfad87249c4c86e6cd5edf09405/Image_default_Security.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2Zcdq5Pd0z0UVsJbHukFqR/54e32cfad87249c4c86e6cd5edf09405/Image_default_Security.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2Zcdq5Pd0z0UVsJbHukFqR/54e32cfad87249c4c86e6cd5edf09405/Image_default_Security.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2Zcdq5Pd0z0UVsJbHukFqR/54e32cfad87249c4c86e6cd5edf09405/Image_default_Security.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2Zcdq5Pd0z0UVsJbHukFqR/54e32cfad87249c4c86e6cd5edf09405/Image_default_Security.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"TinyMCE security: Tiny takes security seriously"},"metaDescription":{"metaDescription":"When it comes to developing software for commercial use, more and more developers understand the importance of security. That’s why, at Tiny, security is a top priority."}},{"title":"8 habits of successful development teams","slug":"habits-successful-developers","featured":false,"lastUpdated":"Jun 8th, 2020","description":{"description":"<p>Successful developers work well with other people, continually learn new skills, and build up their team. We talk about 8 regular habits for success as a developer.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Successful developers work well with other people, continually learn new skills, and build up their team. We talk about 8 regular habits for success as a developer."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Two developers working at a laptop.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAADeklEQVQYGQXB209bdQAH8O/vcm7taSltEToog7aUlg2miRbRTLPEeHlYjEs0vvlkjL6ZmBjjn+Db4ptvPpgZjcZkcxvbHERkGWQXrl0ZrJQWKPS0O2vp5fTc/HxIsLcXVOgJ9H//1Wf7+4WPP/8ynUofHB5c/e3W9GtvCCJnlDBKCUCNtsM5lwRKAODG9RvUcWzT7JQKedHsXrr4kXZ0BECRFUJcTohACaeUU8IoIaJICaGAQGlD16/P/k0d12kbHZ994vcp3lCgVCwAkBVZ4IS6LieUgzJQTqgASh2XOCAuyW5m/5z9i1uWZRndU31e7lr7hcLS8vKlTz4VRdF2zVrlWFZkAAAcx3Gsru3aTBBl2iw9vQmAd00bQDTSH/B7B2KJ3JMfNU0DyObRcf55QxS5LImEuJZpOrZrmt13L5zvuMLiykMA3DItAH6Jeny+odHY2Hi6fHio9gTF8KhXVS2bbVQsSqWhoPz6RG+rWU8mk6Ztb1VVABxwB3s8oWDIAkBIPDG2urqWSKVnJqOl506h4vxcbMIkX0zJo4NBveY8y+c1TfN4lbff+YADmEzG25b5ePNeyWA9geCpyEvFUikQGfo3V7uyZUARwBy/AkLcjmEcl/WNbHZx/vbQSJIDCAYC2sl+OnOhb+hcdOS0RxbvLT94nD9QqTMTJgKjeyb1K6xr2o1GY272ai6XBVDZz3MAtXLVAlfUwXhi1AUs25Ylsfp0rb9e9zOPqiq6jbbWs7DUS1r17779ZuG/hbm7dwzTZGAIl7uHxwfk1lZ8Mu4fiQqc91MrHomQk7orCWFVCooO6zQUxl6ZOnfm7ERVb+6UKnvPcvR9FnoTAylEC32kWq9z2+0cFMoL114Ud7fyxZmI+l4sEGPmbr6UyUyfnXqZAJIkp8fHAbAp4m8ztyDZN/fWW5ouPniydfnKbuV4OPNqKjOdGg679SOiBhOZ87HEGGfMNbvbO/n7y8vrKw/JhCfECZVMq9PtOmjOABIGNMhf//LD1IcXxdqutrGoh1KhWIoSqq/d316av/Zo+/Ift4cHAlx3OjOWd9j2Vbm1yuVFxnbadcMpv/XT7/5kIqq0OobtSKrRbrf0Wm1lrpx7VFzfRKdWrdk0DCEMUSKUwS3D2LObBjUBzN/9dfPOP+SkSrigBnoJF3zBkHT6TMsmhw0T4M36i/8BOASjZXmvKmUAAAAASUVORK5CYII=","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/2NQfs1Q4jjau62Xjmesxqk/88c25f3e7f6c73c45f7b2cbcbce04153/Image_default_8Habits.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/2NQfs1Q4jjau62Xjmesxqk/88c25f3e7f6c73c45f7b2cbcbce04153/Image_default_8Habits.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2NQfs1Q4jjau62Xjmesxqk/88c25f3e7f6c73c45f7b2cbcbce04153/Image_default_8Habits.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2NQfs1Q4jjau62Xjmesxqk/88c25f3e7f6c73c45f7b2cbcbce04153/Image_default_8Habits.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2NQfs1Q4jjau62Xjmesxqk/88c25f3e7f6c73c45f7b2cbcbce04153/Image_default_8Habits.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/2NQfs1Q4jjau62Xjmesxqk/88c25f3e7f6c73c45f7b2cbcbce04153/Image_default_8Habits.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/2NQfs1Q4jjau62Xjmesxqk/88c25f3e7f6c73c45f7b2cbcbce04153/Image_default_8Habits.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/2NQfs1Q4jjau62Xjmesxqk/88c25f3e7f6c73c45f7b2cbcbce04153/Image_default_8Habits.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/2NQfs1Q4jjau62Xjmesxqk/88c25f3e7f6c73c45f7b2cbcbce04153/Image_default_8Habits.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/2NQfs1Q4jjau62Xjmesxqk/88c25f3e7f6c73c45f7b2cbcbce04153/Image_default_8Habits.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Lee Newson","slug":"lee-newson"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"8 habits of highly successful developers and their teams"},"metaDescription":{"metaDescription":"Successful developers work well with other people, continually learn new skills, and build up their team. We talk about 8 regular habits for success as a developer. "}},{"title":"How to stay relevant as a software developer","slug":"software-developer-skills-stay-relevant","featured":false,"lastUpdated":"Jun 2nd, 2020","description":{"description":"<p>What skills do software developers need to stay relevant and up-to-date with the industry? Find out how to stay on top of the changes.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"What skills do software developers need to stay relevant and up-to-date with the industry? Find out how to stay on top of the changes."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Man sips a hot beverage from a yellow teacup, while sitting in front of an open laptop on a yellow table and reading a book.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAADQ0lEQVQYGQXBSW8bZRgA4Hf7vIztmYm3OCEGO5XTtKQ0BaJSFQISRUKoSIhLDz3CqRdOSAg4Fglx4weAygEOHBBSUbkgGkFVbFWQraUkRXGT1Dj1knoZe2zHMx/Pg+VfLhrmvJl9MxCkG7d2Hw1SSggRmVlERBSzEhFhZhEmBoD/du6Pho4oJRpCg856e2Pntw3r9v0ja+ZkNpePJ5NKKRFhFmEREWJmYmYBBAkw+IpUQNpd76lJu/hH5f0PfwCAuXQqfXzh8pUPIuk0EzOLYhFmFCZiYQYAJQJKESvxxn30w7VG70zqTHbeuPzW68qMDydsYRYWJhEWFkZmYWIWBC3MWhiFZcKKDIa635N3XyvMzMQsgqGdCYRjiEAkRERMzISMRMxEoH1m9kWQSFbuNLfLjvOvmk27u/uHdigSKQyN+EGzlUFAJAJCBEQkQgJE0IiIBKQB5b1P2gDRZ1K9825zrbwVMuPL48PgqIGY8QEYEJA0EQGNeq2wYWphANbISMw4MQsRqz3qb+48eOPcs6+8tMRmphUs+BglImYWZmHlOq2/bnzdrY4ms9Ou62jfR0IKMQUlHFBBAApHstv1cT2aP6JJ0AQAGrQG8LS3Wbr54OFaZ3DUdwelYqn2uIYoxLrpYRAxCFbuq5/hoy9Wy/tVAgJArRERibhWrdy8fs02nnt++ewTt3/104+73T4i04TUTF0dcxqMJYgSwNq3134sl3cAkViIlO/7W3/eSUli+fxyJDNZ2X80lZhPpqc8TeL73Smj1xsnPEcuvGqGQxeuf//NZ/XDi2+/bNkmESRgyOV/Tpw66yfNVnN/6+764tKMZXRwPGBSATOArp8cNJrHF4x3Ll2KmYnir9+tllaKtw/SUsoZm9bc09kXU63evb/Xt+9t7J077ZzK/x7wb2HISgonPc67wxB09q9+eWX+5EKjXkeiSDTmVn5KHX0+plzh9Fxq2m51FisPDxSsmvah5484GMkhRYnCSOL19ZP23rHCbCBsAGgkXN2o3C2uPO7a5er0XnOx4aRb3ZAzyg/whSEsYTS+gJJBPfA1OV0PhkMAC8ABKEEsA9o4ZmpFbddJ7rYyciKVjMdMIxK3bdM0/wckHD7pk1V58gAAAABJRU5ErkJggg==","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/PJYmjB39Nlq96Z4vODIYE/18726eacd95cd7302069bef2f488be9b/Image_default_StayRelevant.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/PJYmjB39Nlq96Z4vODIYE/18726eacd95cd7302069bef2f488be9b/Image_default_StayRelevant.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/PJYmjB39Nlq96Z4vODIYE/18726eacd95cd7302069bef2f488be9b/Image_default_StayRelevant.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/PJYmjB39Nlq96Z4vODIYE/18726eacd95cd7302069bef2f488be9b/Image_default_StayRelevant.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/PJYmjB39Nlq96Z4vODIYE/18726eacd95cd7302069bef2f488be9b/Image_default_StayRelevant.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/PJYmjB39Nlq96Z4vODIYE/18726eacd95cd7302069bef2f488be9b/Image_default_StayRelevant.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/PJYmjB39Nlq96Z4vODIYE/18726eacd95cd7302069bef2f488be9b/Image_default_StayRelevant.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/PJYmjB39Nlq96Z4vODIYE/18726eacd95cd7302069bef2f488be9b/Image_default_StayRelevant.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/PJYmjB39Nlq96Z4vODIYE/18726eacd95cd7302069bef2f488be9b/Image_default_StayRelevant.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/PJYmjB39Nlq96Z4vODIYE/18726eacd95cd7302069bef2f488be9b/Image_default_StayRelevant.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"How to stay relevant as a software developer: Skills, habits & more"},"metaDescription":{"metaDescription":"What skills do software developers need to stay relevant and up-to-date with the industry? Find out how to stay on top of the changes."}},{"title":"13 soft skills that will future proof your career as a developer","slug":"developer-soft-skills-career","featured":false,"lastUpdated":"May 24th, 2020","description":{"description":"<p>How can developers benefit from soft skills? Learn about the soft skills that can help software developers work better in teams and deliver better outcomes.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"How can developers benefit from soft skills? Learn about the soft skills that can help software developers work better in teams and deliver better outcomes."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"A stack of colored plastic cups, each a different color, forming a pyramid.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAMAAAAhxq8pAAACnVBMVEXd2tLg3tfi4drk493k497m5eDp6OPt7enq6uft7Onx8e/x8fDz8/H19vT3+Pj4+vr5+vv6+/z8/f7e3dbm5d/o5+Ls6+fs7OnFp43myqr19fT19/X3+Pf5+vr7/P39/v/h4Nnn5uHr6ubv7+zt6+jAgzftxZT6/Pn3+fj4+fn+///q6eTv7uva2NW4j2fpyq7x7vb4+fz6+/3////m5uDn5+aGioHIysfp4u3QvOj39/39/v7o5+Pr6+fy8vH5+Pjd3Nx3d23Q0tTn3/LKs+b39v7o6Obs7Ovu7ezu7uz29fXU3dabu6Krtayzz7LS4dHd0u3Mw+nl4Pjp6ejt7ezv7+7w8O/z9PP19vWCqI4AqkHE58t+2DPI+Y319veFXMnAqO7p6unt7uzx8vHv8O9amHMAr0Kl2q+D3ADG+2jl6uV7RMO6m+/9/P/p6+nt7+3v8PDx9fX05uX0kn/Tp5PK2r/dx1va5ZHJ6suu0OXNzuqmw+6t6vb6///q7Oru7+/w8fLy9/j01tX7PwD/r5b/6dX/0AD/9aPR3/Kh0fXs/P991+5n5fP2///s7e3v8PHx8vTx9ffvwL36UwD6mnj4z6n+0wD/64HBzeGi0/ba7ftvy+hv5vPr/P/t7u/z9vfi19jNPEHynpvUo6PUWWf507z8k5brl9Hp2O71vtvu5PGZueZ7puvy9//y9PX1+frawsTSAADxkJXCkJnfAG73t8j8SqD9kdz+v9r+stD/6/d9ieAXgOrq8/7s7evr6+rp6ujHqKfPAADkc3eycnvdR37oj5/2Vpn6jtT4ncH7ttD02OqAi9Vom+3o8P3g393f3tvg4N3Y1NPdysvn1tfg19np2t/v5Obz4uj46vX38Pb58vf9+v32+Pr1+P0Xd05GAAAAuElEQVQYGV3BMUoDQRiG4e/V32Ky/usGIYgJEWzERhCsRDyA2OZKOUaO4QEsPEQ6w4LYaMKOTCPqmKgwPg8i+9yisP9KX+JbdCB6dPPlOGo1IqvhCTjQdjfuVdVH0w52svZ45VV45yKl2B0+n7LWqgpKXDFfjoZsvChLsh7n3J+w4Y9SksyBW35pzWo6f9vlx+WDQpI5NXv8ubmTZA0lKSRrKCljtjiiMFWyxRklKdg1/0iyPqWJpC+fnCphPHehMgAAAABJRU5ErkJggg==","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/5JI6NTpdUsbj4rD49IyJJK/a7ac4ceed24edb35de056299e55b71d2/Image_default_DeveloperSoftSkills.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/5JI6NTpdUsbj4rD49IyJJK/a7ac4ceed24edb35de056299e55b71d2/Image_default_DeveloperSoftSkills.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5JI6NTpdUsbj4rD49IyJJK/a7ac4ceed24edb35de056299e55b71d2/Image_default_DeveloperSoftSkills.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5JI6NTpdUsbj4rD49IyJJK/a7ac4ceed24edb35de056299e55b71d2/Image_default_DeveloperSoftSkills.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5JI6NTpdUsbj4rD49IyJJK/a7ac4ceed24edb35de056299e55b71d2/Image_default_DeveloperSoftSkills.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/5JI6NTpdUsbj4rD49IyJJK/a7ac4ceed24edb35de056299e55b71d2/Image_default_DeveloperSoftSkills.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/5JI6NTpdUsbj4rD49IyJJK/a7ac4ceed24edb35de056299e55b71d2/Image_default_DeveloperSoftSkills.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/5JI6NTpdUsbj4rD49IyJJK/a7ac4ceed24edb35de056299e55b71d2/Image_default_DeveloperSoftSkills.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/5JI6NTpdUsbj4rD49IyJJK/a7ac4ceed24edb35de056299e55b71d2/Image_default_DeveloperSoftSkills.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/5JI6NTpdUsbj4rD49IyJJK/a7ac4ceed24edb35de056299e55b71d2/Image_default_DeveloperSoftSkills.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Future proof your career as a developer with soft skills"},"metaDescription":{"metaDescription":"How can developers benefit from soft skills? Learn about the soft skills that can help software developers work better in teams and deliver better outcomes."}},{"title":"Facing your fears: marketing for developers","slug":"marketing-for-developers-facing-your-fears","featured":false,"lastUpdated":"May 17th, 2020","description":{"description":"<p>These days, everyone&rsquo;s a marketer - even developers. But that doesn&rsquo;t mean marketing comes easy. We talk about the fear of marketing and how devs can overcome it.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"These days, everyone’s a marketer - even developers. But that doesn’t mean marketing comes easy. We talk about the fear of marketing and how devs can overcome it."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Person standing on a rickety wooden bridge over rushing water.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAADN0lEQVQYGQXBSXPbVAAA4LfqvSdZkuU6jp3GdZuQkpYpHMp0ynKAwgCX/hL+BEd+DqdeywUO0Bn2dCENTeM4XiVrtaW38X0QffX43m6ng4tIF48+/PqHpz998+izdDU92usFQaCNraoqy/Pu8NYkSYbRzqyov/3ue8BccGOPhDuR3/H3WqLHD1p+cHx8G1gloEL1ul4lUus0LwkLHIKVrBlzDgc3Pv70wc/zJdntkA9Gg0FLHHaj0bWeq8DRO7dkntebQmoRZ9tGWSFaNYCtVnBzAAgEQoj37tyud/xeOyD3R8PdIDgcjELhllcX3Ohhr49H+z6U3G9vypJQWikruCi3tbVmlixJyN51+9pCMoiirt92hYsQghAooCmjrUCkr56l66WBKJ6Oewf3jJKUINDI385f5aZR0KZNQzp+yBynljVGGGHkCTcrM9RoolJGpQW4stk2nVZCvLy6PN4ZMEoYxR0qhgEh3OGUEIwwdxh0+M3+sFzHnSgwjqBeCCDkvVhTHpfFWjYIEU6J65CQc5+5KCnWCCHOOLAWQogRjoJ25LWCoE1N42IbtdsIAkCY53rUcdpey3OYNkYaRcaLBUUkr8rrfqiUxErKpl6um/TN6QYg3vJhVUnhGUS5w4ySDiaMUAyRMgb3Hz5YlwVBsCtcWZWFlKtkNZ5egHRpINQQlsnaUAdTR0Hraas4q43hxFFGY3B8Rxszr/KjMFosJrOyKLebeDEJAdhUuS841mqjpPAjQKjJcuC1tkZbaxlm6GS+Ok2ySVY0dRPnOYBIWb2/d/08LV9n20ma/f78X869pq6VNvNVjCwgiBBE4qJAo/5OA0y5bZpGptVGa1PVNdUypHwXgO3lxTQtqNF1medVcXE1s9oEwncd92y1JB6A60aerLIqyyfxWrS7s8vLl2/P8WR59+F9TboUVH88fxHu7dswnMdJmud/vn0zzbKqlmQ8jym0vFJlmp7Nlpj5vzz56+RvDfavsc3s/cD95zyrLl58+Xn37hefxOtksVo+G19e5ZsAYpKVW8od7rmTxWo8j0+XZnYmwcABuKn/S361FjAHdPs/vq4OPtoqqaC2kSOoi8qq+R9UwczQPWD9rwAAAABJRU5ErkJggg==","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/1itszOsRAXmbc7Zac7noOy/4121db9f80d7cca4e9753b5b9aae5696/Image_default_FaceFears.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1itszOsRAXmbc7Zac7noOy/4121db9f80d7cca4e9753b5b9aae5696/Image_default_FaceFears.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1itszOsRAXmbc7Zac7noOy/4121db9f80d7cca4e9753b5b9aae5696/Image_default_FaceFears.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1itszOsRAXmbc7Zac7noOy/4121db9f80d7cca4e9753b5b9aae5696/Image_default_FaceFears.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1itszOsRAXmbc7Zac7noOy/4121db9f80d7cca4e9753b5b9aae5696/Image_default_FaceFears.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1itszOsRAXmbc7Zac7noOy/4121db9f80d7cca4e9753b5b9aae5696/Image_default_FaceFears.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1itszOsRAXmbc7Zac7noOy/4121db9f80d7cca4e9753b5b9aae5696/Image_default_FaceFears.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1itszOsRAXmbc7Zac7noOy/4121db9f80d7cca4e9753b5b9aae5696/Image_default_FaceFears.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1itszOsRAXmbc7Zac7noOy/4121db9f80d7cca4e9753b5b9aae5696/Image_default_FaceFears.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1itszOsRAXmbc7Zac7noOy/4121db9f80d7cca4e9753b5b9aae5696/Image_default_FaceFears.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Marketing for developers: How to face your fears"},"metaDescription":{"metaDescription":"These days, everyone’s a marketer - even developers. But that doesn’t mean marketing comes easy. We talk about the fear of marketing and how devs can overcome it."}},{"title":"Why every developer should write a blog","slug":"developer-blog-writing-social-networks","featured":false,"lastUpdated":"May 5th, 2020","description":{"description":"<p>Why should developers write blogs or post on social media? Whether you&rsquo;re freelance or looking to advance your career, creating your own content has a lot of benefits.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Why should developers write blogs or post on social media? Whether you’re freelance or looking to advance your career, creating your own content has a lot of benefits."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Woman with red hair, black top, and blue jeans sits on a blue armchair and looks at her laptop screen. The back of the screen is covered in stickers including the hashtag #LoveTwitter.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAADXElEQVQYGTXBy2tcVRwA4N8595z7zkwyN5nJJM6kaRttE2shlmARxOJCFyVFRFxYEIRu3AuCG/+DKkgXCoo7oYhdiKAIdSGlhoRJmkQnNrEmM0nam3ncuTNzH+d17abfh775/GMVdjqp9tWd1d3tB8vvvH39g/de8lj77q3GPluv1+3XbuBckSWxFIJzxjkXnKcJS9OUSCnhKWp6pdLJSaVcLpXyJvb/6KeFxatvli48rK2ub0pvqBDKMiUlAHDOg26YxjFhjGOlMk33isWJyU7B8yYcI1rf6Hdpt59glVXLeTXxArYcJTjnQjccztmd73+4v1Ijw2FCpGA6s2yozE7mR8cIxv/t7kWdMm+1bWq1h/zUK8+NT00LxjjnhBhRPKzNTt1fqREuJMF4OAykaI2OScuxmMy2Dw6Okokzjstkst9o6k+OLlycx4AzJTOAQUQrU2MAQJTKEMXUtWdyRZ5GlNKEqXs78GN97dXlq3OnZ5oD9fvNL03bnls4pzRtxB0lhEqlCgBYSglIi1NBdD0ViqgQVNzAswCwtbbRawd3Hxzd22nvrtbQk0bOzaciC/oJ1ogDgCHLQCMScLvlb29vTuQtnWJgPgCs1VY2/q43Tk4AgFomCN4LesNYmIycxmM5AKJpCBM6iAb5wviN6x95laoy6Puf3LqWcIJBUvzZFy/rbDBnJQkaMag97lWD7HFkIrcCJAMAqiOsowxfen4h0GSiWReXLg2Dtmu7hmFKqdzeYeGvX5q9kbXN3ShcpzqpP/bDEAhXwBU2bYdxHoedFIFWsE1QiGKHIoozrgQz3FZ5kRPtt9u/3v7uW3gGywzFLIvjAUaqb+lYd32/mwqYmpzOFDyFEZa6OSifVZZtKAbPEADMkiSJU9vxELWBoajPcwZkcRCGfSUlACAEmVKCSS5UYIzC0hUzPwYAAoDkF9/SX1ySTPS31oJ2iAVmQB/t1KdmZ+YX5qOEKwX7Pv/XT0eoqi6/++mH442Y+3sPd76+SaqX33jkesdbG37j8MqZ6tm5uZTzlBqmaQ4S1g6SLFPjI8jJuUfNlk7puelyVXdXyxXpN4nQyF4Q/nPS/fOwU/zp5/OLl6Xlse5xz2+ipE/yRQ6aaB0QjJrHx9Hry+dnT5UsR2cJ1+j/mL7YsyV93EYAAAAASUVORK5CYII=","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/lOZNyY8P0M6dnhhv2GrYZ/1d90b43562d44cc60a524570b11b9c04/Image_default_DevelopersBlogging.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/lOZNyY8P0M6dnhhv2GrYZ/1d90b43562d44cc60a524570b11b9c04/Image_default_DevelopersBlogging.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/lOZNyY8P0M6dnhhv2GrYZ/1d90b43562d44cc60a524570b11b9c04/Image_default_DevelopersBlogging.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/lOZNyY8P0M6dnhhv2GrYZ/1d90b43562d44cc60a524570b11b9c04/Image_default_DevelopersBlogging.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/lOZNyY8P0M6dnhhv2GrYZ/1d90b43562d44cc60a524570b11b9c04/Image_default_DevelopersBlogging.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/lOZNyY8P0M6dnhhv2GrYZ/1d90b43562d44cc60a524570b11b9c04/Image_default_DevelopersBlogging.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/lOZNyY8P0M6dnhhv2GrYZ/1d90b43562d44cc60a524570b11b9c04/Image_default_DevelopersBlogging.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/lOZNyY8P0M6dnhhv2GrYZ/1d90b43562d44cc60a524570b11b9c04/Image_default_DevelopersBlogging.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/lOZNyY8P0M6dnhhv2GrYZ/1d90b43562d44cc60a524570b11b9c04/Image_default_DevelopersBlogging.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/lOZNyY8P0M6dnhhv2GrYZ/1d90b43562d44cc60a524570b11b9c04/Image_default_DevelopersBlogging.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Why developers should write: From developer blogs to social media"},"metaDescription":{"metaDescription":"Why should developers write blogs or post on social media? Whether you’re freelance or looking to advance your career, creating your own content has a lot of benefits."}},{"title":"How to increase developer productivity: 15 tips to get more done","slug":"developer-productivity","featured":false,"lastUpdated":"Apr 30th, 2020","description":{"description":"<p>Looking for ways to boost your team&rsquo;s productivity? We share 15 ideas including how to measure developer productivity, along with useful tools and best practices.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Looking for ways to boost your team’s productivity? We share 15 ideas including how to measure developer productivity, along with useful tools and best practices."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Photograph of honeycomb with honey bee at work on top.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/3M114CzdkBjj5Maljt3vOA/3b051a266bda0a85bed916d64ec5b4ab/Bee.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/3M114CzdkBjj5Maljt3vOA/3b051a266bda0a85bed916d64ec5b4ab/Bee.jpg?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3M114CzdkBjj5Maljt3vOA/3b051a266bda0a85bed916d64ec5b4ab/Bee.jpg?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3M114CzdkBjj5Maljt3vOA/3b051a266bda0a85bed916d64ec5b4ab/Bee.jpg?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3M114CzdkBjj5Maljt3vOA/3b051a266bda0a85bed916d64ec5b4ab/Bee.jpg?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/3M114CzdkBjj5Maljt3vOA/3b051a266bda0a85bed916d64ec5b4ab/Bee.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/3M114CzdkBjj5Maljt3vOA/3b051a266bda0a85bed916d64ec5b4ab/Bee.jpg?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3M114CzdkBjj5Maljt3vOA/3b051a266bda0a85bed916d64ec5b4ab/Bee.jpg?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3M114CzdkBjj5Maljt3vOA/3b051a266bda0a85bed916d64ec5b4ab/Bee.jpg?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3M114CzdkBjj5Maljt3vOA/3b051a266bda0a85bed916d64ec5b4ab/Bee.jpg?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"15 tips to increase developer productivity | TinyMCE"},"metaDescription":{"metaDescription":"Looking for ways to boost your team’s productivity? We share 15 tips on how to improve developer productivity from our own software developers and team leaders."}},{"title":"Continuously refactoring 100000 lines of code","slug":"modern-javascript-refactoring-tinymce","featured":false,"lastUpdated":"Apr 28th, 2020","description":{"description":"<p>Tiny has adopted a continuous improvement process to move TinyMCE to modern JavaScript. Read how we are continuously refactoring 100000 lines of code.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiny has adopted a continuous improvement process to move TinyMCE to modern JavaScript. Read how we are continuously refactoring 100000 lines of code."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"An evolution of the JavaScript logo (JS) to the TypeScript logo (TS), with a made up logo that looks like a combination of the two in between.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAACmklEQVQYGU3BQWtcVRgG4Pf9zrl3ZpLppDVJaULEhSml0E1woSLYf+DGjeDWH1Vw4x8Qdyq4FetGG7WV0DZq0SYanYakmczce873vSbgwufh1s5HAPq+RMjdAZAEIAn/Y2Y5pwsSpJBkyXIpXa0RHgA8wkgBNCokgISEZExG99J3XUhNTimnqJ5rX0p1EpckgW3bmlmttZRCs0HTNG0CWPrKbBFuJkWVlFMiaQAHg7bvewDJSGPOyQxm1uTk7qWvEWGJyUiqaRpF5Fp6kAAWi8g5Cexrra7zvi41aTRAP++6k1O45yaxMeQG7TAIGrPkZmlRfDYPhCEATzgmEKfwU/Tp1rq9/U4yBi8Yz160T7+TXED2Whe1zl9iPGEynZz76hX/5ONu6Wp6Mp08mb7y1f2NHzffLbAFAEs4/u3az98geQ1kjzovxDx9dm966/WXVHz7YHzz9gqu3jg6vN6OV2cPFttZH95ePpk7LX3+A/a7ujy0nJKlRJhhHq9uzDbWD5rm2WQ8++noxjw+WB29d2fl7v7ZcOrx1s3JzmvL77+5/sZaW/86VzjkpqioPVAkf/5nfbQ3O/zbfz3dejGb7B+ltdHmznBy3GnvYPHoYNFXba8PgRpR3UsOL5CQ+OkXV5aG27X6L7+3jx8+373/5dMjbg5Wdh/uYW16749m5tr9evD9s0NcawlRwcnW3eIxL8Q/GQhAgIACdLgUk+tDq93srJa+A8DReLQySimRzIqaoMnA+o3eQwTabIkNkAnQSIAcLC9FXwoAkkDIQ2RWVDOGV5MSaBcQECQBiEBcECAZCRIKAQIgZKPCPSJAmBkVkJEE9J8QCZJmBESjh0cEwey1Ey4ZCQmA3EVCCskjABgJMoKXYFRkQyj+BQZQpzRxkkpaAAAAAElFTkSuQmCC","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/3194qQ7O0Fx9mJSzNE3nUx/07e28e06b2cb9573186a2586d8786bd6/Image_default_ModernJavascript.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/3194qQ7O0Fx9mJSzNE3nUx/07e28e06b2cb9573186a2586d8786bd6/Image_default_ModernJavascript.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3194qQ7O0Fx9mJSzNE3nUx/07e28e06b2cb9573186a2586d8786bd6/Image_default_ModernJavascript.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3194qQ7O0Fx9mJSzNE3nUx/07e28e06b2cb9573186a2586d8786bd6/Image_default_ModernJavascript.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3194qQ7O0Fx9mJSzNE3nUx/07e28e06b2cb9573186a2586d8786bd6/Image_default_ModernJavascript.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/3194qQ7O0Fx9mJSzNE3nUx/07e28e06b2cb9573186a2586d8786bd6/Image_default_ModernJavascript.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/3194qQ7O0Fx9mJSzNE3nUx/07e28e06b2cb9573186a2586d8786bd6/Image_default_ModernJavascript.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/3194qQ7O0Fx9mJSzNE3nUx/07e28e06b2cb9573186a2586d8786bd6/Image_default_ModernJavascript.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/3194qQ7O0Fx9mJSzNE3nUx/07e28e06b2cb9573186a2586d8786bd6/Image_default_ModernJavascript.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/3194qQ7O0Fx9mJSzNE3nUx/07e28e06b2cb9573186a2586d8786bd6/Image_default_ModernJavascript.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Joakim Lindkvist","slug":"joakim-lindkvist"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Moving TinyMCE to Modern Javascript"},"metaDescription":null},{"title":"5 tips for building successful agile development teams","slug":"tips-for-agile-development-teams","featured":false,"lastUpdated":"Apr 16th, 2020","description":{"description":"<p>What is agile development? How are agile teams structured? We cover all the basics and 5 key tips to agile success within your dev teams.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"What is agile development? How are agile teams structured? We cover all the basics and 5 key tips to agile success within your dev teams."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Four people meet in a room in front of a cork board covered in notes. They’re smiling at each other as they sit or stand at a table with laptops, notepads, and pens.","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/4Hlc7ucsf6Mu8kyW56XL39/2fa25f943eb0d408e5476f7e498b35c8/woman-wearing-gray-shirt-3184298-cropped.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4Hlc7ucsf6Mu8kyW56XL39/2fa25f943eb0d408e5476f7e498b35c8/woman-wearing-gray-shirt-3184298-cropped.jpg?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4Hlc7ucsf6Mu8kyW56XL39/2fa25f943eb0d408e5476f7e498b35c8/woman-wearing-gray-shirt-3184298-cropped.jpg?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4Hlc7ucsf6Mu8kyW56XL39/2fa25f943eb0d408e5476f7e498b35c8/woman-wearing-gray-shirt-3184298-cropped.jpg?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4Hlc7ucsf6Mu8kyW56XL39/2fa25f943eb0d408e5476f7e498b35c8/woman-wearing-gray-shirt-3184298-cropped.jpg?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4Hlc7ucsf6Mu8kyW56XL39/2fa25f943eb0d408e5476f7e498b35c8/woman-wearing-gray-shirt-3184298-cropped.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4Hlc7ucsf6Mu8kyW56XL39/2fa25f943eb0d408e5476f7e498b35c8/woman-wearing-gray-shirt-3184298-cropped.jpg?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4Hlc7ucsf6Mu8kyW56XL39/2fa25f943eb0d408e5476f7e498b35c8/woman-wearing-gray-shirt-3184298-cropped.jpg?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4Hlc7ucsf6Mu8kyW56XL39/2fa25f943eb0d408e5476f7e498b35c8/woman-wearing-gray-shirt-3184298-cropped.jpg?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4Hlc7ucsf6Mu8kyW56XL39/2fa25f943eb0d408e5476f7e498b35c8/woman-wearing-gray-shirt-3184298-cropped.jpg?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Ben Long","slug":"ben-long"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":{"metaTitle":"Agile development teams: Practices, roles, and structure"},"metaDescription":{"metaDescription":"What is agile development? How are agile teams structured? We cover all the basics and 5 key tips to agile success within your dev teams."}},{"title":"3 tips to improve TinyMCE performance in the cloud","slug":"3-tips-to-improve-tinymce-performance-in-the-cloud","featured":false,"lastUpdated":"Nov 18th, 2019","description":{"description":"<p>Three tips to increase the performance of TinyMCE running on the cloud and take full advantage of our new CDN infrastructure.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Three tips to increase the performance of TinyMCE running on the cloud and take full advantage of our new CDN infrastructure."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Abstract illustration of a person standing at production line","artistName":"Sanni Sahil","image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAACtUlEQVQoz1XMOW9cZRSH8f9Z7jKLfccTsBNT2KBEICJFIhVFoIKCkg/AB6SjRVTUhkA6FMlgBQWHwR57PMtd3vecQwESovlVjx768dOfRcACkWAJYTCHCFiDI0TAFUSC9Z/gf6obEQIAHDBAwW9LIHxtelJxCX/dUwAAgYD4Twp2gxt5AjVCR4UneFAQ5YH62YiORmGIpoiCPcON3OFO7nAjdiczWIfiYTX7bB61pDdmV7br+fzrtn+xlMqDyIy2pOukaUf/XgzqRgAg2D7v8sK8Dw7qelqlav8pFSeua1v9ardrHX9eyy7HnY6HoUqGIHaDO4LIB+ovsgfTsVyFLv6Q6eNGT+ZV7ZMTq59S+9Nt8deq/oBTITYtnEidiIXkkNmDA8xonu1PGh19c737/nL9TpIPtf7k/uzVhrDTVNKLG21YH8/kF1NP8JIiEY1FKkhByTQv49GXk2wjW2H00UwbxcpbIVfncc20pfPX5axUy4FNIILHrPNSFO1vm9mjrimq/mAynDbmA51dytLldIIu2aJzH7sV3i/VnQiRV7H+vfeP4/4XZXd7s7i5rC72dkeHUTmfXTXFRp7s05i689bPu9GzveJ4v/3O1Z0QGHY0/6qYHgVyV+dMfvDybFqN+nK5OHh3iIeFNVVeWb5xBHXPt/mioxTqhmyUnMsmdNNuf8h3XL11zx48qdqbVB9b8X7T35u6KVKq3pvmcevXQ/4zSwF1g45pb07p22HXSDxocrYhVZPTaX2QfGetjeKVo2+RjYaQPUUgVoObq4NCOAVCy34gvczlPu+83p61vkyx8uowVXNlBsGJnTrnCAY7hXpFxh53sBV0DJtQuvPYOu1CCkiJ4U22ZdYJacNkzimYgymEoe6RriFAFOEd+NYZIQopEEweAIMMeRORTSaIiBgCAgj+BljOvHkI1NZsAAAAAElFTkSuQmCC","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/4tMojlaPQtZyX7oiawtwXu/fdcee45a2bd08b2d1c7bfa74e46e6ff5/Image_default_machine.png?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/4tMojlaPQtZyX7oiawtwXu/fdcee45a2bd08b2d1c7bfa74e46e6ff5/Image_default_machine.png?w=185&h=152&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4tMojlaPQtZyX7oiawtwXu/fdcee45a2bd08b2d1c7bfa74e46e6ff5/Image_default_machine.png?w=370&h=304&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4tMojlaPQtZyX7oiawtwXu/fdcee45a2bd08b2d1c7bfa74e46e6ff5/Image_default_machine.png?w=739&h=607&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4tMojlaPQtZyX7oiawtwXu/fdcee45a2bd08b2d1c7bfa74e46e6ff5/Image_default_machine.png?w=896&h=736&q=50&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/4tMojlaPQtZyX7oiawtwXu/fdcee45a2bd08b2d1c7bfa74e46e6ff5/Image_default_machine.png?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/4tMojlaPQtZyX7oiawtwXu/fdcee45a2bd08b2d1c7bfa74e46e6ff5/Image_default_machine.png?w=185&h=152&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/4tMojlaPQtZyX7oiawtwXu/fdcee45a2bd08b2d1c7bfa74e46e6ff5/Image_default_machine.png?w=370&h=304&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/4tMojlaPQtZyX7oiawtwXu/fdcee45a2bd08b2d1c7bfa74e46e6ff5/Image_default_machine.png?w=739&h=607&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/4tMojlaPQtZyX7oiawtwXu/fdcee45a2bd08b2d1c7bfa74e46e6ff5/Image_default_machine.png?w=896&h=736&q=50&fm=webp&fit=scale 896w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Tim Dettrick","slug":"tim-dettrick"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null},{"title":"Charting with TinyMCE and Highcharts","slug":"charting-with-tinymce-and-highcharts","featured":false,"lastUpdated":"Oct 10th, 2018","description":{"description":"<p>Highcharts makes it easy to add beautiful, interactive charts to TinyMCE. The Tiny team is proud to introduce Highcharts as one of our Technical Partner Program launch partners.</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Highcharts makes it easy to add beautiful, interactive charts to TinyMCE. The Tiny team is proud to introduce Highcharts as one of our Technical Partner Program launch partners."}]}],"data":{"quirksMode":false}}}},"heroImage":{"alt":"Tiny Partner Highcharts","artistName":null,"image":{"fluid":{"base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAGABQDAREAAhEBAxEB/8QAFgAAAwAAAAAAAAAAAAAAAAAABQcI/8QAIxAAAgEDAwUBAQAAAAAAAAAAAQIDBAURBgchABIiMWEIE//EABcBAQADAAAAAAAAAAAAAAAAAAcEBgj/xAAlEQACAAUDAwUAAAAAAAAAAAABAgADBBFBBSFRBhIxE2GBofH/2gAMAwEAAhEDEQA/ADWxP651xYdyp73qS61GobZeqgLXW928IskBWgUnEfbnGBgEe+eelzWdJozTCVIQKUGxyeb83/IHpHUdTS1oeeSyObEccW4t95i693ty6rQNkpVpQZq+7SslLKyALTr2gnPPkRzj6fnRQig3JxFq6p119FpV9IXeYe1TgbXufjx7wkYKh50/rMxllclndzksT7J6jPUsTtGf2mtMYu5uT5JyY//Z","aspectRatio":3.5555555555555554,"src":"//images.ctfassets.net/s600jj41gsex/1dfahjeX2JWq6jfH9340oH/01042bca83f8eac5257135ccdfe53f50/tiny-partner-blog-header-highcharts-1024x288.jpg?w=739&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1dfahjeX2JWq6jfH9340oH/01042bca83f8eac5257135ccdfe53f50/tiny-partner-blog-header-highcharts-1024x288.jpg?w=185&h=52&q=50&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1dfahjeX2JWq6jfH9340oH/01042bca83f8eac5257135ccdfe53f50/tiny-partner-blog-header-highcharts-1024x288.jpg?w=370&h=104&q=50&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1dfahjeX2JWq6jfH9340oH/01042bca83f8eac5257135ccdfe53f50/tiny-partner-blog-header-highcharts-1024x288.jpg?w=739&h=208&q=50&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1dfahjeX2JWq6jfH9340oH/01042bca83f8eac5257135ccdfe53f50/tiny-partner-blog-header-highcharts-1024x288.jpg?w=1024&h=288&q=50&fit=scale 1024w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1dfahjeX2JWq6jfH9340oH/01042bca83f8eac5257135ccdfe53f50/tiny-partner-blog-header-highcharts-1024x288.jpg?w=739&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1dfahjeX2JWq6jfH9340oH/01042bca83f8eac5257135ccdfe53f50/tiny-partner-blog-header-highcharts-1024x288.jpg?w=185&h=52&q=50&fm=webp&fit=scale 185w,\n//images.ctfassets.net/s600jj41gsex/1dfahjeX2JWq6jfH9340oH/01042bca83f8eac5257135ccdfe53f50/tiny-partner-blog-header-highcharts-1024x288.jpg?w=370&h=104&q=50&fm=webp&fit=scale 370w,\n//images.ctfassets.net/s600jj41gsex/1dfahjeX2JWq6jfH9340oH/01042bca83f8eac5257135ccdfe53f50/tiny-partner-blog-header-highcharts-1024x288.jpg?w=739&h=208&q=50&fm=webp&fit=scale 739w,\n//images.ctfassets.net/s600jj41gsex/1dfahjeX2JWq6jfH9340oH/01042bca83f8eac5257135ccdfe53f50/tiny-partner-blog-header-highcharts-1024x288.jpg?w=1024&h=288&q=50&fm=webp&fit=scale 1024w","sizes":"(max-width: 739px) 100vw, 739px"}}},"author":{"name":"Christer Vasseng","slug":"christer-vasseng"},"category":{"title":"Developer Insights","slug":"engineering"},"metaTitle":null,"metaDescription":null}]},"description":{"description":"<p>If you&rsquo;re playing around in the real-time collaboration space, you&rsquo;re likely to come across these terms: operational transformation (OT) and conflict-free replicated data type (CRDT). But what do they really mean? And which one should you use?</p>","childMarkdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If you’re playing around in the real-time collaboration space, you’re likely to come across these terms: operational transformation (OT) and conflict-free replicated data type (CRDT). But what do they really mean? And which one should you use?"}]}],"data":{"quirksMode":false}}}},"tags":[{"slug":"engineering","title":"Engineering"},{"slug":"collaboration","title":"Collaboration"}],"body":{"body":"<blockquote>From January 2023, TinyMCE no longer offers Real-Time Collaboration (RTC) for new customers. For Existing customers, we'll be in contact to discuss options. Please reach out to your Account Manager if you are a customer using RTC, and you have any questions about the plugin.</blockquote>\n<blockquote>\n<p dir=\"ltr\">This is the first in a series of blog posts documenting the TinyMCE RTC journey and decisions along the way. Next post: <a href=\"https://www.tiny.cloud/blog/real-time-collaborative-editing-slate-js\" target=\"_blank\" rel=\"noopener\">Collaboration needs a clean Slate</a>.</p>\n</blockquote>\n<p dir=\"ltr\">If you dig below the surface of any real-time collaboration solution you're likely to start hearing about the terms OT (Operational Transformation) and CRDT (Conflict-free Replicated Data Type). For a team trying to <em>build</em> a real-time collaboration solution, the first question to ask is \"which of these two acronym mouthfuls should I use\"? Followed quickly by \"what on earth do these acronym mouthfuls mean\"?</p>\n<p dir=\"ltr\">The full response to these questions took me about a month to answer. There is a vast collection of reading material available; navigating that rabbit hole was a fun journey. I will include links at the end to the research and reading material I used to form my conclusions.</p>\n<p dir=\"ltr\">At a very high level, this is what we're dealing with:</p>\n<ul>\n<li dir=\"ltr\" role=\"presentation\">OT relies on an active server connection (not quite correct but we'll get to that in a moment) to coordinate and guarantee all clients operate correctly.</li>\n<li dir=\"ltr\" role=\"presentation\">CRDT is capable of working peer-to-peer with end-to-end encryption; if a server is used at all it only needs to coordinate connections between clients. It is resilient to transient network connections. It even works if clients go offline for a period of time, make changes, and synchronise when the network returns.</li>\n</ul>\n<p dir=\"ltr\">Sounds like an easy decision, right? Isn't CRDT the obvious and (for privacy reasons) the only sane choice? Well, nothing's ever that easy. There is a reason Google, Microsoft, CKSource and many others depend on OT. Tiny has chosen to also build our solution around OT; I'd like to discuss the difference between these two algorithms in more detail and how the CRDT caveats lead us to stick with OT.</p>\n<h2 dir=\"ltr\">Collaboration Algorithms</h2>\n<p dir=\"ltr\">The general theory of collaboration algorithms is to transmit changes between users with the goal of \"eventual consistency\". If multiple users make changes at the same time their copies of the document might look different for a while, but eventually every user's view will converge to be the same. This is done through what I call a \"baseline\"; incoming changes are integrated into the local data to form new baselines and local changes are sent based on the current baseline.</p>\n<p dir=\"ltr\">The difficulty in collaboration rises from the restriction that clients cannot check whether the baseline they've calculated is the same as other clients. To do so would require collaboration on top of collaboration and it's <em>turtles all the way down</em>. The smallest bug in a collaborative implementation can lead to divergence; in a rich text editor diverged documents will quickly lead to nonsensical changes as operations are passed around. The CKEditor team wrote a really nice post about <a href=\"https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/\" target=\"_blank\" rel=\"noopener nofollow\">what can go wrong in diverged documents</a> last year.</p>\n<p dir=\"ltr\">This is starting to sound like an impossible problem, but after 30 years of research the established technology for simple collaboration cases is very mature. When the TinyMCE development team began investigating various technologies for collaboration, the editor was able to collaborate on unformatted paragraphs (using plain text transformations) within <em>days</em>.</p>\n<h2 dir=\"ltr\">Operational Transform (OT)</h2>\n<p><a href=\"https://en.wikipedia.org/wiki/Operational_transformation\" target=\"_blank\" rel=\"noopener\">Operational Transformation</a>, originally proposed in 1989, has had many forms over the years. The original vision did not require a server at all. However, as more and more research was published on the topic, and most of it was proven wrong, it became clear that OT had too many edge cases.</p>\n<p>&nbsp;</p>\n<p><img style=\"display: block; margin-left: auto; margin-right: auto;\" src=\"https://images.ctfassets.net/s600jj41gsex/3uTL8JEqiqecKDjugRtcdO/78568b05622cc3d0fdbb0b46d09ccf1d/Screen_Shot_2019-11-29_at_2.10.39_pm.png\" alt=\"\" width=\"1093\" height=\"818\" /></p>\n<p>Credit: <a href=\"https://www.infoq.com/presentations/crdt-distributed-consistency/\" target=\"_blank\" rel=\"noopener\">Martin Kleppmann, 2018</a></p>\n<p dir=\"ltr\">&nbsp;</p>\n<p dir=\"ltr\">In OT, every user action is broken down into one or more operations. These operations are transmitted between clients along with their baseline reference; if two users perform actions at the same time, incoming operations must be transformed to include the local operations that have happened since that baseline. They are then applied locally and form the new baseline.</p>\n<p dir=\"ltr\">This constant transformation of operations turned out to have too many edge cases where clients were found to not produce the same baseline (the \"wrong\" papers above). When that happens, the clients will never converge on the same result and break the fundamental assumption of collaboration.</p>\n<p dir=\"ltr\">Only two reliable forms of OT have survived the test of time:</p>\n<ul>\n<li dir=\"ltr\" role=\"presentation\">Server-based OT, splitting multi-user collaboration into groups where each client pairs individually with the server. The server coordinates the document state and operation list to ensure that transformation only ever occurs within these pairs, thus avoiding the complexity (and edge cases) of three-way transforms.</li>\n<li dir=\"ltr\" role=\"presentation\">OT with what's known as \"transform property 2\". CP2/TP2 finally gave the community a provably correct multi-way transformation algorithm, but it turned out to be <em>so complex</em> that very few data structures have working TP2 implementations.</li>\n</ul>\n<p dir=\"ltr\">I don't have a clear picture of exactly when or how the community decided to move on from OT, but I think it was pretty clear that OT had reached the limit of what research could offer and a new direction emerged.</p>\n<h2 dir=\"ltr\">Conflict-free replicated data type (CRDT)</h2>\n<p dir=\"ltr\">The <a href=\"https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type\" target=\"_blank\" rel=\"noopener\">Conflict-free replicated data type</a> began popping up around 2006, was formally defined in 2011, and has quickly become the darling child of the distributed computing industry. CRDT offers everything OT promised and delivers it with confidence backed by years of proven reliability in databases.&nbsp;&nbsp;</p>\n<p>The magic of CRDT is due in large part to how it breaks down data into such small pieces that it generally doesn't need to transform the change itself, only the position of the change. For example, text data collaboration with CRDT treats every <em>character</em> as a separate entity.</p>\n<p dir=\"ltr\">With this restriction, the current state of CRDT research supports collaboration on two main types of data:</p>\n<ul>\n<li dir=\"ltr\" role=\"presentation\">Plain text</li>\n<li dir=\"ltr\" role=\"presentation\">Arbitrary JSON structures (using a separate plain text CRDT for each text value)</li>\n</ul>\n<p dir=\"ltr\">And that second point, dear reader, has tied in nicely to the rise of content management that stores JSON document data instead of HTML.</p>\n<p dir=\"ltr\">The limitations of CRDT are similar to what happened when the TP2 restriction was proposed for OT; the difficulty is in the data type. It is not as difficult as TP2 - there is a working OT+TP2 for JSON, but my impression is the CRDT implementation was easier to achieve - but it's still only appropriate for simple use cases.</p>\n<p dir=\"ltr\">When it comes to more advanced structures such as rich text editing, the crux of the problem with CRDTs is user intent. Working at such a low level provides an easier guarantee of eventual consistency, but you lose sight of the big picture. For example in OT we can define a \"split text node\" operation which can be complicated to transform but is very well understood to have certain properties in a rich text editor. Whereas in CRDT, the changes are more data-focussed and it becomes very clinical. A good example is splitting a text node. Think about what that might take at the data level:</p>\n<ol>\n<li dir=\"ltr\" role=\"presentation\">Remove text after the split point in the node</li>\n<li dir=\"ltr\" role=\"presentation\">Insert a new sibling text node after the current node containing the removed text</li>\n</ol>\n<p dir=\"ltr\">This might not be exactly how CRDT algorithms represent these changes, but my point is they do not transmit the intent. OT trades complexity for the ability to capture the intent; CRDT has less complexity but can only guarantee all clients end with the same data - however that data might not be the intended structure, or even valid for your schema.</p>\n<p dir=\"ltr\">&nbsp;</p>\n<p><img style=\"display: block; margin-left: auto; margin-right: auto;\" src=\"https://images.ctfassets.net/s600jj41gsex/3jQRNyki6SeVgF8yVTmxKT/edbf5282d3c392d29a021a1eeeef60e3/Screen_Shot_2019-12-11_at_10.26.53_am.png\" alt=\"\" width=\"1092\" height=\"821\" /></p>\n<p>Credit: <a href=\"https://gotocon.com/berlin-2016/presentations/show_talk.jsp?oid=7910\" target=\"_blank\" rel=\"noopener\">Martin Kleppmann, 2016</a></p>\n<p>&nbsp;</p>\n<p dir=\"ltr\">The effect of this trade-off is that while there are some editors available today with support for collaboration using CRDT, every single one of them has compromises in depth of features and user experience.</p>\n<p dir=\"ltr\">If you can show me a rich text editor with support for CRDT, I can show you why I struggle to call it a \"rich\" text editor. Perhaps we should call them moderately wealthy text editors. Limiting the breadth of HTML capability for ease of collaboration is a popular trend, but not one that we wish to engage with for TinyMCE.</p>\n<p>In the worst case, when applying CRDT mechanisms to a full rich text editor, the user experience can be compromised due to the lack of intent. During my research I was already leaning towards OT, but this video shows the point at which I decided CRDT was not ready for our needs. This is a <a href=\"https://examples.convergence.io/examples/froala\" target=\"_blank\" rel=\"noopener\">convergence.io demo</a> showing their collaboration server linked to the Froala rich text editor.</p>\n<p><iframe src=\"https://www.youtube.com/embed/42KDvoFqzsI\" width=\"688\" height=\"388\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"></iframe></p>\n<p dir=\"ltr\">This is the exact \"split node\" scenario I described earlier; applying bold near the start of a text node necessarily has to split the text node into three parts (before, bold, and after). With a CRDT implementation, when the collaborating <a href=\"https://www.tiny.cloud/blog/set-and-get-cursor-position/\">user's cursor</a> is in the \"after\" section, the application of bold recreates the text node and the user has a poor experience.</p>\n<h2 dir=\"ltr\">Conclusions</h2>\n<p dir=\"ltr\">While my example is very simple and could be managed so the cursor doesn't move, I saw it as a sign of unknown and potentially far greater pain. The risks of finding an unsolvable issue on that path are too great, compared to the very complex but known feasibility of Operational Transformation on a rich text model.</p>\n<p dir=\"ltr\">CRDT is the holy grail of collaboration, it's an active area of research, and the prospect of peer-to-peer editing with end-to-end encryption is an exciting one. The technology isn't ready for our needs yet, but I believe in the future some incredible products will be made possible. In the meantime TinyMCE will rely on OT for collaboration, coming later this year.</p>\n<h2 dir=\"ltr\">Research links (in no particular order):</h2>\n<p dir=\"ltr\"><a href=\"https://www.youtube.com/watch?v=yCcWpzY8dIA\" target=\"_blank\" rel=\"noopener\">Conflict Resolution for Eventual Consistency</a>, Martin Kleppmann 2016</p>\n<p dir=\"ltr\"><a href=\"https://www.youtube.com/watch?v=B5NULPSiOGw\" target=\"_blank\" rel=\"noopener\">CRDTs and the Quest for Distributed Consistency</a>, Martin Kleppmann 2018</p>\n<p dir=\"ltr\"><a href=\"https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/\" target=\"_blank\" rel=\"noopener nofollow\">Lessons learned from creating a rich-text editor with real-time collaboration</a>, CKSource 2018</p>\n<p dir=\"ltr\"><a href=\"https://news.ycombinator.com/item?id=19886883\" target=\"_blank\" rel=\"noopener\">Why CRDT didn't work out as well for collaborative editing xi-editor</a>, 2019 Hacker News thread (links to github)</p>\n<p dir=\"ltr\"><a href=\"http://www.codecommit.com/blog/java/understanding-and-applying-operational-transformation\" target=\"_blank\" rel=\"noopener\">Understanding and Applying Operational Transformation</a>, Daniel Spiewak 2010</p>\n<p dir=\"ltr\"><a href=\"https://pierrehedkvist.com/posts/1-creating-a-collaborative-editor\" target=\"_blank\" rel=\"noopener\">Creating a Collaborative Editor</a>, Pierre Hedkvist 2019</p>\n<p dir=\"ltr\"><a href=\"https://arxiv.org/pdf/1608.03960.pdf\" target=\"_blank\" rel=\"noopener\">A Conflict-Free Replicated JSON Datatype</a>, Martin Kleppmann and Alastair R. Beresford 2017</p>\n<p dir=\"ltr\"><a href=\"https://medium.com/@raphlinus/towards-a-unified-theory-of-operational-transformation-and-crdt-70485876f72f\" target=\"_blank\" rel=\"noopener\">Towards a unified theory of Operational Transformation and CRDT</a>, Raph Levien 2016</p>\n<p dir=\"ltr\"><a href=\"http://archagon.net/blog/2018/03/24/data-laced-with-history/\" target=\"_blank\" rel=\"noopener\">Data Laced with History: Causal Trees &amp; Operational CRDTs</a>, Alexei Baboulevitch 2018</p>\n<p dir=\"ltr\"><a href=\"http://operational-transformation.github.io/visualization.html\" target=\"_blank\" rel=\"noopener\">Visualization of OT with a central server</a>, Tim Baumann 2012</p>\n<p dir=\"ltr\"><a href=\"https://news.ycombinator.com/item?id=18191867\" target=\"_blank\" rel=\"noopener\">Real Differences between OT and CRDT for Co-Editors</a>, 2018 Hacker News thread (links to paper)*</p>\n<p dir=\"ltr\">* This last paper was updated in 2019 and split into three parts:</p>\n<ul>\n<li dir=\"ltr\"><a href=\"https://arxiv.org/abs/1905.01518\">https://arxiv.org/abs/1905.01518</a></li>\n<li dir=\"ltr\"><a href=\"https://arxiv.org/abs/1905.01517\">https://arxiv.org/abs/1905.01517</a></li>\n<li dir=\"ltr\"><a href=\"https://arxiv.org/abs/1905.01302\">https://arxiv.org/abs/1905.01302</a></li>\n</ul>","childMarkdownRemark":{"html":"<blockquote>From January 2023, TinyMCE no longer offers Real-Time Collaboration (RTC) for new customers. For Existing customers, we'll be in contact to discuss options. Please reach out to your Account Manager if you are a customer using RTC, and you have any questions about the plugin.</blockquote>\n<blockquote>\n<p dir=\"ltr\">This is the first in a series of blog posts documenting the TinyMCE RTC journey and decisions along the way. Next post: <a href=\"https://www.tiny.cloud/blog/real-time-collaborative-editing-slate-js\" target=\"_blank\" rel=\"noopener\">Collaboration needs a clean Slate</a>.</p>\n</blockquote>\n<p dir=\"ltr\">If you dig below the surface of any real-time collaboration solution you're likely to start hearing about the terms OT (Operational Transformation) and CRDT (Conflict-free Replicated Data Type). For a team trying to <em>build</em> a real-time collaboration solution, the first question to ask is \"which of these two acronym mouthfuls should I use\"? Followed quickly by \"what on earth do these acronym mouthfuls mean\"?</p>\n<p dir=\"ltr\">The full response to these questions took me about a month to answer. There is a vast collection of reading material available; navigating that rabbit hole was a fun journey. I will include links at the end to the research and reading material I used to form my conclusions.</p>\n<p dir=\"ltr\">At a very high level, this is what we're dealing with:</p>\n<ul>\n<li dir=\"ltr\" role=\"presentation\">OT relies on an active server connection (not quite correct but we'll get to that in a moment) to coordinate and guarantee all clients operate correctly.</li>\n<li dir=\"ltr\" role=\"presentation\">CRDT is capable of working peer-to-peer with end-to-end encryption; if a server is used at all it only needs to coordinate connections between clients. It is resilient to transient network connections. It even works if clients go offline for a period of time, make changes, and synchronise when the network returns.</li>\n</ul>\n<p dir=\"ltr\">Sounds like an easy decision, right? Isn't CRDT the obvious and (for privacy reasons) the only sane choice? Well, nothing's ever that easy. There is a reason Google, Microsoft, CKSource and many others depend on OT. Tiny has chosen to also build our solution around OT; I'd like to discuss the difference between these two algorithms in more detail and how the CRDT caveats lead us to stick with OT.</p>\n<h2 dir=\"ltr\">Collaboration Algorithms</h2>\n<p dir=\"ltr\">The general theory of collaboration algorithms is to transmit changes between users with the goal of \"eventual consistency\". If multiple users make changes at the same time their copies of the document might look different for a while, but eventually every user's view will converge to be the same. This is done through what I call a \"baseline\"; incoming changes are integrated into the local data to form new baselines and local changes are sent based on the current baseline.</p>\n<p dir=\"ltr\">The difficulty in collaboration rises from the restriction that clients cannot check whether the baseline they've calculated is the same as other clients. To do so would require collaboration on top of collaboration and it's <em>turtles all the way down</em>. The smallest bug in a collaborative implementation can lead to divergence; in a rich text editor diverged documents will quickly lead to nonsensical changes as operations are passed around. The CKEditor team wrote a really nice post about <a href=\"https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/\" target=\"_blank\" rel=\"noopener nofollow\">what can go wrong in diverged documents</a> last year.</p>\n<p dir=\"ltr\">This is starting to sound like an impossible problem, but after 30 years of research the established technology for simple collaboration cases is very mature. When the TinyMCE development team began investigating various technologies for collaboration, the editor was able to collaborate on unformatted paragraphs (using plain text transformations) within <em>days</em>.</p>\n<h2 dir=\"ltr\">Operational Transform (OT)</h2>\n<p><a href=\"https://en.wikipedia.org/wiki/Operational_transformation\" target=\"_blank\" rel=\"noopener\">Operational Transformation</a>, originally proposed in 1989, has had many forms over the years. The original vision did not require a server at all. However, as more and more research was published on the topic, and most of it was proven wrong, it became clear that OT had too many edge cases.</p>\n<p>&nbsp;</p>\n<p><img style=\"display: block; margin-left: auto; margin-right: auto;\" src=\"https://images.ctfassets.net/s600jj41gsex/3uTL8JEqiqecKDjugRtcdO/78568b05622cc3d0fdbb0b46d09ccf1d/Screen_Shot_2019-11-29_at_2.10.39_pm.png\" alt=\"\" width=\"1093\" height=\"818\" /></p>\n<p>Credit: <a href=\"https://www.infoq.com/presentations/crdt-distributed-consistency/\" target=\"_blank\" rel=\"noopener\">Martin Kleppmann, 2018</a></p>\n<p dir=\"ltr\">&nbsp;</p>\n<p dir=\"ltr\">In OT, every user action is broken down into one or more operations. These operations are transmitted between clients along with their baseline reference; if two users perform actions at the same time, incoming operations must be transformed to include the local operations that have happened since that baseline. They are then applied locally and form the new baseline.</p>\n<p dir=\"ltr\">This constant transformation of operations turned out to have too many edge cases where clients were found to not produce the same baseline (the \"wrong\" papers above). When that happens, the clients will never converge on the same result and break the fundamental assumption of collaboration.</p>\n<p dir=\"ltr\">Only two reliable forms of OT have survived the test of time:</p>\n<ul>\n<li dir=\"ltr\" role=\"presentation\">Server-based OT, splitting multi-user collaboration into groups where each client pairs individually with the server. The server coordinates the document state and operation list to ensure that transformation only ever occurs within these pairs, thus avoiding the complexity (and edge cases) of three-way transforms.</li>\n<li dir=\"ltr\" role=\"presentation\">OT with what's known as \"transform property 2\". CP2/TP2 finally gave the community a provably correct multi-way transformation algorithm, but it turned out to be <em>so complex</em> that very few data structures have working TP2 implementations.</li>\n</ul>\n<p dir=\"ltr\">I don't have a clear picture of exactly when or how the community decided to move on from OT, but I think it was pretty clear that OT had reached the limit of what research could offer and a new direction emerged.</p>\n<h2 dir=\"ltr\">Conflict-free replicated data type (CRDT)</h2>\n<p dir=\"ltr\">The <a href=\"https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type\" target=\"_blank\" rel=\"noopener\">Conflict-free replicated data type</a> began popping up around 2006, was formally defined in 2011, and has quickly become the darling child of the distributed computing industry. CRDT offers everything OT promised and delivers it with confidence backed by years of proven reliability in databases.&nbsp;&nbsp;</p>\n<p>The magic of CRDT is due in large part to how it breaks down data into such small pieces that it generally doesn't need to transform the change itself, only the position of the change. For example, text data collaboration with CRDT treats every <em>character</em> as a separate entity.</p>\n<p dir=\"ltr\">With this restriction, the current state of CRDT research supports collaboration on two main types of data:</p>\n<ul>\n<li dir=\"ltr\" role=\"presentation\">Plain text</li>\n<li dir=\"ltr\" role=\"presentation\">Arbitrary JSON structures (using a separate plain text CRDT for each text value)</li>\n</ul>\n<p dir=\"ltr\">And that second point, dear reader, has tied in nicely to the rise of content management that stores JSON document data instead of HTML.</p>\n<p dir=\"ltr\">The limitations of CRDT are similar to what happened when the TP2 restriction was proposed for OT; the difficulty is in the data type. It is not as difficult as TP2 - there is a working OT+TP2 for JSON, but my impression is the CRDT implementation was easier to achieve - but it's still only appropriate for simple use cases.</p>\n<p dir=\"ltr\">When it comes to more advanced structures such as rich text editing, the crux of the problem with CRDTs is user intent. Working at such a low level provides an easier guarantee of eventual consistency, but you lose sight of the big picture. For example in OT we can define a \"split text node\" operation which can be complicated to transform but is very well understood to have certain properties in a rich text editor. Whereas in CRDT, the changes are more data-focussed and it becomes very clinical. A good example is splitting a text node. Think about what that might take at the data level:</p>\n<ol>\n<li dir=\"ltr\" role=\"presentation\">Remove text after the split point in the node</li>\n<li dir=\"ltr\" role=\"presentation\">Insert a new sibling text node after the current node containing the removed text</li>\n</ol>\n<p dir=\"ltr\">This might not be exactly how CRDT algorithms represent these changes, but my point is they do not transmit the intent. OT trades complexity for the ability to capture the intent; CRDT has less complexity but can only guarantee all clients end with the same data - however that data might not be the intended structure, or even valid for your schema.</p>\n<p dir=\"ltr\">&nbsp;</p>\n<p><img style=\"display: block; margin-left: auto; margin-right: auto;\" src=\"https://images.ctfassets.net/s600jj41gsex/3jQRNyki6SeVgF8yVTmxKT/edbf5282d3c392d29a021a1eeeef60e3/Screen_Shot_2019-12-11_at_10.26.53_am.png\" alt=\"\" width=\"1092\" height=\"821\" /></p>\n<p>Credit: <a href=\"https://gotocon.com/berlin-2016/presentations/show_talk.jsp?oid=7910\" target=\"_blank\" rel=\"noopener\">Martin Kleppmann, 2016</a></p>\n<p>&nbsp;</p>\n<p dir=\"ltr\">The effect of this trade-off is that while there are some editors available today with support for collaboration using CRDT, every single one of them has compromises in depth of features and user experience.</p>\n<p dir=\"ltr\">If you can show me a rich text editor with support for CRDT, I can show you why I struggle to call it a \"rich\" text editor. Perhaps we should call them moderately wealthy text editors. Limiting the breadth of HTML capability for ease of collaboration is a popular trend, but not one that we wish to engage with for TinyMCE.</p>\n<p>In the worst case, when applying CRDT mechanisms to a full rich text editor, the user experience can be compromised due to the lack of intent. During my research I was already leaning towards OT, but this video shows the point at which I decided CRDT was not ready for our needs. This is a <a href=\"https://examples.convergence.io/examples/froala\" target=\"_blank\" rel=\"noopener\">convergence.io demo</a> showing their collaboration server linked to the Froala rich text editor.</p>\n<p><iframe src=\"https://www.youtube.com/embed/42KDvoFqzsI\" width=\"688\" height=\"388\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"></iframe></p>\n<p dir=\"ltr\">This is the exact \"split node\" scenario I described earlier; applying bold near the start of a text node necessarily has to split the text node into three parts (before, bold, and after). With a CRDT implementation, when the collaborating <a href=\"https://www.tiny.cloud/blog/set-and-get-cursor-position/\">user's cursor</a> is in the \"after\" section, the application of bold recreates the text node and the user has a poor experience.</p>\n<h2 dir=\"ltr\">Conclusions</h2>\n<p dir=\"ltr\">While my example is very simple and could be managed so the cursor doesn't move, I saw it as a sign of unknown and potentially far greater pain. The risks of finding an unsolvable issue on that path are too great, compared to the very complex but known feasibility of Operational Transformation on a rich text model.</p>\n<p dir=\"ltr\">CRDT is the holy grail of collaboration, it's an active area of research, and the prospect of peer-to-peer editing with end-to-end encryption is an exciting one. The technology isn't ready for our needs yet, but I believe in the future some incredible products will be made possible. In the meantime TinyMCE will rely on OT for collaboration, coming later this year.</p>\n<h2 dir=\"ltr\">Research links (in no particular order):</h2>\n<p dir=\"ltr\"><a href=\"https://www.youtube.com/watch?v=yCcWpzY8dIA\" target=\"_blank\" rel=\"noopener\">Conflict Resolution for Eventual Consistency</a>, Martin Kleppmann 2016</p>\n<p dir=\"ltr\"><a href=\"https://www.youtube.com/watch?v=B5NULPSiOGw\" target=\"_blank\" rel=\"noopener\">CRDTs and the Quest for Distributed Consistency</a>, Martin Kleppmann 2018</p>\n<p dir=\"ltr\"><a href=\"https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/\" target=\"_blank\" rel=\"noopener nofollow\">Lessons learned from creating a rich-text editor with real-time collaboration</a>, CKSource 2018</p>\n<p dir=\"ltr\"><a href=\"https://news.ycombinator.com/item?id=19886883\" target=\"_blank\" rel=\"noopener\">Why CRDT didn't work out as well for collaborative editing xi-editor</a>, 2019 Hacker News thread (links to github)</p>\n<p dir=\"ltr\"><a href=\"http://www.codecommit.com/blog/java/understanding-and-applying-operational-transformation\" target=\"_blank\" rel=\"noopener\">Understanding and Applying Operational Transformation</a>, Daniel Spiewak 2010</p>\n<p dir=\"ltr\"><a href=\"https://pierrehedkvist.com/posts/1-creating-a-collaborative-editor\" target=\"_blank\" rel=\"noopener\">Creating a Collaborative Editor</a>, Pierre Hedkvist 2019</p>\n<p dir=\"ltr\"><a href=\"https://arxiv.org/pdf/1608.03960.pdf\" target=\"_blank\" rel=\"noopener\">A Conflict-Free Replicated JSON Datatype</a>, Martin Kleppmann and Alastair R. Beresford 2017</p>\n<p dir=\"ltr\"><a href=\"https://medium.com/@raphlinus/towards-a-unified-theory-of-operational-transformation-and-crdt-70485876f72f\" target=\"_blank\" rel=\"noopener\">Towards a unified theory of Operational Transformation and CRDT</a>, Raph Levien 2016</p>\n<p dir=\"ltr\"><a href=\"http://archagon.net/blog/2018/03/24/data-laced-with-history/\" target=\"_blank\" rel=\"noopener\">Data Laced with History: Causal Trees &amp; Operational CRDTs</a>, Alexei Baboulevitch 2018</p>\n<p dir=\"ltr\"><a href=\"http://operational-transformation.github.io/visualization.html\" target=\"_blank\" rel=\"noopener\">Visualization of OT with a central server</a>, Tim Baumann 2012</p>\n<p dir=\"ltr\"><a href=\"https://news.ycombinator.com/item?id=18191867\" target=\"_blank\" rel=\"noopener\">Real Differences between OT and CRDT for Co-Editors</a>, 2018 Hacker News thread (links to paper)*</p>\n<p dir=\"ltr\">* This last paper was updated in 2019 and split into three parts:</p>\n<ul>\n<li dir=\"ltr\"><a href=\"https://arxiv.org/abs/1905.01518\">https://arxiv.org/abs/1905.01518</a></li>\n<li dir=\"ltr\"><a href=\"https://arxiv.org/abs/1905.01517\">https://arxiv.org/abs/1905.01517</a></li>\n<li dir=\"ltr\"><a href=\"https://arxiv.org/abs/1905.01302\">https://arxiv.org/abs/1905.01302</a></li>\n</ul>","htmlAst":{"type":"root","children":[{"type":"element","tagName":"blockquote","properties":{},"children":[{"type":"text","value":"From January 2023, TinyMCE no longer offers Real-Time Collaboration (RTC) for new customers. For Existing customers, we'll be in contact to discuss options. Please reach out to your Account Manager if you are a customer using RTC, and you have any questions about the plugin."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"blockquote","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"This is the first in a series of blog posts documenting the TinyMCE RTC journey and decisions along the way. Next post: "},{"type":"element","tagName":"a","properties":{"href":"https://www.tiny.cloud/blog/real-time-collaborative-editing-slate-js","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Collaboration needs a clean Slate"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"If you dig below the surface of any real-time collaboration solution you're likely to start hearing about the terms OT (Operational Transformation) and CRDT (Conflict-free Replicated Data Type). For a team trying to "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"build"}]},{"type":"text","value":" a real-time collaboration solution, the first question to ask is \"which of these two acronym mouthfuls should I use\"? Followed quickly by \"what on earth do these acronym mouthfuls mean\"?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"The full response to these questions took me about a month to answer. There is a vast collection of reading material available; navigating that rabbit hole was a fun journey. I will include links at the end to the research and reading material I used to form my conclusions."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"At a very high level, this is what we're dealing with:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{"dir":"ltr","role":"presentation"},"children":[{"type":"text","value":"OT relies on an active server connection (not quite correct but we'll get to that in a moment) to coordinate and guarantee all clients operate correctly."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{"dir":"ltr","role":"presentation"},"children":[{"type":"text","value":"CRDT is capable of working peer-to-peer with end-to-end encryption; if a server is used at all it only needs to coordinate connections between clients. It is resilient to transient network connections. It even works if clients go offline for a period of time, make changes, and synchronise when the network returns."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"Sounds like an easy decision, right? Isn't CRDT the obvious and (for privacy reasons) the only sane choice? Well, nothing's ever that easy. There is a reason Google, Microsoft, CKSource and many others depend on OT. Tiny has chosen to also build our solution around OT; I'd like to discuss the difference between these two algorithms in more detail and how the CRDT caveats lead us to stick with OT."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"dir":"ltr"},"children":[{"type":"text","value":"Collaboration Algorithms"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"The general theory of collaboration algorithms is to transmit changes between users with the goal of \"eventual consistency\". If multiple users make changes at the same time their copies of the document might look different for a while, but eventually every user's view will converge to be the same. This is done through what I call a \"baseline\"; incoming changes are integrated into the local data to form new baselines and local changes are sent based on the current baseline."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"The difficulty in collaboration rises from the restriction that clients cannot check whether the baseline they've calculated is the same as other clients. To do so would require collaboration on top of collaboration and it's "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"turtles all the way down"}]},{"type":"text","value":". The smallest bug in a collaborative implementation can lead to divergence; in a rich text editor diverged documents will quickly lead to nonsensical changes as operations are passed around. The CKEditor team wrote a really nice post about "},{"type":"element","tagName":"a","properties":{"href":"https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/","target":"_blank","rel":["noopener","nofollow"]},"children":[{"type":"text","value":"what can go wrong in diverged documents"}]},{"type":"text","value":" last year."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"This is starting to sound like an impossible problem, but after 30 years of research the established technology for simple collaboration cases is very mature. When the TinyMCE development team began investigating various technologies for collaboration, the editor was able to collaborate on unformatted paragraphs (using plain text transformations) within "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"days"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"dir":"ltr"},"children":[{"type":"text","value":"Operational Transform (OT)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://en.wikipedia.org/wiki/Operational_transformation","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Operational Transformation"}]},{"type":"text","value":", originally proposed in 1989, has had many forms over the years. The original vision did not require a server at all. However, as more and more research was published on the topic, and most of it was proven wrong, it became clear that OT had too many edge cases."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":" "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"style":"display: block; margin-left: auto; margin-right: auto;","src":"https://images.ctfassets.net/s600jj41gsex/3uTL8JEqiqecKDjugRtcdO/78568b05622cc3d0fdbb0b46d09ccf1d/Screen_Shot_2019-11-29_at_2.10.39_pm.png","alt":"","width":1093,"height":818},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Credit: "},{"type":"element","tagName":"a","properties":{"href":"https://www.infoq.com/presentations/crdt-distributed-consistency/","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Martin Kleppmann, 2018"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":" "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"In OT, every user action is broken down into one or more operations. These operations are transmitted between clients along with their baseline reference; if two users perform actions at the same time, incoming operations must be transformed to include the local operations that have happened since that baseline. They are then applied locally and form the new baseline."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"This constant transformation of operations turned out to have too many edge cases where clients were found to not produce the same baseline (the \"wrong\" papers above). When that happens, the clients will never converge on the same result and break the fundamental assumption of collaboration."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"Only two reliable forms of OT have survived the test of time:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{"dir":"ltr","role":"presentation"},"children":[{"type":"text","value":"Server-based OT, splitting multi-user collaboration into groups where each client pairs individually with the server. The server coordinates the document state and operation list to ensure that transformation only ever occurs within these pairs, thus avoiding the complexity (and edge cases) of three-way transforms."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{"dir":"ltr","role":"presentation"},"children":[{"type":"text","value":"OT with what's known as \"transform property 2\". CP2/TP2 finally gave the community a provably correct multi-way transformation algorithm, but it turned out to be "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"so complex"}]},{"type":"text","value":" that very few data structures have working TP2 implementations."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"I don't have a clear picture of exactly when or how the community decided to move on from OT, but I think it was pretty clear that OT had reached the limit of what research could offer and a new direction emerged."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"dir":"ltr"},"children":[{"type":"text","value":"Conflict-free replicated data type (CRDT)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"The "},{"type":"element","tagName":"a","properties":{"href":"https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Conflict-free replicated data type"}]},{"type":"text","value":" began popping up around 2006, was formally defined in 2011, and has quickly become the darling child of the distributed computing industry. CRDT offers everything OT promised and delivers it with confidence backed by years of proven reliability in databases.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The magic of CRDT is due in large part to how it breaks down data into such small pieces that it generally doesn't need to transform the change itself, only the position of the change. For example, text data collaboration with CRDT treats every "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"character"}]},{"type":"text","value":" as a separate entity."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"With this restriction, the current state of CRDT research supports collaboration on two main types of data:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{"dir":"ltr","role":"presentation"},"children":[{"type":"text","value":"Plain text"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{"dir":"ltr","role":"presentation"},"children":[{"type":"text","value":"Arbitrary JSON structures (using a separate plain text CRDT for each text value)"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"And that second point, dear reader, has tied in nicely to the rise of content management that stores JSON document data instead of HTML."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"The limitations of CRDT are similar to what happened when the TP2 restriction was proposed for OT; the difficulty is in the data type. It is not as difficult as TP2 - there is a working OT+TP2 for JSON, but my impression is the CRDT implementation was easier to achieve - but it's still only appropriate for simple use cases."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"When it comes to more advanced structures such as rich text editing, the crux of the problem with CRDTs is user intent. Working at such a low level provides an easier guarantee of eventual consistency, but you lose sight of the big picture. For example in OT we can define a \"split text node\" operation which can be complicated to transform but is very well understood to have certain properties in a rich text editor. Whereas in CRDT, the changes are more data-focussed and it becomes very clinical. A good example is splitting a text node. Think about what that might take at the data level:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{"dir":"ltr","role":"presentation"},"children":[{"type":"text","value":"Remove text after the split point in the node"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{"dir":"ltr","role":"presentation"},"children":[{"type":"text","value":"Insert a new sibling text node after the current node containing the removed text"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"This might not be exactly how CRDT algorithms represent these changes, but my point is they do not transmit the intent. OT trades complexity for the ability to capture the intent; CRDT has less complexity but can only guarantee all clients end with the same data - however that data might not be the intended structure, or even valid for your schema."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":" "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"style":"display: block; margin-left: auto; margin-right: auto;","src":"https://images.ctfassets.net/s600jj41gsex/3jQRNyki6SeVgF8yVTmxKT/edbf5282d3c392d29a021a1eeeef60e3/Screen_Shot_2019-12-11_at_10.26.53_am.png","alt":"","width":1092,"height":821},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Credit: "},{"type":"element","tagName":"a","properties":{"href":"https://gotocon.com/berlin-2016/presentations/show_talk.jsp?oid=7910","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Martin Kleppmann, 2016"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":" "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"The effect of this trade-off is that while there are some editors available today with support for collaboration using CRDT, every single one of them has compromises in depth of features and user experience."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"If you can show me a rich text editor with support for CRDT, I can show you why I struggle to call it a \"rich\" text editor. Perhaps we should call them moderately wealthy text editors. Limiting the breadth of HTML capability for ease of collaboration is a popular trend, but not one that we wish to engage with for TinyMCE."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In the worst case, when applying CRDT mechanisms to a full rich text editor, the user experience can be compromised due to the lack of intent. During my research I was already leaning towards OT, but this video shows the point at which I decided CRDT was not ready for our needs. This is a "},{"type":"element","tagName":"a","properties":{"href":"https://examples.convergence.io/examples/froala","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"convergence.io demo"}]},{"type":"text","value":" showing their collaboration server linked to the Froala rich text editor."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"iframe","properties":{"src":"https://www.youtube.com/embed/42KDvoFqzsI","width":688,"height":388,"frameBorder":"0","allowFullScreen":true},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"This is the exact \"split node\" scenario I described earlier; applying bold near the start of a text node necessarily has to split the text node into three parts (before, bold, and after). With a CRDT implementation, when the collaborating "},{"type":"element","tagName":"a","properties":{"href":"https://www.tiny.cloud/blog/set-and-get-cursor-position/"},"children":[{"type":"text","value":"user's cursor"}]},{"type":"text","value":" is in the \"after\" section, the application of bold recreates the text node and the user has a poor experience."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"dir":"ltr"},"children":[{"type":"text","value":"Conclusions"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"While my example is very simple and could be managed so the cursor doesn't move, I saw it as a sign of unknown and potentially far greater pain. The risks of finding an unsolvable issue on that path are too great, compared to the very complex but known feasibility of Operational Transformation on a rich text model."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"CRDT is the holy grail of collaboration, it's an active area of research, and the prospect of peer-to-peer editing with end-to-end encryption is an exciting one. The technology isn't ready for our needs yet, but I believe in the future some incredible products will be made possible. In the meantime TinyMCE will rely on OT for collaboration, coming later this year."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"dir":"ltr"},"children":[{"type":"text","value":"Research links (in no particular order):"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"https://www.youtube.com/watch?v=yCcWpzY8dIA","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Conflict Resolution for Eventual Consistency"}]},{"type":"text","value":", Martin Kleppmann 2016"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"https://www.youtube.com/watch?v=B5NULPSiOGw","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"CRDTs and the Quest for Distributed Consistency"}]},{"type":"text","value":", Martin Kleppmann 2018"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/","target":"_blank","rel":["noopener","nofollow"]},"children":[{"type":"text","value":"Lessons learned from creating a rich-text editor with real-time collaboration"}]},{"type":"text","value":", CKSource 2018"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"https://news.ycombinator.com/item?id=19886883","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Why CRDT didn't work out as well for collaborative editing xi-editor"}]},{"type":"text","value":", 2019 Hacker News thread (links to github)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"http://www.codecommit.com/blog/java/understanding-and-applying-operational-transformation","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Understanding and Applying Operational Transformation"}]},{"type":"text","value":", Daniel Spiewak 2010"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"https://pierrehedkvist.com/posts/1-creating-a-collaborative-editor","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Creating a Collaborative Editor"}]},{"type":"text","value":", Pierre Hedkvist 2019"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"https://arxiv.org/pdf/1608.03960.pdf","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"A Conflict-Free Replicated JSON Datatype"}]},{"type":"text","value":", Martin Kleppmann and Alastair R. Beresford 2017"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"https://medium.com/@raphlinus/towards-a-unified-theory-of-operational-transformation-and-crdt-70485876f72f","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Towards a unified theory of Operational Transformation and CRDT"}]},{"type":"text","value":", Raph Levien 2016"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"http://archagon.net/blog/2018/03/24/data-laced-with-history/","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Data Laced with History: Causal Trees & Operational CRDTs"}]},{"type":"text","value":", Alexei Baboulevitch 2018"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"http://operational-transformation.github.io/visualization.html","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Visualization of OT with a central server"}]},{"type":"text","value":", Tim Baumann 2012"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"https://news.ycombinator.com/item?id=18191867","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"Real Differences between OT and CRDT for Co-Editors"}]},{"type":"text","value":", 2018 Hacker News thread (links to paper)*"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{"dir":"ltr"},"children":[{"type":"text","value":"* This last paper was updated in 2019 and split into three parts:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"https://arxiv.org/abs/1905.01518"},"children":[{"type":"text","value":"https://arxiv.org/abs/1905.01518"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"https://arxiv.org/abs/1905.01517"},"children":[{"type":"text","value":"https://arxiv.org/abs/1905.01517"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{"dir":"ltr"},"children":[{"type":"element","tagName":"a","properties":{"href":"https://arxiv.org/abs/1905.01302"},"children":[{"type":"text","value":"https://arxiv.org/abs/1905.01302"}]}]},{"type":"text","value":"\n"}]}],"data":{"quirksMode":false}}}},"body2":null,"codepens":null,"heroImage":{"image":{"fluid":{"base64":"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAACkUlEQVQYGXXBS2ucZRQH8P85z3medy6ZS6ZJpmK1puJtpYJLXYjuBBeCIH4OwYVfws/hQtxIV668gEVBKyhk2o0RG9OZ6WTmncm8z+UcEysoSn8/2vtsqkCdKKmZ4VEc0HaIhqhgQkcQHESTlZTHYesqMjMYYIb/YcIFNUDIiq2btnmRzTldcZvHDzM7h3Zwh2MQ4dGIqKzPjz+/v2z6UiJyTPVMIQyOtDrFvxAuGf5GAIgQm1InCiSVJ2tVv94V6YbNsqQEGIhxwRk8IxsKQIRAcAQiUHKuJBpBrr7M8mDRdG7I2YOeWELHt9ziNG2iPPk0V514b6KrGAJZcAABIEKhZJYhOpnk40k6vFKitoftx64XsA36G+kPyGWPxbUbwr0wPcJqAWYQARklI0W49PwH8Wi9zvudA2YTO5trclXfvFuW1QYgabH45LEq2xC3HoClrNuooSs6PEiA74ZqZ7u8fTK7n11Locn7JiYvTuFCqKJUyZYL6F5p7RR1XIBCLrzxIZ/XBa3NZDnQW53R2c4T0ZfjcucnfPu9fvVDtT9rPxPqT74YvjnONz8dvv6Uqd+eJq36gkKmsMIlV4Zm8O6rZqb1uDrclfcHVtQ0u16n+ugt2e1hvcJqrn/Y/sFprKcMJRRiwAs1Xx+l30/qL2/Feye6qo2L5s36ux/zdAbSPJ93337JOHBuRq/tjV5cihUigECFqlQ9d/LxbWsMsiAw7c51Ecm4/uYud72Zwmz4XiXXx3mnZ8++IAwm47I+V98tr7zDDGbCQ2YgUkVRwC7ACfnpevvb4s4vyfpXhQ0ljGw95xiZCQTDP1RhBsIlAnSL2c8g6qK7SwrJmYzb6F9zDBAuGR5SQzH8Bxn+YjD7E5xUbHGOVy0aAAAAAElFTkSuQmCC","aspectRatio":1.2173913043478262,"src":"//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=2560&q=80&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=640&h=526&q=80&fit=scale 640w,\n//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=896&h=736&q=80&fit=scale 896w","srcWebp":"//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=2560&q=80&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=640&h=526&q=80&fm=webp&fit=scale 640w,\n//images.ctfassets.net/s600jj41gsex/lq18Ma2NAAtWvmZbaj7E4/a6e3872f74d3d43613b0e2355af79b0a/Image_default_rtc.png?w=896&h=736&q=80&fm=webp&fit=scale 896w","sizes":"(max-width: 2560px) 100vw, 2560px"}},"alt":"Abstract illustration of text editor, containing text 'Hello World', and two cursors present.","artistName":null,"artistUrl":null},"author":{"slug":"andrew-herron","name":"Andrew Herron","image":{"fluid":{"base64":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAUABQDAREAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAACAAGB//EACoQAAEDAgUCBQUAAAAAAAAAAAECAwQFEQAGBxIhCBMUIjFBURVDYXGR/8QAGAEBAQEBAQAAAAAAAAAAAAAABQYEAwf/xAAnEQABAwMCBAcAAAAAAAAAAAABAAIDBBEyEiEFBjFBEyJRcaGx8f/aAAwDAQACEQMRAD8AMHTvkKBqnqzEo1UfFKpwQ9LkPPlIDSUbeOeLknj++2JstLW6Vfw+djSNrkrbtdtHqNp5PYr9BlKm02C61IVHcCNyUhSbrSpI5HvY4yAm+juUjLT+FGZGnbumNlN/dl6Er03I3WP5wVHiipckOukhmgTNQM7UKRBbfmS6DT34SHEBKltJbCXjbixstJP7OGIdTmXv3P2kKZzA0NcL/gUz1SKbJzzW7o8DG77MNhtt49raAlKUhJ9TwB8XOObnva4tvfqkJooTETa2yYmWFA0KH7eTBceKn5cyiR0t06K7rJTnTHbD4pkpoPBNlpQltG1IPx5jxh+JotZewcw8PpKHh4NNEGkvHQb4uKqWqct93UCJ3HluA1tpNlHgAL4GM0gtq9lDCMSxnV6E/CbeWVH6DB5+0MEsxUvLmV//2Q==","aspectRatio":1,"src":"//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=48&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=12&h=12&q=50&fit=scale 12w,\n//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=24&h=24&q=50&fit=scale 24w,\n//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=48&h=48&q=50&fit=scale 48w,\n//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=72&h=72&q=50&fit=scale 72w,\n//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=96&h=96&q=50&fit=scale 96w,\n//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=144&h=144&q=50&fit=scale 144w,\n//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=150&h=150&q=50&fit=scale 150w","srcWebp":"//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=48&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=12&h=12&q=50&fm=webp&fit=scale 12w,\n//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=24&h=24&q=50&fm=webp&fit=scale 24w,\n//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=48&h=48&q=50&fm=webp&fit=scale 48w,\n//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=72&h=72&q=50&fm=webp&fit=scale 72w,\n//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=96&h=96&q=50&fm=webp&fit=scale 96w,\n//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=144&h=144&q=50&fm=webp&fit=scale 144w,\n//images.ctfassets.net/s600jj41gsex/68utgsId8FpBeaqv0wlLMr/2a0c9e9db07a4a59adf978191b1b4f05/andrew-herron-150x150.jpg?w=150&h=150&q=50&fm=webp&fit=scale 150w","sizes":"(max-width: 48px) 100vw, 48px"}},"shortBio":{"shortBio":"Andy is a Principal Engineer at Tiny."}},"metaTitle":{"metaTitle":"Building real-time collaboration applications: OT vs CRDT"},"metaDescription":{"metaDescription":"What do OT (Operational Transformation) and CRDT (Conflict-free Replicated Data Type) really mean? And which one should you use in your real-time collaboration solution?"},"setkaCss":null,"setkaHtml":null,"resourceFiles":null,"canonicalUrl":null}},"pageContext":{"slug":"real-time-collaboration-ot-vs-crdt","setkaPostId":null}},"staticQueryHashes":["2492987505","740350947"]}