{"componentChunkName":"component---src-templates-blog-post-tsx","path":"/technical-vs-functional-debt/","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":"Functional debt vs Technical debt: What’s the difference in a rich text editor?","lastUpdated":"May 16th, 2023","publishDate":"2023-05-16T00: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,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F3CculE8AAAC4lBMVEUZJFkYJFkhLWgjMGwjL2seKmMXI1cfK2QgLWccJ14YJFgbK2MbK2QjM3AlNXMkNHIgMGsaKmIhMWwiMm4kNHMeLmggNnIfNnIgNnMmO3snPH0jOXgfNXEkOXknPH4lOnohN3UjQYEoRIYqRIgpRIgnQ4QnQ4UpRIcoQ4YlQoMnTo8nTpAmT5ArT5MsT5MpT5ImUJEqWI8tPn8tPH8pRYcoT5ErW54rXJ4tXpwxUJgyUJkzUJkzT5kwUpksX5UuQX4vPX0tTosyUZkzT5gxUJcrWZwtZKYtZqc0a6U9TJ49TZ48Tp47Up88TZ47Tp4vYJYnXYsmXIsxXJI9T549TJ06TZsuYKMtZacvaq0uba40bag8S500YqEtbaI8T547TZ4zYZcsSoInWIkwY5U0YKA5Vp4vZqgvbK4xcbMwdLQ1cKs2XaAndKM5Vp8zYpctOXktNXgwXpEwaKE1X586TZwwbK4xc7UyeLoye7s1c608Spw8TJ44V58yZaE7UJ87TJ00ZZ0tXpEtXZEybJ07UJ09S506Tpwyc7Qyers0gMA0gsI2dK88RJk8R5s8RZs9RJs8SJs6R5o+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,/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/wAARCAAPABQDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAgMJ/8QAJRAAAQMCBgIDAQAAAAAAAAAAAQIDBBEhAAUSEzFBIlEUI2Hh/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAC/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oADAMBAAIRAxEAPwDQQzUJTrTLoywNLJU0D9hHVqC4r7scTaCpSUVbfmM7SDuSwY9arrblNz+q9jEhL0d7zn5hDEhQBoYeq1BS5A69Wwgkz22qD5H1tCqBtC6yOeP7bGWgdzFlN3JilIQdb4DIO4s8cj97rzhCYz7L4ZKJsh2TIV5qWlhAoDwLg9Ycof/Z","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,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","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>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}}}},"tags":[{"slug":"technical-debt","title":"Technical Debt"},{"slug":"buy-vs-build","title":"Buy-vs-build"},{"slug":"half-life","title":"Half-life"}],"body":{"body":"<p>Technical debt is a well-known problem in software development. But in complex, user-facing software like rich text editors, technical debt isn&rsquo;t the only problem. Functional debt is just as important, and it poses a threat to your product, the value it delivers and its usage growth. [add a sidebar table of contents - using H2 + h3 headings] Table of Contents Rich text editors are full of complicated workflows and behaviours. There&rsquo;s formatting options: lists, tables, images. Copy and paste. Media embedding. Spell checking. Links. Emojis&hellip; the list goes on. Each of those features accrues its own technical debt, as does the underlying engine and other dependencies. This complexity makes managing tech debt in a rich text editor quite the job. It raises the risk of bugs, cruft, and code rot, decreased development velocity and even reduces user satisfaction as it creeps in from changes to the surrounding code or development ecosystem. Generally, when you&rsquo;re tracking and prioritising technical debt work, engineering mostly focuses on non-optimal code &ndash; or short-term implementation shortcuts &ndash; used to deliver a project faster. But for many products, the code is only half the picture. User satisfaction, value delivered and product marketability are as dependent on UI/UX as performance, and that&rsquo;s where functional debt poses a threat. And similarly to technical debt, functional debt is hard to identify and pay down. [sidebar] UI vs UX: What are they? UserTesting has a great article on the differences between UI and UX, including several different definitions by various UI and UX experts. While most intentional and unintentional tech debt accumulates when coding shortcuts are taken, that often creates a new form of debt &ndash; functional debt. But exactly what is functional debt and how do you manage it, especially in something as complex as a rich text editor (RTE) that&rsquo;s dependent on a roadmap of continual feature releases? What is functional debt? Functional debt is caused by suboptimal or partially implemented functionality and UI/UX. While that feature may be coded well, its functionality is less than ideal &ndash; often lacking certain capabilities &ndash; so the value it delivers is impacted. This is functional debt. For example: A feature&rsquo;s functionality is missing pieces due to time restraints or a misunderstanding of the user requirements. A user workflow is overcomplicated due to not enough time taken to streamline it. A feature was acceptable when it was implemented, but customer expectations have shifted and it now needs updating. [sidebar] How is feature debt different from functional debt? For more information on the differences, read: Introducing Feature Debt &ndash; the unconventional sibling of Tech Debt The pros and cons of technical debt and feature debt There are some broader definitions of technical debt that do include functional debt, but purely as a derivative of the overarching technical debt metaphor. However, Roman Predein&rsquo;s article on technical and functional debt proposes a solid argument for separating functional debt from technical debt. When they&rsquo;re classified as separate entities, development and product teams have greater clarity and are better equipped to communicate the problems each causes, their side effects and recommending what to pay down when. Costs of technical vs functional debt To recap: Technical debt is about how a feature was implemented. Functional debt is about what was implemented. The benefit of separating functional debt from technical debt, and understanding the &lsquo;how vs what&rsquo; delineation, is that you can more clearly differentiate between the internal and external cost impacts on your rich text editor. Technical debt in a rich text editor Functional debt in a rich text editor Example effects Developers regularly work around the limitations of the existing code Customers report a bug that&rsquo;s caused by badly architected code Potential roadmap project requires that existing and incompatible code be refactored Users have to resize images by opening a dialog and typing in numbers, rather than dragging resize handles Background and border colours can only be set on a whole table, instead of allowing granular cell-based styling External costs Bugs Performance issues Browser changes and updates Security risks Clunky workflows Non-intuitive functionality Outdated UI Incomplete features Internal costs Reduced developer velocity Implementation barrier to roadmap features Increased code complexity and fragility Increased bug reports Decreased customer satisfaction Increased feature requests from customers Losing customers to more &ldquo;modern&rdquo; rich text editors Example costs and impacts of technical vs functional debt Examples and causes of technical vs functional debt Software debt appears at any point in the development cycle: planning, development, and maintenance can all cause debt. But certain types of debt are more likely to occur at different inflection points within the cycle. These can be categorised into: choice, accidental, or outside forces and influences. Technical debt Functional debt Intentional Caused by choosing to take an implementation shortcut Caused by choosing to take a functional shortcut Unintentional Caused by accidentally taking an implementation shortcut Caused by accidentally taking a functional shortcut Environmental Implementation problems caused by outside forces Functional problems caused by outside forces Causes of technical and functional debt, split by intentional, unintentional and environmental Another way to view this conundrum is by the types of activities that cause the debt to occur. Rich text editors are inherently complex, with busy feature roadmaps, which creates an environment where both technical and functional debt rapidly accrue. New WYSIWYG features introduce functional debt It&rsquo;s not unusual for intentional and/or unintentional functional debt to be introduced during the planning and development of new WYSIWYG features: Tight deadlines can cause functionality to intentionally be cut from a version of a feature. This creates debt that must be paid later for the feature to be fully functional. Lack of time or resources for user research or UI design can cause unintentional functional debt in the form of accidental limitations. Intentional functional debt can and should be tracked, so it can be fixed later. However, unintentional functional debt is more likely discovered via customer feedback or support tickets. Unfortunately though, not unlike technical debt, functional debt also quietly sneaks in over time. Industry changes create environmental functional debt How often have you opened a new app and thought, &ldquo;Wow, this looks old&rdquo;? Although when it was created, the app&rsquo;s UI/UX probably met all the &lsquo;modern&rsquo; standards. However, standards quickly change. And if you don&rsquo;t keep up, that first impression of your product can be negative. A gap opens between what was and current expectations, and that&rsquo;s where environmental functional debt creeps in to fill the void. UI Functional debt RTE example 1: Moving away from Microsoft Word For a time, Microsoft Word was the most popular rich text editor. Its features, icons, and workflows were the gold standard for rich text editing. Then, as new rich text editors appeared on the market, UI and UX ideas were borrowed from MS Word &ndash; mainly because that&rsquo;s what developers and users were familiar with, which made the learning curve easier. User Interface (IU) for Microsoft Word 2007 and Microsoft Word 2011 for Mac. Source However in recent years, the rich text editing industry has exploded. There are now dozens of editors available, and they&rsquo;ve all had to adapt to outside forces like the rise of mobile devices. Each mobile device sparks different UI/UX expectations and feature functionality, that users want to use on their phone. This is the exact point where functional debt likely appears. And grows. A feature built five years ago, based on MS Word, likely now looks and feels dated. Dialogs (once so prevalent), are now replaced with inline pop ups and other innovative UI elements. Shortcuts and gestures are expected, as are lists, tables, and media embedding. But letting functional debt pile up in a rich text editor, is a shortcut to losing customers. And it&rsquo;s exactly what prompted the creation of TinyMCE 5.0. UI Functional debt RTE example 2: Paying back debt in TinyMCE 5.0 TinyMCE 4 worked well. Its UI was fairly clean, and the UI system was flexible for power users. Caption: TinyMCE 4&rsquo;s UI (in 2023). However, TinyMCE 4 was released in 2013 and soon after, React.js, Bootstrap, and Google&rsquo;s Material design language became popular. Responsive web design and accessibility gained traction. There was also a surge in new libraries and frameworks, which caused rapid innovation in the web development industry. In just four short years, the conventions that TinyMCE 4&rsquo;s UI were based on, were outdated. It was starting to look tired and its architecture made it difficult to keep up with certain industry changes. Functional debt was stacking up, purely due to environmental changes. TinyMCE 4 still worked, and its UI could have been left as-is for a while longer. However, TinyMCE&rsquo;s UI (and the framework behind it) is a core component of the editor, and paying down the debt required a replacement of the UI framework with a different in-house library, and rewriting the UI in the new framework. This was months of work. It was decided that delaying this work was not a wise business choice. A total overhaul was commenced. A half-life map of TinyMCE&rsquo;s lines of code (LoC) over time. The spike in LoC around early 2019 represents the TinyMCE 5.0 release. In February 2019, TinyMCE 5.0 was released with: Completely overhauled UI New icons New dialogs New buttons, and New UI framework. The entire UI engine was replaced, and every UI component rewritten from scratch. However, due to the size of the project, it only addressed UI-related functional debt. The underlying core engine had been completely untouched &ndash; including all the known and hidden technical debt it had collected. Balancing technical and functional debt in TinyMCE Engineers tend to notice technical debt. Designers more likely notice functional debt. It&rsquo;s perhaps an over simplification, but it&rsquo;s an example of how different people (and roles) can be biassed towards noticing a type of debt &ndash; due to their knowledge and expertise. But having and paying down &lsquo;just the right amount&rsquo; of tech debt is important to a good product. How do you balance it? Here&rsquo;s three of the many phases we worked through with the TinyMCE core engine, when identifying, prioritising, tracking and paying down our technical debt. Identifying and fixing technical debt in rich text editors Engineers are great at identifying technical debt, because it tends to make their job harder. Rich text editor specialists would agree &ndash; in fact, they&rsquo;d likely say an editor tends to breed technical debt. Ask any of our developers about their least favourite piece of code to work on, or the weird workarounds they&rsquo;ve had to use every day and a list of technical debt to tackle, quickly takes shape. Another great source for insights on possible tech debt, is your support team&rsquo;s list of bug reports, or you can use the many code analysis tools that are available. However, when it comes to paying down the technical debt that's accrued, the list of &lsquo;doers&rsquo; is much shorter. Fixing it generally falls within the realm of the engineering team, either by planning the work within regular sprints or as major overhauls. [sidebar] Insights on the complexities of RTEs and technical debt Reduce technical debt with the right rich text editor Is your code half-life shorter than your engineering career? Managing technical debt is difficult in rich text editors Dangerous examples of technical debt in rich text editors Are developer velocity and technical debt impacted by a rich text editor? How to track and prioritize technical debt Identifying and fixing functional debt in rich text editors By comparison, functional debt can be difficult to find. And fixing it often requires a wider team of people. Because functional debt is user-facing, fixing it often requires a higher proportion of external research and testing than what&rsquo;s usually used for code-based technical debt. User testing, UI/UX design, A/B testing, and user flow analysis are likely required to find the right fix for functional debt. And that&rsquo;s before your engineers start testing for technical validation and implementation. The other challenge is noticing functional debt in a rich text editor. Functional debt that&rsquo;s been intentionally taken on during the development of a feature, can and should be tracked. But the real (hidden) danger comes from unintentional and environmental functional debt. The danger here is that users become too used to the way things work to realise there&rsquo;s functional shortfalls. This is particularly true for the people within your organisation &ndash; constantly working on a product makes its quirks seem normal and blinds you to its problems. Of course, there&rsquo;s some functional debt that&rsquo;s so glaring anyone can see it &ndash; but a lot of it is much more subtle. To find your functional debt, you often need one of two things: fresh eyes, or broader experience. So employ: User testing (especially with new users) should focus on expectations, pain points, and inefficiencies. This can be an invaluable method to identify functional debt. Feedback from new hires (as they learn the product) can help to identify both technical and functional debt that older hires are no longer paying attention to. In-depth competitor research and comparisons can highlight oddities that customers may stumble on. [sidebar] GOT TECH DEBT ISSUES? Before you discuss tech debt with your management or dev team, learn why managing technical debt is difficult for rich text editors. Pay down technical or functional debt in rich text editors Now you have a list of your technical and functional debt, which do you pay down first? Here&rsquo;s some questions to help filter your decision-making process: Is your development velocity as expected, or are you being dragged down by your tech debt backlog? Are any of your planned roadmap items likely to be blocked by existing tech debt? Do any of your editor features get constant bug reports from customers? How often are users looking for information about how to do something with your editor, whether via Google, support channels, or your docs? What do users say about your UI/UX in user testing? How often do users ask about changing the styling of your editor, or extending its UI? How big is your feature request backlog? Hints: If more of your problems align with the first three questions, you should probably address your tech debt backlog. However, if the last four questions are of more concern, then functional debt may be your bigger problem. Technical debt example: TinyMCE 6.0 core engine As mentioned, the breaking changes in TinyMCE 5.0 mainly focused on UI and overcoming its functional debt, so the other (non functional) tech debt that had been accruing in the editor&rsquo;s core engine since TinyMCE 4, was still untouched. Multiple pieces of debt were affecting developer velocity, stability and security, and the costs of leaving them unaddressed were growing. The planned 2022 release of version 6.0 of TinyMCE, was a convenient time to tackle the accumulated technical debt in the core engine. DOM Parser The single biggest piece of technical debt in the editor&rsquo;s engine was the DOM Parser. The task of maintaining a DOM Parser was once a key part of developing a secure rich text editor. However, it&rsquo;s a complicated and finicky piece of software, especially in JavaScript. And it requires constant updates to keep up with the latest security vulnerabilities, browser changes, and best practices. Thankfully, by TinyMCE 6.0, there were industry standard tools and APIs that could be utilised instead of maintaining an in-house DOM Parser. General technical debt Other changes were made to TinyMCE&rsquo;s architecture, to enable potential roadmap projects. A lot of cruft and baggage was removed, such as the code that supported IE11, which reduced development overhead and the surface area for potential bugs and vulnerabilities. And, thanks to TinyMCE 5.0&rsquo;s major UI overhaul, the reskinning of TinyMCE 6.0 took significantly less effort than it would have in the past. On reflection, focusing the paying down of our functional debt (UI related) and technical debt (core engine) in separate major releases (ie. our 5.0 and 6.0 overhauls), made the task of project scoping and management much easier. It allowed our team of expert rich text editor developers to focus their attention and more clearly communicate the effects on our customers. That said, ignoring one type of debt, for too long, isn&rsquo;t wise. Instead, you need to balance the ongoing challenge of what and when to address software debt. [sidebar] BUILDING A RICH TEXT EDITOR IS HARD Before you suggest building your own WYSIWYG editor, to either management or your dev team, learn the real price tag of building a rich text editor. Rich text editors continually accrue technical and functional debt The rapid pace of changes in the web development ecosystem and rate of rich text editing innovation, generates major threats &ndash; in the form of environmental functional debt &ndash; to every rich text editor. And it looms over inhouse builds, as well as every open source and commercial editor. It's a given that every editor must upgrade and add new features to satisfy changing standards and user expectations. That effort takes significant expertise and time, as well as deep domain knowledge to know whether to pay down software debt vs implement new features vs solve support tickets. It&rsquo;s a never ending conundrum. The biggest question to ask yourself is: do you have the resources to do it? Or would it be easier to buy a full-featured, enterprise grade editor from a third-party specialist?</p>","childMarkdownRemark":{"html":"<p>Technical debt is a well-known problem in software development. But in complex, user-facing software like rich text editors, technical debt isn&rsquo;t the only problem. Functional debt is just as important, and it poses a threat to your product, the value it delivers and its usage growth. [add a sidebar table of contents - using H2 + h3 headings] Table of Contents Rich text editors are full of complicated workflows and behaviours. There&rsquo;s formatting options: lists, tables, images. Copy and paste. Media embedding. Spell checking. Links. Emojis&hellip; the list goes on. Each of those features accrues its own technical debt, as does the underlying engine and other dependencies. This complexity makes managing tech debt in a rich text editor quite the job. It raises the risk of bugs, cruft, and code rot, decreased development velocity and even reduces user satisfaction as it creeps in from changes to the surrounding code or development ecosystem. Generally, when you&rsquo;re tracking and prioritising technical debt work, engineering mostly focuses on non-optimal code &ndash; or short-term implementation shortcuts &ndash; used to deliver a project faster. But for many products, the code is only half the picture. User satisfaction, value delivered and product marketability are as dependent on UI/UX as performance, and that&rsquo;s where functional debt poses a threat. And similarly to technical debt, functional debt is hard to identify and pay down. [sidebar] UI vs UX: What are they? UserTesting has a great article on the differences between UI and UX, including several different definitions by various UI and UX experts. While most intentional and unintentional tech debt accumulates when coding shortcuts are taken, that often creates a new form of debt &ndash; functional debt. But exactly what is functional debt and how do you manage it, especially in something as complex as a rich text editor (RTE) that&rsquo;s dependent on a roadmap of continual feature releases? What is functional debt? Functional debt is caused by suboptimal or partially implemented functionality and UI/UX. While that feature may be coded well, its functionality is less than ideal &ndash; often lacking certain capabilities &ndash; so the value it delivers is impacted. This is functional debt. For example: A feature&rsquo;s functionality is missing pieces due to time restraints or a misunderstanding of the user requirements. A user workflow is overcomplicated due to not enough time taken to streamline it. A feature was acceptable when it was implemented, but customer expectations have shifted and it now needs updating. [sidebar] How is feature debt different from functional debt? For more information on the differences, read: Introducing Feature Debt &ndash; the unconventional sibling of Tech Debt The pros and cons of technical debt and feature debt There are some broader definitions of technical debt that do include functional debt, but purely as a derivative of the overarching technical debt metaphor. However, Roman Predein&rsquo;s article on technical and functional debt proposes a solid argument for separating functional debt from technical debt. When they&rsquo;re classified as separate entities, development and product teams have greater clarity and are better equipped to communicate the problems each causes, their side effects and recommending what to pay down when. Costs of technical vs functional debt To recap: Technical debt is about how a feature was implemented. Functional debt is about what was implemented. The benefit of separating functional debt from technical debt, and understanding the &lsquo;how vs what&rsquo; delineation, is that you can more clearly differentiate between the internal and external cost impacts on your rich text editor. Technical debt in a rich text editor Functional debt in a rich text editor Example effects Developers regularly work around the limitations of the existing code Customers report a bug that&rsquo;s caused by badly architected code Potential roadmap project requires that existing and incompatible code be refactored Users have to resize images by opening a dialog and typing in numbers, rather than dragging resize handles Background and border colours can only be set on a whole table, instead of allowing granular cell-based styling External costs Bugs Performance issues Browser changes and updates Security risks Clunky workflows Non-intuitive functionality Outdated UI Incomplete features Internal costs Reduced developer velocity Implementation barrier to roadmap features Increased code complexity and fragility Increased bug reports Decreased customer satisfaction Increased feature requests from customers Losing customers to more &ldquo;modern&rdquo; rich text editors Example costs and impacts of technical vs functional debt Examples and causes of technical vs functional debt Software debt appears at any point in the development cycle: planning, development, and maintenance can all cause debt. But certain types of debt are more likely to occur at different inflection points within the cycle. These can be categorised into: choice, accidental, or outside forces and influences. Technical debt Functional debt Intentional Caused by choosing to take an implementation shortcut Caused by choosing to take a functional shortcut Unintentional Caused by accidentally taking an implementation shortcut Caused by accidentally taking a functional shortcut Environmental Implementation problems caused by outside forces Functional problems caused by outside forces Causes of technical and functional debt, split by intentional, unintentional and environmental Another way to view this conundrum is by the types of activities that cause the debt to occur. Rich text editors are inherently complex, with busy feature roadmaps, which creates an environment where both technical and functional debt rapidly accrue. New WYSIWYG features introduce functional debt It&rsquo;s not unusual for intentional and/or unintentional functional debt to be introduced during the planning and development of new WYSIWYG features: Tight deadlines can cause functionality to intentionally be cut from a version of a feature. This creates debt that must be paid later for the feature to be fully functional. Lack of time or resources for user research or UI design can cause unintentional functional debt in the form of accidental limitations. Intentional functional debt can and should be tracked, so it can be fixed later. However, unintentional functional debt is more likely discovered via customer feedback or support tickets. Unfortunately though, not unlike technical debt, functional debt also quietly sneaks in over time. Industry changes create environmental functional debt How often have you opened a new app and thought, &ldquo;Wow, this looks old&rdquo;? Although when it was created, the app&rsquo;s UI/UX probably met all the &lsquo;modern&rsquo; standards. However, standards quickly change. And if you don&rsquo;t keep up, that first impression of your product can be negative. A gap opens between what was and current expectations, and that&rsquo;s where environmental functional debt creeps in to fill the void. UI Functional debt RTE example 1: Moving away from Microsoft Word For a time, Microsoft Word was the most popular rich text editor. Its features, icons, and workflows were the gold standard for rich text editing. Then, as new rich text editors appeared on the market, UI and UX ideas were borrowed from MS Word &ndash; mainly because that&rsquo;s what developers and users were familiar with, which made the learning curve easier. User Interface (IU) for Microsoft Word 2007 and Microsoft Word 2011 for Mac. Source However in recent years, the rich text editing industry has exploded. There are now dozens of editors available, and they&rsquo;ve all had to adapt to outside forces like the rise of mobile devices. Each mobile device sparks different UI/UX expectations and feature functionality, that users want to use on their phone. This is the exact point where functional debt likely appears. And grows. A feature built five years ago, based on MS Word, likely now looks and feels dated. Dialogs (once so prevalent), are now replaced with inline pop ups and other innovative UI elements. Shortcuts and gestures are expected, as are lists, tables, and media embedding. But letting functional debt pile up in a rich text editor, is a shortcut to losing customers. And it&rsquo;s exactly what prompted the creation of TinyMCE 5.0. UI Functional debt RTE example 2: Paying back debt in TinyMCE 5.0 TinyMCE 4 worked well. Its UI was fairly clean, and the UI system was flexible for power users. Caption: TinyMCE 4&rsquo;s UI (in 2023). However, TinyMCE 4 was released in 2013 and soon after, React.js, Bootstrap, and Google&rsquo;s Material design language became popular. Responsive web design and accessibility gained traction. There was also a surge in new libraries and frameworks, which caused rapid innovation in the web development industry. In just four short years, the conventions that TinyMCE 4&rsquo;s UI were based on, were outdated. It was starting to look tired and its architecture made it difficult to keep up with certain industry changes. Functional debt was stacking up, purely due to environmental changes. TinyMCE 4 still worked, and its UI could have been left as-is for a while longer. However, TinyMCE&rsquo;s UI (and the framework behind it) is a core component of the editor, and paying down the debt required a replacement of the UI framework with a different in-house library, and rewriting the UI in the new framework. This was months of work. It was decided that delaying this work was not a wise business choice. A total overhaul was commenced. A half-life map of TinyMCE&rsquo;s lines of code (LoC) over time. The spike in LoC around early 2019 represents the TinyMCE 5.0 release. In February 2019, TinyMCE 5.0 was released with: Completely overhauled UI New icons New dialogs New buttons, and New UI framework. The entire UI engine was replaced, and every UI component rewritten from scratch. However, due to the size of the project, it only addressed UI-related functional debt. The underlying core engine had been completely untouched &ndash; including all the known and hidden technical debt it had collected. Balancing technical and functional debt in TinyMCE Engineers tend to notice technical debt. Designers more likely notice functional debt. It&rsquo;s perhaps an over simplification, but it&rsquo;s an example of how different people (and roles) can be biassed towards noticing a type of debt &ndash; due to their knowledge and expertise. But having and paying down &lsquo;just the right amount&rsquo; of tech debt is important to a good product. How do you balance it? Here&rsquo;s three of the many phases we worked through with the TinyMCE core engine, when identifying, prioritising, tracking and paying down our technical debt. Identifying and fixing technical debt in rich text editors Engineers are great at identifying technical debt, because it tends to make their job harder. Rich text editor specialists would agree &ndash; in fact, they&rsquo;d likely say an editor tends to breed technical debt. Ask any of our developers about their least favourite piece of code to work on, or the weird workarounds they&rsquo;ve had to use every day and a list of technical debt to tackle, quickly takes shape. Another great source for insights on possible tech debt, is your support team&rsquo;s list of bug reports, or you can use the many code analysis tools that are available. However, when it comes to paying down the technical debt that's accrued, the list of &lsquo;doers&rsquo; is much shorter. Fixing it generally falls within the realm of the engineering team, either by planning the work within regular sprints or as major overhauls. [sidebar] Insights on the complexities of RTEs and technical debt Reduce technical debt with the right rich text editor Is your code half-life shorter than your engineering career? Managing technical debt is difficult in rich text editors Dangerous examples of technical debt in rich text editors Are developer velocity and technical debt impacted by a rich text editor? How to track and prioritize technical debt Identifying and fixing functional debt in rich text editors By comparison, functional debt can be difficult to find. And fixing it often requires a wider team of people. Because functional debt is user-facing, fixing it often requires a higher proportion of external research and testing than what&rsquo;s usually used for code-based technical debt. User testing, UI/UX design, A/B testing, and user flow analysis are likely required to find the right fix for functional debt. And that&rsquo;s before your engineers start testing for technical validation and implementation. The other challenge is noticing functional debt in a rich text editor. Functional debt that&rsquo;s been intentionally taken on during the development of a feature, can and should be tracked. But the real (hidden) danger comes from unintentional and environmental functional debt. The danger here is that users become too used to the way things work to realise there&rsquo;s functional shortfalls. This is particularly true for the people within your organisation &ndash; constantly working on a product makes its quirks seem normal and blinds you to its problems. Of course, there&rsquo;s some functional debt that&rsquo;s so glaring anyone can see it &ndash; but a lot of it is much more subtle. To find your functional debt, you often need one of two things: fresh eyes, or broader experience. So employ: User testing (especially with new users) should focus on expectations, pain points, and inefficiencies. This can be an invaluable method to identify functional debt. Feedback from new hires (as they learn the product) can help to identify both technical and functional debt that older hires are no longer paying attention to. In-depth competitor research and comparisons can highlight oddities that customers may stumble on. [sidebar] GOT TECH DEBT ISSUES? Before you discuss tech debt with your management or dev team, learn why managing technical debt is difficult for rich text editors. Pay down technical or functional debt in rich text editors Now you have a list of your technical and functional debt, which do you pay down first? Here&rsquo;s some questions to help filter your decision-making process: Is your development velocity as expected, or are you being dragged down by your tech debt backlog? Are any of your planned roadmap items likely to be blocked by existing tech debt? Do any of your editor features get constant bug reports from customers? How often are users looking for information about how to do something with your editor, whether via Google, support channels, or your docs? What do users say about your UI/UX in user testing? How often do users ask about changing the styling of your editor, or extending its UI? How big is your feature request backlog? Hints: If more of your problems align with the first three questions, you should probably address your tech debt backlog. However, if the last four questions are of more concern, then functional debt may be your bigger problem. Technical debt example: TinyMCE 6.0 core engine As mentioned, the breaking changes in TinyMCE 5.0 mainly focused on UI and overcoming its functional debt, so the other (non functional) tech debt that had been accruing in the editor&rsquo;s core engine since TinyMCE 4, was still untouched. Multiple pieces of debt were affecting developer velocity, stability and security, and the costs of leaving them unaddressed were growing. The planned 2022 release of version 6.0 of TinyMCE, was a convenient time to tackle the accumulated technical debt in the core engine. DOM Parser The single biggest piece of technical debt in the editor&rsquo;s engine was the DOM Parser. The task of maintaining a DOM Parser was once a key part of developing a secure rich text editor. However, it&rsquo;s a complicated and finicky piece of software, especially in JavaScript. And it requires constant updates to keep up with the latest security vulnerabilities, browser changes, and best practices. Thankfully, by TinyMCE 6.0, there were industry standard tools and APIs that could be utilised instead of maintaining an in-house DOM Parser. General technical debt Other changes were made to TinyMCE&rsquo;s architecture, to enable potential roadmap projects. A lot of cruft and baggage was removed, such as the code that supported IE11, which reduced development overhead and the surface area for potential bugs and vulnerabilities. And, thanks to TinyMCE 5.0&rsquo;s major UI overhaul, the reskinning of TinyMCE 6.0 took significantly less effort than it would have in the past. On reflection, focusing the paying down of our functional debt (UI related) and technical debt (core engine) in separate major releases (ie. our 5.0 and 6.0 overhauls), made the task of project scoping and management much easier. It allowed our team of expert rich text editor developers to focus their attention and more clearly communicate the effects on our customers. That said, ignoring one type of debt, for too long, isn&rsquo;t wise. Instead, you need to balance the ongoing challenge of what and when to address software debt. [sidebar] BUILDING A RICH TEXT EDITOR IS HARD Before you suggest building your own WYSIWYG editor, to either management or your dev team, learn the real price tag of building a rich text editor. Rich text editors continually accrue technical and functional debt The rapid pace of changes in the web development ecosystem and rate of rich text editing innovation, generates major threats &ndash; in the form of environmental functional debt &ndash; to every rich text editor. And it looms over inhouse builds, as well as every open source and commercial editor. It's a given that every editor must upgrade and add new features to satisfy changing standards and user expectations. That effort takes significant expertise and time, as well as deep domain knowledge to know whether to pay down software debt vs implement new features vs solve support tickets. It&rsquo;s a never ending conundrum. The biggest question to ask yourself is: do you have the resources to do it? Or would it be easier to buy a full-featured, enterprise grade editor from a third-party specialist?</p>","htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Technical debt is a well-known problem in software development. But in complex, user-facing software like rich text editors, technical debt isn’t the only problem. Functional debt is just as important, and it poses a threat to your product, the value it delivers and its usage growth. [add a sidebar table of contents - using H2 + h3 headings] Table of Contents Rich text editors are full of complicated workflows and behaviours. There’s formatting options: lists, tables, images. Copy and paste. Media embedding. Spell checking. Links. Emojis… the list goes on. Each of those features accrues its own technical debt, as does the underlying engine and other dependencies. This complexity makes managing tech debt in a rich text editor quite the job. It raises the risk of bugs, cruft, and code rot, decreased development velocity and even reduces user satisfaction as it creeps in from changes to the surrounding code or development ecosystem. Generally, when you’re tracking and prioritising technical debt work, engineering mostly focuses on non-optimal code – or short-term implementation shortcuts – used to deliver a project faster. But for many products, the code is only half the picture. User satisfaction, value delivered and product marketability are as dependent on UI/UX as performance, and that’s where functional debt poses a threat. And similarly to technical debt, functional debt is hard to identify and pay down. [sidebar] UI vs UX: What are they? UserTesting has a great article on the differences between UI and UX, including several different definitions by various UI and UX experts. While most intentional and unintentional tech debt accumulates when coding shortcuts are taken, that often creates a new form of debt – functional debt. But exactly what is functional debt and how do you manage it, especially in something as complex as a rich text editor (RTE) that’s dependent on a roadmap of continual feature releases? What is functional debt? Functional debt is caused by suboptimal or partially implemented functionality and UI/UX. While that feature may be coded well, its functionality is less than ideal – often lacking certain capabilities – so the value it delivers is impacted. This is functional debt. For example: A feature’s functionality is missing pieces due to time restraints or a misunderstanding of the user requirements. A user workflow is overcomplicated due to not enough time taken to streamline it. A feature was acceptable when it was implemented, but customer expectations have shifted and it now needs updating. [sidebar] How is feature debt different from functional debt? For more information on the differences, read: Introducing Feature Debt – the unconventional sibling of Tech Debt The pros and cons of technical debt and feature debt There are some broader definitions of technical debt that do include functional debt, but purely as a derivative of the overarching technical debt metaphor. However, Roman Predein’s article on technical and functional debt proposes a solid argument for separating functional debt from technical debt. When they’re classified as separate entities, development and product teams have greater clarity and are better equipped to communicate the problems each causes, their side effects and recommending what to pay down when. Costs of technical vs functional debt To recap: Technical debt is about how a feature was implemented. Functional debt is about what was implemented. The benefit of separating functional debt from technical debt, and understanding the ‘how vs what’ delineation, is that you can more clearly differentiate between the internal and external cost impacts on your rich text editor. Technical debt in a rich text editor Functional debt in a rich text editor Example effects Developers regularly work around the limitations of the existing code Customers report a bug that’s caused by badly architected code Potential roadmap project requires that existing and incompatible code be refactored Users have to resize images by opening a dialog and typing in numbers, rather than dragging resize handles Background and border colours can only be set on a whole table, instead of allowing granular cell-based styling External costs Bugs Performance issues Browser changes and updates Security risks Clunky workflows Non-intuitive functionality Outdated UI Incomplete features Internal costs Reduced developer velocity Implementation barrier to roadmap features Increased code complexity and fragility Increased bug reports Decreased customer satisfaction Increased feature requests from customers Losing customers to more “modern” rich text editors Example costs and impacts of technical vs functional debt Examples and causes of technical vs functional debt Software debt appears at any point in the development cycle: planning, development, and maintenance can all cause debt. But certain types of debt are more likely to occur at different inflection points within the cycle. These can be categorised into: choice, accidental, or outside forces and influences. Technical debt Functional debt Intentional Caused by choosing to take an implementation shortcut Caused by choosing to take a functional shortcut Unintentional Caused by accidentally taking an implementation shortcut Caused by accidentally taking a functional shortcut Environmental Implementation problems caused by outside forces Functional problems caused by outside forces Causes of technical and functional debt, split by intentional, unintentional and environmental Another way to view this conundrum is by the types of activities that cause the debt to occur. Rich text editors are inherently complex, with busy feature roadmaps, which creates an environment where both technical and functional debt rapidly accrue. New WYSIWYG features introduce functional debt It’s not unusual for intentional and/or unintentional functional debt to be introduced during the planning and development of new WYSIWYG features: Tight deadlines can cause functionality to intentionally be cut from a version of a feature. This creates debt that must be paid later for the feature to be fully functional. Lack of time or resources for user research or UI design can cause unintentional functional debt in the form of accidental limitations. Intentional functional debt can and should be tracked, so it can be fixed later. However, unintentional functional debt is more likely discovered via customer feedback or support tickets. Unfortunately though, not unlike technical debt, functional debt also quietly sneaks in over time. Industry changes create environmental functional debt How often have you opened a new app and thought, “Wow, this looks old”? Although when it was created, the app’s UI/UX probably met all the ‘modern’ standards. However, standards quickly change. And if you don’t keep up, that first impression of your product can be negative. A gap opens between what was and current expectations, and that’s where environmental functional debt creeps in to fill the void. UI Functional debt RTE example 1: Moving away from Microsoft Word For a time, Microsoft Word was the most popular rich text editor. Its features, icons, and workflows were the gold standard for rich text editing. Then, as new rich text editors appeared on the market, UI and UX ideas were borrowed from MS Word – mainly because that’s what developers and users were familiar with, which made the learning curve easier. User Interface (IU) for Microsoft Word 2007 and Microsoft Word 2011 for Mac. Source However in recent years, the rich text editing industry has exploded. There are now dozens of editors available, and they’ve all had to adapt to outside forces like the rise of mobile devices. Each mobile device sparks different UI/UX expectations and feature functionality, that users want to use on their phone. This is the exact point where functional debt likely appears. And grows. A feature built five years ago, based on MS Word, likely now looks and feels dated. Dialogs (once so prevalent), are now replaced with inline pop ups and other innovative UI elements. Shortcuts and gestures are expected, as are lists, tables, and media embedding. But letting functional debt pile up in a rich text editor, is a shortcut to losing customers. And it’s exactly what prompted the creation of TinyMCE 5.0. UI Functional debt RTE example 2: Paying back debt in TinyMCE 5.0 TinyMCE 4 worked well. Its UI was fairly clean, and the UI system was flexible for power users. Caption: TinyMCE 4’s UI (in 2023). However, TinyMCE 4 was released in 2013 and soon after, React.js, Bootstrap, and Google’s Material design language became popular. Responsive web design and accessibility gained traction. There was also a surge in new libraries and frameworks, which caused rapid innovation in the web development industry. In just four short years, the conventions that TinyMCE 4’s UI were based on, were outdated. It was starting to look tired and its architecture made it difficult to keep up with certain industry changes. Functional debt was stacking up, purely due to environmental changes. TinyMCE 4 still worked, and its UI could have been left as-is for a while longer. However, TinyMCE’s UI (and the framework behind it) is a core component of the editor, and paying down the debt required a replacement of the UI framework with a different in-house library, and rewriting the UI in the new framework. This was months of work. It was decided that delaying this work was not a wise business choice. A total overhaul was commenced. A half-life map of TinyMCE’s lines of code (LoC) over time. The spike in LoC around early 2019 represents the TinyMCE 5.0 release. In February 2019, TinyMCE 5.0 was released with: Completely overhauled UI New icons New dialogs New buttons, and New UI framework. The entire UI engine was replaced, and every UI component rewritten from scratch. However, due to the size of the project, it only addressed UI-related functional debt. The underlying core engine had been completely untouched – including all the known and hidden technical debt it had collected. Balancing technical and functional debt in TinyMCE Engineers tend to notice technical debt. Designers more likely notice functional debt. It’s perhaps an over simplification, but it’s an example of how different people (and roles) can be biassed towards noticing a type of debt – due to their knowledge and expertise. But having and paying down ‘just the right amount’ of tech debt is important to a good product. How do you balance it? Here’s three of the many phases we worked through with the TinyMCE core engine, when identifying, prioritising, tracking and paying down our technical debt. Identifying and fixing technical debt in rich text editors Engineers are great at identifying technical debt, because it tends to make their job harder. Rich text editor specialists would agree – in fact, they’d likely say an editor tends to breed technical debt. Ask any of our developers about their least favourite piece of code to work on, or the weird workarounds they’ve had to use every day and a list of technical debt to tackle, quickly takes shape. Another great source for insights on possible tech debt, is your support team’s list of bug reports, or you can use the many code analysis tools that are available. However, when it comes to paying down the technical debt that's accrued, the list of ‘doers’ is much shorter. Fixing it generally falls within the realm of the engineering team, either by planning the work within regular sprints or as major overhauls. [sidebar] Insights on the complexities of RTEs and technical debt Reduce technical debt with the right rich text editor Is your code half-life shorter than your engineering career? Managing technical debt is difficult in rich text editors Dangerous examples of technical debt in rich text editors Are developer velocity and technical debt impacted by a rich text editor? How to track and prioritize technical debt Identifying and fixing functional debt in rich text editors By comparison, functional debt can be difficult to find. And fixing it often requires a wider team of people. Because functional debt is user-facing, fixing it often requires a higher proportion of external research and testing than what’s usually used for code-based technical debt. User testing, UI/UX design, A/B testing, and user flow analysis are likely required to find the right fix for functional debt. And that’s before your engineers start testing for technical validation and implementation. The other challenge is noticing functional debt in a rich text editor. Functional debt that’s been intentionally taken on during the development of a feature, can and should be tracked. But the real (hidden) danger comes from unintentional and environmental functional debt. The danger here is that users become too used to the way things work to realise there’s functional shortfalls. This is particularly true for the people within your organisation – constantly working on a product makes its quirks seem normal and blinds you to its problems. Of course, there’s some functional debt that’s so glaring anyone can see it – but a lot of it is much more subtle. To find your functional debt, you often need one of two things: fresh eyes, or broader experience. So employ: User testing (especially with new users) should focus on expectations, pain points, and inefficiencies. This can be an invaluable method to identify functional debt. Feedback from new hires (as they learn the product) can help to identify both technical and functional debt that older hires are no longer paying attention to. In-depth competitor research and comparisons can highlight oddities that customers may stumble on. [sidebar] GOT TECH DEBT ISSUES? Before you discuss tech debt with your management or dev team, learn why managing technical debt is difficult for rich text editors. Pay down technical or functional debt in rich text editors Now you have a list of your technical and functional debt, which do you pay down first? Here’s some questions to help filter your decision-making process: Is your development velocity as expected, or are you being dragged down by your tech debt backlog? Are any of your planned roadmap items likely to be blocked by existing tech debt? Do any of your editor features get constant bug reports from customers? How often are users looking for information about how to do something with your editor, whether via Google, support channels, or your docs? What do users say about your UI/UX in user testing? How often do users ask about changing the styling of your editor, or extending its UI? How big is your feature request backlog? Hints: If more of your problems align with the first three questions, you should probably address your tech debt backlog. However, if the last four questions are of more concern, then functional debt may be your bigger problem. Technical debt example: TinyMCE 6.0 core engine As mentioned, the breaking changes in TinyMCE 5.0 mainly focused on UI and overcoming its functional debt, so the other (non functional) tech debt that had been accruing in the editor’s core engine since TinyMCE 4, was still untouched. Multiple pieces of debt were affecting developer velocity, stability and security, and the costs of leaving them unaddressed were growing. The planned 2022 release of version 6.0 of TinyMCE, was a convenient time to tackle the accumulated technical debt in the core engine. DOM Parser The single biggest piece of technical debt in the editor’s engine was the DOM Parser. The task of maintaining a DOM Parser was once a key part of developing a secure rich text editor. However, it’s a complicated and finicky piece of software, especially in JavaScript. And it requires constant updates to keep up with the latest security vulnerabilities, browser changes, and best practices. Thankfully, by TinyMCE 6.0, there were industry standard tools and APIs that could be utilised instead of maintaining an in-house DOM Parser. General technical debt Other changes were made to TinyMCE’s architecture, to enable potential roadmap projects. A lot of cruft and baggage was removed, such as the code that supported IE11, which reduced development overhead and the surface area for potential bugs and vulnerabilities. And, thanks to TinyMCE 5.0’s major UI overhaul, the reskinning of TinyMCE 6.0 took significantly less effort than it would have in the past. On reflection, focusing the paying down of our functional debt (UI related) and technical debt (core engine) in separate major releases (ie. our 5.0 and 6.0 overhauls), made the task of project scoping and management much easier. It allowed our team of expert rich text editor developers to focus their attention and more clearly communicate the effects on our customers. That said, ignoring one type of debt, for too long, isn’t wise. Instead, you need to balance the ongoing challenge of what and when to address software debt. [sidebar] BUILDING A RICH TEXT EDITOR IS HARD Before you suggest building your own WYSIWYG editor, to either management or your dev team, learn the real price tag of building a rich text editor. Rich text editors continually accrue technical and functional debt The rapid pace of changes in the web development ecosystem and rate of rich text editing innovation, generates major threats – in the form of environmental functional debt – to every rich text editor. And it looms over inhouse builds, as well as every open source and commercial editor. It's a given that every editor must upgrade and add new features to satisfy changing standards and user expectations. That effort takes significant expertise and time, as well as deep domain knowledge to know whether to pay down software debt vs implement new features vs solve support tickets. It’s a never ending conundrum. The biggest question to ask yourself is: do you have the resources to do it? Or would it be easier to buy a full-featured, enterprise grade editor from a third-party specialist?"}]}],"data":{"quirksMode":false}}}},"body2":null,"codepens":null,"heroImage":{"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=2560&q=80&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=640&h=359&q=80&fit=scale 640w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=1280&h=719&q=80&fit=scale 1280w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=1925&h=1081&q=80&fit=scale 1925w","srcWebp":"//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=2560&q=80&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=640&h=359&q=80&fm=webp&fit=scale 640w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=1280&h=719&q=80&fm=webp&fit=scale 1280w,\n//images.ctfassets.net/s600jj41gsex/7p6SJvrwphZ1vTDomoRs5J/bc466e697ac16d79060b6c1b31f178e0/Tech_Debt_-7__1_.png?w=1925&h=1081&q=80&fm=webp&fit=scale 1925w","sizes":"(max-width: 2560px) 100vw, 2560px"}},"alt":"the symbols that represent debt and it's affects, including time and money loss.","artistName":null,"artistUrl":null},"author":{"slug":"millie-macdonald","name":"Millie Macdonald","image":{"fluid":{"base64":"data:image/jpeg;base64,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","aspectRatio":1,"src":"//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=48&q=50&fit=scale","srcSet":"//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=12&h=12&q=50&fit=scale 12w,\n//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=24&h=24&q=50&fit=scale 24w,\n//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=48&h=48&q=50&fit=scale 48w,\n//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=72&h=72&q=50&fit=scale 72w,\n//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=96&h=96&q=50&fit=scale 96w,\n//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=144&h=144&q=50&fit=scale 144w,\n//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=400&h=400&q=50&fit=scale 400w","srcWebp":"//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=48&q=50&fm=webp&fit=scale","srcSetWebp":"//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=12&h=12&q=50&fm=webp&fit=scale 12w,\n//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=24&h=24&q=50&fm=webp&fit=scale 24w,\n//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=48&h=48&q=50&fm=webp&fit=scale 48w,\n//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=72&h=72&q=50&fm=webp&fit=scale 72w,\n//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=96&h=96&q=50&fm=webp&fit=scale 96w,\n//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=144&h=144&q=50&fm=webp&fit=scale 144w,\n//images.ctfassets.net/s600jj41gsex/1WjKPKyRtd0IepFyXQBiHt/46d51b0fc7ee0c7700a2d3a835d20735/seYCjfJw_400x400.jpg?w=400&h=400&q=50&fm=webp&fit=scale 400w","sizes":"(max-width: 48px) 100vw, 48px"}},"shortBio":{"shortBio":"Millie is a JS developer and leads the core editor team at Tiny. She specialises in crazy things like copy and paste, image handling, and tables, and occasionally gets to play with ReasonML. She's also an esports community manager and tournament organiser in her spare time."}},"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"},"setkaCss":["https://www.tiny.cloud/blog/setka/common_css_1634572086.css","https://www.tiny.cloud/blog/setka/T-MqHt4_cRRlImdGVfupaQ.css","https://www.tiny.cloud/blog/setka/UnEeJJ5vn9rZGngAji4oNg.css"],"setkaHtml":{"body_html":"<div class=\"stk-post stk-layout_12col_36009 stk-theme_44178\" data-stk=\"{&quot;images&quot;:[{&quot;id&quot;:286062,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;},{&quot;id&quot;:284024,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;},{&quot;id&quot;:279692,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;},{&quot;id&quot;:279166,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;},{&quot;id&quot;:277483,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;},{&quot;id&quot;:277482,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;},{&quot;id&quot;:277481,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;},{&quot;id&quot;:277480,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;}]}\" data-ui-id=\"post\" data-ce-tag=\"post\" data-reset-type=\"class\" data-layout-type=\"limited\" data-editor-version=\"3.2.5\"><div class=\"stk-grid stk-theme_44178__mb_2\" data-ce-tag=\"grid\"><div data-col-width=\"12\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"10\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"stk-reset stk-theme_44178__color_44178_custom_color_2 ce-element--empty stk-element_no-text\" data-ce-tag=\"paragraph\"></p><p class=\"stk-reset stk-theme_44178__style_font_style-1628517328397 stk-theme_44178__color_44178_custom_color_2 stk-theme_44178__mb_05\" data-ce-tag=\"paragraph\"><strong class=\"stk-reset\" data-gtm-vis-has-fired-10171822_255=\"1\">developer insights </strong></p><h1 class=\"stk-reset stk-theme_44178__color_44178_custom_color_1 stk-theme_44178__style_font_style-1635835947787\" data-ce-tag=\"paragraph\">Functional debt vs&nbsp;Technical debt: What’s the difference in&nbsp;a&nbsp;rich text editor?</h1></div><div data-col-width=\"2\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"3\" class=\"stk-grid-col\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__style_small_text stk-reset stk-theme_44178__color_44178_custom_color_3\" data-ce-tag=\"paragraph\">Published {{setkaPost.lastUpdated}}<br></p></div><div data-col-width=\"9\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__style_small_text stk-reset stk-theme_44178__color_44178_custom_color_3\" data-ce-tag=\"paragraph\"><img alt=\"\" class=\"stk-reset stk-theme_44178__symbol_custom_image_3740221 stk-icon\" src=\"https://ucarecdn.com/ff75d5fb-c11f-4155-b153-3eb9441ed072/\"> {{setkaPost.readTime}}</p></div></div><figure class=\"stk-reset stk-image-figure\" data-ce-tag=\"image-figure\"><div class=\"stk-mask\" data-ce-tag=\"mask\"><img class=\"stk-image stk-reset\" data-image-id=\"286062\" src=\"https://ucarecdn.com/6a9bf2f1-8545-4bd5-b7f6-25c3f9e5468e/\" loading=\"lazy\"/></div></figure><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"12\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div></div></div><div class=\"stk-grid stk-theme_44178__mb_15\" data-ce-tag=\"grid\"><div data-col-width=\"9\" class=\"stk-grid-col\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__style_font_style-1628517294418 stk-reset stk-theme_44178__color_44178_custom_color_1\" data-ce-tag=\"paragraph\">Technical debt is&nbsp;a&nbsp;well-known problem in&nbsp;software development. But in&nbsp;complex, user-facing software like rich text editors, technical debt isn’t the only problem. Functional debt is&nbsp;just as&nbsp;important, and it&nbsp;poses a&nbsp;threat to&nbsp;your product, the value it&nbsp;delivers and its usage growth.</p></div><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-grid stk-grid__layout_columns\" data-ce-tag=\"grid\"><div data-col-width=\"1\" class=\"stk-grid-col\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><figure class=\"stk-reset stk-image-figure\" data-ce-tag=\"image-figure\"><div class=\"stk-mask\" data-ce-tag=\"mask\"><img src=\"https://ucarecdn.com/f4f978a8-138d-4000-8d66-48ab76705afb/\" data-image-id=\"221201\" data-image-name=\"millie.png\" class=\"stk-image stk-reset\" width=\"942\" height=\"942\" loading=\"lazy\"/></div></figure></div><div data-col-width=\"2\" class=\"stk-grid-col stk-grid-col_last valign-middle\" data-ce-tag=\"grid-col\"><p class=\"stk-reset stk-theme_44178__style_font_style-1628517714937 stk-theme_44178__mb_0 stk-theme_44178__color_44178_custom_color_1\" data-ce-tag=\"paragraph\">Millie Macdonald</p><p class=\"stk-reset stk-theme_44178__style_small_text stk-theme_44178__color_44178_custom_color_3\" data-ce-tag=\"paragraph\">Product Manager at Halo Connect</p></div></div></div></div><hr class=\"stk-theme_44178__separator_basic_divider stk-theme_44178__mb_2 stk-reset\"/><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col\" data-ce-tag=\"grid-col\"><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Rich text editors are full of&nbsp;complicated workflows and behaviours. There’s formatting options: lists, tables, images. Copy and paste. Media embedding. Spell checking. Links. Emojis… the list goes&nbsp;on.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Each of&nbsp;those features accrues its own technical debt, as&nbsp;does the underlying engine and other dependencies. This complexity makes <a href=\"https://www.tiny.cloud/blog/manage-technical-debt/\" target=\"_blank\" class=\"stk-reset\">managing tech debt in&nbsp;a&nbsp;rich text editor</a> quite the&nbsp;job. It&nbsp;raises the risk of&nbsp;bugs, cruft, and code rot, decreased development velocity and even reduces user satisfaction as&nbsp;it&nbsp;creeps in&nbsp;from changes to&nbsp;the surrounding code or&nbsp;development ecosystem.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Generally, when you’re <a href=\"https://www.tiny.cloud/blog/technical-debt-tracking/\" target=\"_blank\" class=\"stk-reset\">tracking and prioritising technical debt</a> work, engineering mostly focuses on&nbsp;non-optimal code&nbsp;— or&nbsp;short-term implementation shortcuts&nbsp;— used to&nbsp;deliver a&nbsp;project faster.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">But for many products, the code is&nbsp;only <em class=\"stk-reset\">half </em>the picture.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">User satisfaction, value delivered and product marketability are as&nbsp;dependent on&nbsp;UI/UX as&nbsp;performance, and that’s where functional debt poses a&nbsp;threat. And similarly to&nbsp;technical debt, functional debt is&nbsp;hard to&nbsp;identify and pay down.</p></div><div data-col-width=\"1\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-grid\" data-stk-css=\"stkwDbTS\" data-anim-m=\"false\" data-ce-tag=\"grid\"><div data-col-width=\"3\" class=\"stk-theme_44178__pad_round_1 stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__style_font_style-1628517714937 stk-reset stk-theme_44178__color_44178_custom_color_1 stk-theme_44178__mb_0\" data-ce-tag=\"paragraph\"><strong class=\"stk-reset\">TABLE OF&nbsp;CONTENTS</strong></p><hr class=\"stk-theme_44178__separator_basic_divider stk-theme_44178__mb_05 stk-reset\"/><p class=\"stk-theme_44178__style_small_text stk-theme_44178__color_44178_custom_color_3 stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\"><a class=\"stk-reset\" href=\"#stk-1\">What is functional debt?</a></p><p class=\"stk-theme_44178__style_small_text stk-theme_44178__color_44178_custom_color_3 stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\"><a class=\"stk-reset\" href=\"#stk-2\">Costs of technical vs functional debt</a></p><p class=\"stk-theme_44178__style_small_text stk-theme_44178__color_44178_custom_color_3 stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\"><a class=\"stk-reset\" href=\"#stk-3\">Examples and causes of technical vs functional debt</a></p><p class=\"stk-theme_44178__style_small_text stk-theme_44178__color_44178_custom_color_3 stk-reset stk-theme_44178__mb_05\" data-ce-tag=\"paragraph\"><a class=\"stk-reset\" href=\"#stk-4\">Balancing technical and functional debt in TinyMCE</a></p><p class=\"stk-theme_44178__style_small_text stk-reset\" data-ce-tag=\"paragraph\"><a class=\"stk-reset\" href=\"#stk-5\">Rich text editors continually accrue technical and functional debt</a></p></div></div></div></div><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col\" data-ce-tag=\"grid-col\"><p class=\"stk-reset\" data-ce-tag=\"paragraph\">While most intentional and unintentional tech debt accumulates when coding shortcuts are taken, that often creates a&nbsp;new form of&nbsp;debt&nbsp;— functional debt.</p><p class=\"stk-theme_44178__mb_2 stk-reset\" data-ce-tag=\"paragraph\">But exactly what is&nbsp;functional debt and how do&nbsp;you manage it, especially in&nbsp;something as&nbsp;complex as&nbsp;a&nbsp;rich text editor (RTE) that’s dependent on&nbsp;a&nbsp;<a class=\"stk-reset\" href=\"https://www.tiny.cloud/roadmap/\" target=\"_blank\">roadmap of&nbsp;continual feature releases</a>?</p><h2 class=\"stk-theme_44178__style_large_header stk-reset\" id=\"stk-1\" data-ce-tag=\"paragraph\">What is&nbsp;functional debt?</h2><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Functional debt is&nbsp;caused by&nbsp;suboptimal or&nbsp;partially implemented functionality and UI/UX. While that feature may be&nbsp;coded well, its functionality is&nbsp;less than ideal&nbsp;— often lacking certain capabilities&nbsp;— so&nbsp;the value it&nbsp;delivers is&nbsp;impacted. This is&nbsp;functional debt.</p></div><div data-col-width=\"1\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-grid\" data-stk-css=\"stk7O3KJ\" data-ce-tag=\"grid\" data-anim-m=\"false\" data-anim=\"true\" data-anim-name=\"preset-slideInRight\" data-anim-trigger=\"scroll\" data-anim-duration=\"1\" data-anim-delay=\"0\" data-anim-scroll-start=\"10\" data-anim-scroll-finish=\"90\"><div data-col-width=\"3\" class=\"stk-theme_44178__pad_round_1 stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"stk-reset stk-theme_44178__style_font_style-1628517328397 stk-theme_44178__mb_05\" data-ce-tag=\"paragraph\"><strong class=\"stk-reset\">UI&nbsp;vs&nbsp;UX: What are they?</strong></p><p class=\"stk-theme_44178__style_small_text stk-reset\" data-ce-tag=\"paragraph\"><a class=\"stk-reset\" href=\"https://www.usertesting.com/resources/topics/ui-vs-ux\" target=\"_blank\">UserTesting has a&nbsp;great article on&nbsp;the differences between UI&nbsp;and UX</a>, including several different definitions by&nbsp;various UI&nbsp;and UX&nbsp;experts.</p></div></div></div></div><div class=\"stk-theme_44178__mb_2 stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">For example:</p><ul class=\"stk-reset\" data-ce-tag=\"list\"><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">A&nbsp;feature’s functionality is&nbsp;missing pieces due to&nbsp;time restraints or&nbsp;a&nbsp;misunderstanding of&nbsp;the user requirements.</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">A&nbsp;user workflow is&nbsp;overcomplicated due to&nbsp;not enough time taken to&nbsp;streamline&nbsp;it.</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">A&nbsp;feature was acceptable when it&nbsp;was implemented, but customer expectations have shifted and it&nbsp;now needs updating.</li></ul><p class=\"stk-reset\" data-ce-tag=\"paragraph\">There are some broader definitions of&nbsp;technical debt that do&nbsp;include functional debt, but purely as&nbsp;a&nbsp;derivative of&nbsp;the <a href=\"https://www.tiny.cloud/blog/reduce-technical-debt/\" target=\"_blank\" class=\"stk-reset\">overarching technical debt metaphor</a>. However, <a href=\"https://apiumhub.com/tech-blog-barcelona/technical-debt/\" target=\"_blank\" class=\"stk-reset\">Roman Predein’s article on&nbsp;technical and functional debt</a> proposes a&nbsp;solid argument for separating functional debt from technical debt.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">When they’re classified as&nbsp;separate entities, development and product teams have greater clarity and are better equipped to&nbsp;communicate the problems each causes, their side effects and recommending what to&nbsp;pay down when.</p></div><div data-col-width=\"1\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-grid\" data-stk-css=\"stkX76iA\" data-ce-tag=\"grid\" data-anim-m=\"false\" data-anim=\"true\" data-anim-name=\"preset-slideInRight\" data-anim-trigger=\"scroll\" data-anim-duration=\"1\" data-anim-delay=\"0\" data-anim-scroll-start=\"10\" data-anim-scroll-finish=\"90\"><div data-col-width=\"3\" class=\"stk-theme_44178__pad_round_1 stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"stk-reset stk-theme_44178__style_font_style-1628517328397 stk-theme_44178__mb_05\" data-ce-tag=\"paragraph\"><strong class=\"stk-reset\">How is&nbsp;feature debt different from functional debt?</strong></p><p class=\"stk-theme_44178__style_small_text stk-reset stk-theme_44178__mb_05\" data-ce-tag=\"paragraph\">For more information on&nbsp;the differences, read:</p><p class=\"stk-theme_44178__style_small_text stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">The pros and cons of&nbsp;technical debt and feature debt</p></div></div></div></div><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><h2 class=\"stk-theme_44178__style_large_header stk-reset\" id=\"stk-2\" data-ce-tag=\"paragraph\">Costs of&nbsp;technical vs&nbsp;functional debt</h2><p class=\"stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">To&nbsp;recap:</p><ul class=\"stk-reset\" data-ce-tag=\"list\"><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">Technical debt is&nbsp;about <em class=\"stk-reset\">how</em> a&nbsp;feature was implemented.</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">Functional debt is&nbsp;about <em class=\"stk-reset\">what</em> was implemented.</li></ul><p class=\"stk-reset\" data-ce-tag=\"paragraph\">The benefit of&nbsp;separating functional debt from technical debt, and understanding the ‘how vs&nbsp;what’ delineation, is&nbsp;that you can more clearly differentiate between the internal and external cost impacts on&nbsp;your rich text editor.</p></div><div data-col-width=\"4\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div><table data-responsive-type=\"cards\" class=\"stk-theme_44178__style_small_text stk-table--zebra stk-theme_44178__var_44178_custom_color_2 stk-reset stk-table\" data-ce-tag=\"table\"><colgroup><col class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset\" data-stk-id=\"440\"/><col class=\"stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset\" data-stk-id=\"441\"/><col class=\"stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset\" data-stk-id=\"442\"/></colgroup><thead class=\"stk-reset\"><tr class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-table-row\"><th class=\"stk-theme_44178__style_font_style-1628517328397 ce-element--empty stk-element_no-text stk-reset stk-table-cell\" data-stk-css=\"stkDmuil\" data-ce-tag=\"th\"></th><th class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-table-cell\" data-stk-css=\"stkeQT36\" data-ce-tag=\"th\">Technical debt in a rich text editor</th><th class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-table-cell\" data-stk-css=\"stkr1c1r\" data-ce-tag=\"th\">Functional debt in a rich text editor</th></tr></thead><tbody class=\"stk-reset\"><tr class=\"stk-reset stk-table-row\"><td class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-table-cell\" data-stk-css=\"stko-a84\" data-ce-tag=\"td\"><strong class=\"stk-reset\">Example effects</strong></td><td class=\"stk-theme_44178__style_small_text stk-reset stk-table-cell\" data-stk-css=\"stkaGMer\" data-ce-tag=\"td\" data-cell-header=\"Technical debt in a rich text editor\">- Developers regularly work around the limitations of the existing code<br>- Customers report a bug that’s caused by badly architected code<br>- Potential roadmap project requires that existing and incompatible code be refactored</td><td class=\"stk-theme_44178__style_small_text stk-reset stk-table-cell\" data-stk-css=\"stkhou7U\" data-ce-tag=\"td\" data-cell-header=\"Functional debt in a rich text editor\">- Users have to <a class=\"stk-reset\" href=\"https://www.tiny.cloud/blog/resize-image/\" target=\"\">resize images</a> by opening a dialog and typing in numbers, rather than dragging resize handles <br>- Background and border colours can only be set on a whole table, instead of allowing granular cell-based styling</td></tr><tr class=\"stk-reset stk-table-row\"><td class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-table-cell\" data-stk-css=\"stkfvkiI\" data-ce-tag=\"td\"><strong class=\"stk-reset\">External costs</strong></td><td class=\"stk-theme_44178__style_small_text stk-reset stk-table-cell\" data-stk-css=\"stkSO7PE\" data-ce-tag=\"td\" data-cell-header=\"Technical debt in a rich text editor\">- Bugs<br>- Performance issues<br>- Browser changes and updates<br>- Security risks</td><td class=\"stk-theme_44178__style_small_text stk-reset stk-table-cell\" data-stk-css=\"stk2VY0P\" data-ce-tag=\"td\" data-cell-header=\"Functional debt in a rich text editor\">- Clunky workflows<br>- Non-intuitive functionality<br>- Outdated UI<br>- Incomplete features</td></tr><tr class=\"stk-reset stk-table-row\"><td class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-table-cell\" data-stk-css=\"stkpY7T_\" data-ce-tag=\"td\"><strong class=\"stk-reset\">Internal costs</strong></td><td class=\"stk-theme_44178__style_small_text stk-reset stk-table-cell\" data-stk-css=\"stk61yRH\" data-ce-tag=\"td\" data-cell-header=\"Technical debt in a rich text editor\">- Reduced developer velocity<br>- Implementation barrier to roadmap features<br>- Increased code complexity and fragility<br>- Increased bug reports</td><td class=\"stk-theme_44178__style_small_text stk-reset stk-table-cell\" data-stk-css=\"stk0Zy_s\" data-ce-tag=\"td\" data-cell-header=\"Functional debt in a rich text editor\">- Decreased customer satisfaction<br>- Increased feature requests from customers<br>- Losing customers to more “modern” rich text editors</td></tr></tbody></table><p class=\"stk-theme_44178__style_small_text stk-theme_44178__color_44178_custom_color_3 stk-theme_44178__mb_2 stk-reset\" data-ce-tag=\"paragraph\">Example costs and impacts of technical vs functional debt</p><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><h2 class=\"stk-theme_44178__style_large_header stk-reset\" id=\"stk-3\" data-ce-tag=\"paragraph\">Examples and causes of technical vs functional debt</h2><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Software debt appears at any point in the development cycle: planning, development, and maintenance can all cause debt. But certain types of debt are more likely to occur at different inflection points within the cycle.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">These can be categorised into: choice, accidental, or outside forces and influences.</p></div><div data-col-width=\"4\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div><table data-responsive-type=\"cards\" class=\"stk-theme_44178__style_small_text stk-table--zebra stk-theme_44178__var_44178_custom_color_2 stk-reset stk-table\" data-ce-tag=\"table\"><colgroup><col class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset\" data-stk-id=\"468\"/><col class=\"stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset\" data-stk-id=\"469\"/><col class=\"stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset stk-reset\" data-stk-id=\"470\"/></colgroup><thead class=\"stk-reset\"><tr class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-table-row\"><th class=\"stk-theme_44178__style_font_style-1628517328397 ce-element--empty stk-element_no-text stk-reset stk-table-cell\" data-stk-css=\"stkVC2YR\" data-ce-tag=\"th\"></th><th class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-table-cell\" data-stk-css=\"stkgYlxO\" data-ce-tag=\"th\">Technical debt</th><th class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-table-cell\" data-stk-css=\"stkskviH\" data-ce-tag=\"th\">Functional debt</th></tr></thead><tbody class=\"stk-reset\"><tr class=\"stk-reset stk-table-row\"><td class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-table-cell\" data-stk-css=\"stkZZQ0_\" data-ce-tag=\"td\"><strong class=\"stk-reset\">Intentional</strong></td><td class=\"stk-theme_44178__style_small_text stk-reset stk-table-cell\" data-stk-css=\"stkIrWU8\" data-ce-tag=\"td\" data-cell-header=\"Technical debt\">Caused by <strong class=\"stk-reset\">choosing</strong> to take an <strong class=\"stk-reset\">implementation</strong> shortcut</td><td class=\"stk-theme_44178__style_small_text stk-reset stk-table-cell\" data-stk-css=\"stktN_ST\" data-ce-tag=\"td\" data-cell-header=\"Functional debt\">Caused by <strong class=\"stk-reset\">choosing</strong> to take a <strong class=\"stk-reset\">functional</strong> shortcut</td></tr><tr class=\"stk-reset stk-table-row\"><td class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-table-cell\" data-stk-css=\"stkc1oXV\" data-ce-tag=\"td\"><strong class=\"stk-reset\">Unintentional</strong></td><td class=\"stk-theme_44178__style_small_text stk-reset stk-table-cell\" data-stk-css=\"stk_WswQ\" data-ce-tag=\"td\" data-cell-header=\"Technical debt\">Caused by <strong class=\"stk-reset\">accidentally</strong> taking an <strong class=\"stk-reset\">implementation</strong> shortcut</td><td class=\"stk-theme_44178__style_small_text stk-reset stk-table-cell\" data-stk-css=\"stk4h5wl\" data-ce-tag=\"td\" data-cell-header=\"Functional debt\">Caused by <strong class=\"stk-reset\">accidentally</strong> taking a <strong class=\"stk-reset\">functional</strong> shortcut</td></tr><tr class=\"stk-reset stk-table-row\"><td class=\"stk-theme_44178__style_font_style-1628517328397 stk-reset stk-table-cell\" data-stk-css=\"stk1qK6f\" data-ce-tag=\"td\"><strong class=\"stk-reset\">Environmental</strong></td><td class=\"stk-theme_44178__style_small_text stk-reset stk-table-cell\" data-stk-css=\"stka3giV\" data-ce-tag=\"td\" data-cell-header=\"Technical debt\"><strong class=\"stk-reset\">Implementation</strong> problems caused by <strong class=\"stk-reset\">outside forces</strong></td><td class=\"stk-theme_44178__style_small_text stk-reset stk-table-cell\" data-stk-css=\"stkJhyDq\" data-ce-tag=\"td\" data-cell-header=\"Functional debt\"><strong class=\"stk-reset\">Functional</strong> problems caused by <strong class=\"stk-reset\">outside forces</strong></td></tr></tbody></table><p class=\"stk-theme_44178__style_small_text stk-theme_44178__color_44178_custom_color_3 stk-reset\" data-ce-tag=\"paragraph\">Causes of technical and functional debt, split by intentional, unintentional and environmental</p><div class=\"stk-theme_44178__mb_2 stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Another way to view this conundrum is by the types of activities that cause the debt to occur. Rich text editors are inherently complex, with busy feature roadmaps, which creates an environment where both technical and functional debt rapidly accrue.</p><h3 class=\"stk-theme_44178__style_medium_header stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">1. New WYSIWYG features introduce functional debt</h3><p class=\"stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">It’s not unusual for intentional and/or unintentional functional debt to be introduced during the planning and development of new WYSIWYG features: </p><ul class=\"stk-reset\" data-ce-tag=\"list\"><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">Tight deadlines can cause functionality to intentionally be cut from a version of a feature. This creates debt that must be paid later for the feature to be fully functional.</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">Lack of time or resources for user research or UI design can cause unintentional functional debt in the form of accidental limitations.</li></ul><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Intentional functional debt can and should be tracked, so it can be fixed later. However, unintentional functional debt is more likely <a href=\"https://www.tiny.cloud/blog/manage-technical-debt/\" target=\"_blank\" class=\"stk-reset\">discovered via customer feedback </a>or support tickets.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Unfortunately though, not unlike technical debt, functional debt also quietly sneaks in over time.</p></div><div data-col-width=\"4\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div><div class=\"stk-grid stk-theme_44178__mb_2\" data-stk-css=\"stkH5pvc\" data-anim-m=\"false\" data-anim=\"true\" data-anim-name=\"preset-jackInTheBox\" data-anim-trigger=\"scroll\" data-anim-duration=\"1\" data-anim-delay=\"0\" data-anim-scroll-start=\"10\" data-anim-scroll-finish=\"90\" data-ce-tag=\"grid\"><div data-col-width=\"12\" class=\"stk-theme_44178__pad_ver_2 stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"2\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"8\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__style_font_style-1628585803915 align-center stk-reset\" data-stk-css=\"stkfzTyw\" data-ce-tag=\"paragraph\">Get more insights in our<br>Technical Debt White Paper</p><a class=\"stk-theme_44178__stk-btn_1628586253530 stk-theme_44178__style_font_style-1628586133109 align-center stk-reset\" href=\"https://www.tiny.cloud/technical-debt-whitepaper\" target=\"_blank\" data-stk-button=\"1\" data-ce-tag=\"button\">READ THE WHITE PAPER</a></div><div data-col-width=\"2\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div></div></div><div class=\"stk-theme_44178__mb_15 stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><h3 class=\"stk-theme_44178__style_medium_header stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">2. Industry changes create environmental functional debt</h3><p class=\"stk-reset\" data-ce-tag=\"paragraph\">How often have you opened a new app and thought, “Wow, this looks old”? Although when it was created, the app’s UI/UX probably met all the ‘modern’ standards. However, standards quickly change. And if you don’t keep up, that first impression of your product can be negative.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">A <a class=\"stk-reset\" href=\"https://www.tiny.cloud/blog/product-gap-analysis/\" target=\"_blank\">gap</a> opens between <em class=\"stk-reset\">what was</em> and <em class=\"stk-reset\">current</em> expectations, and that’s where <a class=\"stk-reset\" href=\"https://www.tiny.cloud/blog/technical-debt-examples/\" target=\"_blank\">environmental functional debt</a> creeps in to fill the void.</p></div><div data-col-width=\"4\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div><div class=\"stk-layout__overhangs_both stk-theme_44178__mb_0 stk-grid\" data-stk-css=\"stk9ZTyA\" data-ce-tag=\"grid\"><div data-col-width=\"12\" class=\"stk-theme_44178__pad_ver_2 stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__style_font_style-1652351628236 stk-theme_44178__color_44178_custom_color_2 stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">UI Functional debt RTE example 1</p><h4 class=\"stk-theme_44178__style_small_header stk-reset\" data-ce-tag=\"paragraph\">Moving away from Microsoft Word</h4><p class=\"stk-reset\" data-ce-tag=\"paragraph\">For a time, <a href=\"https://www.tiny.cloud/blog/history-of-cms-wysiwyg/\" target=\"_blank\" class=\"stk-reset\">Microsoft Word was the most popular rich text editor.</a> Its features, icons, and workflows were the gold standard for rich text editing.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Then, as new rich text editors appeared on the market, UI and UX ideas were borrowed from MS Word – mainly because that’s what developers and users were familiar with, which made the learning curve easier.</p></div><div data-col-width=\"4\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div><div class=\"stk-theme_44178__mb_0 stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"5\" class=\"stk-grid-col\" data-ce-tag=\"grid-col\"><figure class=\"stk-reset stk-image-figure\" data-ce-tag=\"image-figure\"><div class=\"stk-mask\" data-ce-tag=\"mask\"><img src=\"https://ucarecdn.com/9fa3ac7b-7d07-4069-9476-53798dbe3ede/\" data-image-id=\"277481\" data-image-name=\"MS_Word_2007.png\" width=\"387\" height=\"257\" loading=\"lazy\" class=\"stk-image stk-reset\"/></div></figure></div><div data-col-width=\"7\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><figure class=\"stk-reset stk-image-figure\" data-ce-tag=\"image-figure\"><div class=\"stk-mask\" data-ce-tag=\"mask\"><img src=\"https://ucarecdn.com/611aa5a4-8dc8-4817-8ae7-a25b1589206e/\" data-image-id=\"277480\" data-image-name=\"Microsoft_Word_for_Mac_2011.png\" width=\"371\" height=\"268\" loading=\"lazy\" class=\"stk-image stk-reset\"/></div></figure></div></div><p class=\"stk-theme_44178__style_small_text stk-theme_44178__color_44178_custom_color_3 stk-reset\" data-ce-tag=\"paragraph\">User Interface (IU) for Microsoft Word 2007 and Microsoft Word 2011 for Mac. <br><a class=\"stk-reset\" href=\"https://en.wikipedia.org/wiki/Microsoft_Word\" target=\"_blank\">Source</a></p><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"stk-reset\" data-ce-tag=\"paragraph\">However in recent years, the rich text editing industry has exploded. There are now dozens of editors available, and they’ve all had to adapt to outside forces like the rise of mobile devices. Each mobile device sparks different UI/UX expectations and feature functionality, that users want to use on their phone.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">This is the exact point where functional debt likely appears. And grows.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">A feature built five years ago, based on MS Word, likely now looks and feels dated. Dialogs (once so prevalent), are now replaced with inline pop ups and other innovative UI elements. Shortcuts and gestures are expected, as are lists, tables, and media embedding. </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">But letting functional debt pile up in a rich text editor, is a shortcut to losing customers. And it’s exactly what prompted the creation of TinyMCE 5.0.</p></div><div data-col-width=\"4\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div></div></div><div class=\"stk-layout__overhangs_both stk-theme_44178__mb_2 stk-grid\" data-stk-css=\"stkfK1WJ\" data-ce-tag=\"grid\"><div data-col-width=\"12\" class=\"stk-theme_44178__pad_ver_2 stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__style_font_style-1652351628236 stk-theme_44178__color_44178_custom_color_2 stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">UI Functional debt RTE example 2</p><h4 class=\"stk-theme_44178__style_small_header stk-reset\" data-ce-tag=\"paragraph\">Paying back debt in TinyMCE 5.0</h4><p class=\"stk-reset\" data-ce-tag=\"paragraph\">TinyMCE 4 worked well. Its UI was fairly clean, and the UI system was flexible for power users.</p><figure class=\"stk-reset stk-image-figure\" data-ce-tag=\"image-figure\"><div class=\"stk-mask\" data-ce-tag=\"mask\"><img src=\"https://ucarecdn.com/0b1202c3-e507-4b34-a809-14d7e53b1024/\" data-image-id=\"279166\" data-image-name=\"Screenshot 2023-04-14 at 2.48 1.png\" class=\"stk-image stk-reset\" width=\"1490\" height=\"1198\" loading=\"lazy\"/></div></figure><p class=\"stk-reset\" data-ce-tag=\"paragraph\">However, TinyMCE 4 was released in 2013 and soon after, React.js, Bootstrap, and Google’s Material design language became popular. Responsive web design and accessibility gained traction. There was also a surge in new libraries and frameworks, which caused rapid innovation in the web development industry.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">In just four short years, the conventions that TinyMCE 4’s UI were based on, were outdated. It was starting to look tired and its architecture made it difficult to keep up with certain industry changes. </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Functional debt was stacking up, purely due to environmental changes.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">TinyMCE 4 still <em class=\"stk-reset\">worked</em>, and its UI could have been left as-is for a while longer. However, TinyMCE’s UI (and the framework behind it) is a core component of the editor, and paying down the debt required a replacement of the UI framework with a different in-house library, and rewriting the UI in the new framework. This was months of work. </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">It was decided that delaying this work was not a wise business choice. A total overhaul was commenced.</p></div><div data-col-width=\"1\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\" data-stk-css=\"\" data-stk-css-m=\"\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"3\" class=\"stk-grid-col valign-middle stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-theme_44178__mb_2 stk-grid\" data-stk-css=\"stkHG-ly\" data-ce-tag=\"grid\" data-anim-m=\"false\" data-anim=\"true\" data-anim-name=\"preset-slideInRight\" data-anim-trigger=\"scroll\" data-anim-duration=\"1\" data-anim-delay=\"0\" data-anim-scroll-start=\"10\" data-anim-scroll-finish=\"90\"><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-grid stk-theme_44178__mb_0\" data-stk-css=\"stkdAVSa\" data-ce-tag=\"grid\"><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_last\" data-stk-css=\"stkpMSNI\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__style_font_style-1628517714937 stk-reset stk-theme_44178__color_44178_custom_color_4\" data-ce-tag=\"paragraph\"><strong class=\"stk-reset\">FURTHER INSIGHTS</strong></p></div></div><div class=\"stk-theme_44178__mb_05 stk-grid\" data-ce-tag=\"grid\" data-stk-css=\"stk7WByG\"><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_last\" data-stk-css=\"stkxjvMW\" data-ce-tag=\"grid-col\"><figure class=\"stk-reset stk-image-figure\" data-ce-tag=\"image-figure\"><div class=\"stk-mask\" data-ce-tag=\"mask\"><img src=\"https://ucarecdn.com/0a6e3096-31e2-4472-8631-4dbc1bb5d260/\" data-image-id=\"202975\" data-image-name=\"Tech Debt -2.png\" class=\"stk-image stk-reset\" width=\"640\" height=\"386\" loading=\"lazy\"/></div></figure></div></div><p class=\"stk-theme_44178__style_font_style-1628517714937 stk-reset\" data-stk-css=\"stknXg1e\" data-ce-tag=\"paragraph\"><a class=\"stk-reset\" href=\"https://www.tiny.cloud/technical-debt-whitepaper\" target=\"_blank\">Download and read Technical Debt in Rich Text Editors White Paper →</a></p></div></div></div></div><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"12\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><figure class=\"stk-reset stk-image-figure\" data-ce-tag=\"image-figure\"><div class=\"stk-mask\" data-ce-tag=\"mask\"><img src=\"https://ucarecdn.com/3306cc88-ed39-4683-96ef-54837a8530fd/\" data-image-id=\"277483\" data-image-name=\"unnamed (1).png\" width=\"512\" height=\"384\" loading=\"lazy\" class=\"stk-image stk-reset\"/></div><figcaption style=\"display:block\" class=\"stk-reset stk-description\" data-ce-tag=\"description\">A half-life map of TinyMCE’s lines of code (LoC) over time. The spike in LoC around early 2019 represents the TinyMCE 5.0 release</figcaption></figure></div></div><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">In February 2019, TinyMCE 5.0 was released with:</p><ul class=\"stk-reset\" data-ce-tag=\"list\"><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">Completely overhauled UI</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">New icons</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">New dialogs</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">New buttons, and </li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">New UI framework. </li></ul><figure class=\"stk-reset stk-image-figure\" data-ce-tag=\"image-figure\"><div class=\"stk-mask\" data-ce-tag=\"mask\"><img src=\"https://ucarecdn.com/4b9d4cc6-c616-4b4b-a5cf-1014d9e896f0/\" data-image-id=\"279692\" data-image-name=\"Screenshot 2023-04-17 at 4.26 1.png\" width=\"1516\" height=\"1194\" loading=\"lazy\" class=\"stk-image stk-reset\"/></div></figure><p class=\"stk-reset\" data-ce-tag=\"paragraph\">The entire UI engine was replaced, and every UI component rewritten from scratch. However, due to the size of the project, it <em class=\"stk-reset\">only </em>addressed UI-related functional debt. The underlying core engine had been completely untouched – including all the known and hidden technical debt it had collected.</p></div><div data-col-width=\"4\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div></div></div><div class=\"stk-theme_44178__mb_15 stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><h2 class=\"stk-theme_44178__style_large_header stk-reset\" id=\"stk-4\" data-ce-tag=\"paragraph\">Balancing technical and functional debt in TinyMCE</h2><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Engineers tend to notice technical debt. Designers more likely notice functional debt. </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">That’s perhaps an over simplification, but it’s an example of how different people (and roles) can be biased towards noticing a type of – due to their knowledge and expertise. But having and paying down ‘just the right amount’ of tech debt is important to a good product. How do you balance it? </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Here’s three of the many phases we worked through with the TinyMCE core engine, when identifying, prioritising, tracking and paying down our technical debt.</p></div><div data-col-width=\"1\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col\" data-ce-tag=\"grid-col\"><h3 class=\"stk-theme_44178__style_medium_header stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">1. Identifying and fixing technical debt in rich text editors</h3><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Engineers are great at identifying technical debt, because it tends to make their job harder. </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\"><a href=\"https://www.tiny.cloud/\" target=\"_blank\" class=\"stk-reset\">Rich text editor specialists </a>would agree – in fact, they’d likely say an editor tends to breed technical debt. Ask any of our developers about their least favourite piece of code to work on, or the weird workarounds they’ve had to use every day and a list of technical debt to tackle, quickly takes shape. </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Another great source for insights on possible tech debt, is your support team’s list of bug reports, or you can use the many code analysis tools that are available. </p><p class=\"stk-theme_44178__mb_15 stk-reset\" data-ce-tag=\"paragraph\">However, when it comes to paying down the technical debt that's accrued, the list of ‘doers’ is much shorter. Fixing it generally falls within the realm of the engineering team, either by planning the work within regular sprints or as major overhauls.</p><h3 class=\"stk-theme_44178__style_medium_header stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">2. Identifying and fixing functional debt in rich text editors</h3><p class=\"stk-reset\" data-ce-tag=\"paragraph\">By comparison, functional debt can be difficult to find. And fixing it often requires a wider team of people.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Because functional debt is user-facing, fixing it often requires a higher proportion of external research and testing than what’s usually used for code-based technical debt. User testing, UI/UX design, A/B testing, and user flow analysis are likely required to find the right fix for functional debt. And that’s before your engineers start testing for technical validation and implementation.</p></div><div data-col-width=\"1\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-theme_44178__mb_2 stk-grid\" data-stk-css=\"stk_IOQK\" data-ce-tag=\"grid\" data-anim-m=\"false\" data-anim-zoom=\"100\" data-anim-shift=\"60\" data-anim-rotation=\"0\" data-anim-opacity=\"100\" data-anim-direction=\"left\" data-anim-duration=\"0.6000000000000001\" data-anim-delay=\"0\" data-anim-scroll-start=\"10\" data-anim-scroll-finish=\"90\" data-anim-trigger=\"scroll\" data-anim-sticky-direction=\"top\" data-anim-sticky-offset=\"20\" data-anim-name=\"ablIYW\" data-anim=\"true\"><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-theme_44178__mb_05 stk-grid\" data-stk-css=\"stkHnOsS\" data-ce-tag=\"grid\"><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_last\" data-stk-css=\"stktQAdv\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__style_font_style-1628517714937 stk-reset stk-theme_44178__color_44178_custom_color_4\" data-ce-tag=\"paragraph\"><strong class=\"stk-reset\">Insights on the complexities of RTEs and technical debt</strong></p></div></div><div class=\"stk-theme_44178__mb_05 stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_last\" data-stk-css=\"stkWLhcE\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__style_small_text stk-reset stk-theme_44178__mb_05\" data-ce-tag=\"paragraph\"><a href=\"https://www.tiny.cloud/blog/reduce-technical-debt/\" target=\"_blank\" class=\"stk-reset\">Reduce technical debt with the right rich text editor</a></p><p class=\"stk-theme_44178__style_small_text stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\"><a href=\"https://www.tiny.cloud/blog/rte-code-half-life/\" target=\"_blank\" class=\"stk-reset\">Is your code half-life shorter than your engineering career?</a></p><p class=\"stk-theme_44178__style_small_text stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\"><a href=\"https://www.tiny.cloud/blog/manage-technical-debt/\" target=\"_blank\" class=\"stk-reset\">Managing technical debt is difficult in rich text editors</a></p><p class=\"stk-theme_44178__style_small_text stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\"><a href=\"https://www.tiny.cloud/blog/technical-debt-examples/\" target=\"_blank\" class=\"stk-reset\">Dangerous examples of technical debt in rich text editors</a></p><p class=\"stk-theme_44178__style_small_text stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\"><a href=\"https://www.tiny.cloud/blog/developer-velocity-and-technical-debt/\" target=\"_blank\" class=\"stk-reset\">Are developer velocity and technical debt impacted by a rich text editor?</a></p><p class=\"stk-theme_44178__style_small_text stk-theme_44178__mb_05 stk-reset\" data-stk-css=\"stkqBwbb\" data-ce-tag=\"paragraph\"><a href=\"https://www.tiny.cloud/blog/technical-debt-tracking/\" target=\"_blank\" class=\"stk-reset\">How to track and prioritize technical debt</a></p></div></div></div></div></div></div><div class=\"stk-theme_44178__mb_15 stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col\" data-ce-tag=\"grid-col\"><p class=\"stk-reset\" data-ce-tag=\"paragraph\">The other challenge is <em class=\"stk-reset\">noticing</em> functional debt in a rich text editor.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Functional debt that’s been intentionally taken on during the development of a feature, can and should be tracked. But the real (hidden) danger comes from unintentional and environmental functional debt.  </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">The danger here is that users become too used to the way things work to realise there’s functional shortfalls. This is particularly true for the people within your organisation – constantly working on a product makes its quirks seem normal and blinds you to its problems. </p><p class=\"stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">Of course, there’s some functional debt that’s so glaring anyone can see it – but a lot of it is much more subtle. To find your functional debt, you often need one of two things: fresh eyes, or broader experience. So employ:</p><ul class=\"stk-reset\" data-ce-tag=\"list\"><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\"><strong class=\"stk-reset\">User testing </strong>(especially with new users) should focus on expectations, pain points, and inefficiencies. This can be an invaluable method to identify functional debt. </li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\"><strong class=\"stk-reset\">Feedback from new hires</strong> (as they learn the product) can help to identify both technical and functional debt that older hires are no longer paying attention to.</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\"><strong class=\"stk-reset\">In-depth competitor research</strong> and comparisons can highlight oddities that customers may stumble on. </li></ul></div><div data-col-width=\"1\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"3\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-grid\" data-stk-css=\"stkFs239\" data-ce-tag=\"grid\" data-anim-m=\"false\" data-anim=\"true\" data-anim-name=\"preset-slideInRight\" data-anim-trigger=\"scroll\" data-anim-duration=\"1\" data-anim-delay=\"0\" data-anim-scroll-start=\"10\" data-anim-scroll-finish=\"90\"><div data-col-width=\"3\" class=\"stk-theme_44178__pad_round_1 stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"stk-reset stk-theme_44178__style_font_style-1628517328397 stk-theme_44178__mb_05\" data-ce-tag=\"paragraph\"><strong class=\"stk-reset\">GOT TECH DEBT ISSUES?</strong></p><p class=\"stk-theme_44178__style_small_text stk-reset\" data-ce-tag=\"paragraph\">Before you discuss tech debt with your management or dev team, learn why <a class=\"stk-reset\" href=\"https://www.tiny.cloud/blog/manage-technical-debt/\" target=\"_blank\">managing technical debt is difficult for rich text editors.</a></p></div></div></div></div><div class=\"stk-theme_44178__mb_2 stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col\" data-ce-tag=\"grid-col\"><h3 class=\"stk-theme_44178__style_medium_header stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">3. Pay down technical or functional debt in rich text editors</h3><p class=\"stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">Now you have a list of your technical and functional debt, which do you pay down first? Here’s some questions to help filter your decision-making process:</p><ul class=\"stk-reset\" data-ce-tag=\"list\"><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">Is your development velocity as expected, or are you being dragged down by your tech debt backlog? </li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">Are any of your planned roadmap items likely to be blocked by existing tech debt?</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">Do any of your editor features get constant bug reports from customers?</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">How often are users looking for information about how to do something with your editor, whether via Google, support channels, or your docs?</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">What do users say about your UI/UX in user testing?</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">How often do users ask about changing the styling of your editor, or extending its UI?</li><li class=\"stk-reset stk-list-item\" data-ce-tag=\"list-item\">How big is your feature request backlog?</li></ul><p class=\"stk-theme_44178__color_44178_custom_color_2 stk-theme_44178__mb_0 stk-reset\" data-ce-tag=\"paragraph\"><strong class=\"stk-reset\">Hints:</strong> </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">If more of your problems align with the first three questions, you should probably address your tech debt backlog. </p><p class=\"stk-theme_44178__mb_15 stk-reset\" data-ce-tag=\"paragraph\">However, if the last four questions are of more concern, then functional debt may be your bigger problem. </p><h4 class=\"stk-theme_44178__style_small_header stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\">Technical debt example: TinyMCE 6.0 core engine</h4><p class=\"stk-reset\" data-ce-tag=\"paragraph\">As mentioned, the breaking changes in TinyMCE 5.0 mainly focused on UI and overcoming its functional debt, so the other (non functional) tech debt that had been accruing in the editor’s core engine since TinyMCE 4, was still untouched. </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Multiple pieces of debt were affecting developer velocity, stability and security, and the costs of leaving them unaddressed were growing. The planned 2022 release of version 6.0 of TinyMCE, was a convenient time to tackle the accumulated technical debt in the core engine. </p><p class=\"stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\"><strong class=\"stk-reset\">a. DOM Parser</strong></p><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"1\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"7\" class=\"stk-grid-col stk-grid-col_last\" data-stk-css=\"stkcu14c\" data-stk-css-m=\"stkxZSpT\" data-ce-tag=\"grid-col\"><p class=\"stk-reset\" data-ce-tag=\"paragraph\">The single biggest piece of technical debt in the editor’s engine was the DOM Parser. </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">The task of maintaining a DOM Parser was once a key part of developing a secure rich text editor. However, it’s a complicated and finicky piece of software, especially in JavaScript. And it requires constant updates to keep up with the latest security vulnerabilities, browser changes, and best practices. </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Thankfully, by TinyMCE 6.0, there were industry standard tools and APIs that could be utilised instead of maintaining an in-house DOM Parser. </p></div></div><p class=\"stk-theme_44178__mb_05 stk-reset\" data-ce-tag=\"paragraph\"><strong class=\"stk-reset\">b. General technical debt</strong></p><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"1\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"7\" class=\"stk-grid-col stk-grid-col_last\" data-stk-css=\"stka9Q5j\" data-stk-css-m=\"stkp7nJs\" data-ce-tag=\"grid-col\"><p class=\"stk-reset\" data-ce-tag=\"paragraph\">Other changes were made to TinyMCE’s architecture, to enable potential roadmap projects. </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">A lot of cruft and baggage was removed, such as the code that supported IE11, which reduced development overhead and the surface area for potential bugs and vulnerabilities. And, thanks to TinyMCE 5.0’s major UI overhaul, the reskinning of TinyMCE 6.0 took significantly less effort than it would have in the past.</p></div></div><p class=\"stk-reset\" data-ce-tag=\"paragraph\">On reflection, focusing the paying down of our functional debt (UI related) and technical debt (core engine) in separate major releases (ie. our 5.0 and 6.0 overhauls), made the task of project scoping and management much easier. It allowed our team of expert rich text editor developers to focus their attention and more clearly communicate the effects on our customers.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">That said, ignoring one type of debt, for too long, isn’t wise. Instead, you need to balance the ongoing challenge of what and when to address software debt.</p></div><div data-col-width=\"1\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"3\" class=\"valign-middle stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-grid\" data-stk-css=\"stkhl_bK\" data-ce-tag=\"grid\" data-anim-m=\"false\" data-anim=\"true\" data-anim-name=\"preset-slideInRight\" data-anim-trigger=\"scroll\" data-anim-duration=\"1\" data-anim-delay=\"0\" data-anim-scroll-start=\"10\" data-anim-scroll-finish=\"90\"><div data-col-width=\"3\" class=\"stk-theme_44178__pad_round_1 stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"stk-reset stk-theme_44178__style_font_style-1628517328397 stk-theme_44178__mb_05\" data-ce-tag=\"paragraph\"><strong class=\"stk-reset\">BUILDING A RICH TEXT EDITOR IS HARD</strong></p><p class=\"stk-theme_44178__style_small_text stk-reset\" data-ce-tag=\"paragraph\">Before you suggest building your own WYSIWYG editor, to either management or your dev team, learn the <a href=\"https://www.tiny.cloud/blog/cost-of-building-rich-text-editor/\" target=\"_blank\" class=\"stk-reset\">real price tag of building a rich text editor.</a></p></div></div></div></div><div class=\"stk-theme_44178__mb_2 stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"8\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><h2 class=\"stk-theme_44178__style_large_header stk-reset\" id=\"stk-5\" data-ce-tag=\"paragraph\">Rich text editors continually accrue technical and functional debt</h2><p class=\"stk-reset\" data-ce-tag=\"paragraph\">The rapid pace of changes in the web development ecosystem and rate of rich text editing innovation, generates major threats – in the form of environmental functional debt – to every rich text editor. And it looms over inhouse builds, as well as every open source and commercial editor. </p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">It's a given that every editor must upgrade and add new features to satisfy changing standards and user expectations.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">That effort takes significant expertise and time, as well as deep domain knowledge to know whether to pay down software debt vs implement new features vs solve support tickets. It’s a never ending conundrum.</p><p class=\"stk-reset\" data-ce-tag=\"paragraph\">The biggest question to ask yourself is: do you have the resources to do it? Or would it be easier to buy a full-featured, enterprise grade editor <a class=\"stk-reset\" href=\"http://www.tiny/cloud\" target=\"_blank\">from a third-party specialist</a>?</p></div><div data-col-width=\"4\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div><div class=\"stk-layout__overhangs_both stk-theme_44178__mb_0 stk-grid\" data-stk-css=\"stkJ4zPR\" data-ce-tag=\"grid\"><div data-col-width=\"12\" class=\"stk-theme_44178__pad_ver_2 stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"2\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"8\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><p class=\"align-center stk-theme_44178__style_font_style-1652351628236 stk-reset stk-theme_44178__color_44178_custom_color_3\" data-ce-tag=\"paragraph\">Download the white paper</p><p class=\"stk-theme_44178__style_font_style-1628585803915 align-center stk-reset stk-theme_44178__color_44178_custom_color_1\" data-ce-tag=\"paragraph\">Opportunity Cost of Technical Debt: Minimize Your Rich Text Editor Development</p></div><div data-col-width=\"2\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"2\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"8\" class=\"stk-grid-col stk-grid-col_last\" data-ce-tag=\"grid-col\"><figure class=\"stk-reset stk-embed_rendered\" data-ce-tag=\"embed\"><code class=\"stk-code\"><iframe src=\"https://www2.ephox.com/l/2202/2022-09-29/d9d458\" width=\"100%\" height=\"500\" type=\"text/html\" frameborder=\"0\" allowtransparency=\"true\" style=\"border: 0\"></iframe></code><figcaption class=\"stk-reset stk-description\" data-ce-tag=\"description\"></figcaption></figure></div><div data-col-width=\"2\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div></div></div><div class=\"stk-layout__overhangs_both stk-grid\" data-stk-css=\"stk8_dxH\" data-ce-tag=\"grid\"><div data-col-width=\"12\" class=\"stk-grid-col stk-grid-col_last stk-theme_44178__pad_ver_3\" data-ce-tag=\"grid-col\"><div class=\"stk-grid\" data-ce-tag=\"grid\"><div data-col-width=\"1\" class=\"stk-grid-col stk-grid-col_empty\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div><div data-col-width=\"4\" class=\"stk-grid-col\" data-stk-css=\"\" data-stk-css-m=\"\" data-ce-tag=\"grid-col\"><figure class=\"stk-blueprint--avatar stk-reset stk-image-figure\" data-stk-css=\"stkCOU5x\" data-ce-tag=\"image-figure\"><div class=\"stk-mask\" data-ce-tag=\"mask\"><img src=\"https://ucarecdn.com/1a5df2bb-82ec-41ae-ba94-e2c4cdaff4bd/\" data-image-id=\"221200\" data-image-name=\"1548508487603.jpeg\" class=\"stk-image stk-reset\" width=\"471\" height=\"471\" loading=\"lazy\"/></div></figure></div><div data-col-width=\"6\" class=\"valign-middle stk-grid-col stk-grid-col_last stk-theme_44178__pad_round_1-m\" data-ce-tag=\"grid-col\"><p class=\"stk-theme_44178__style_font_style-1628517328397 stk-theme_44178__mb_05 stk-theme_44178__color_44178_custom_color_3 stk-reset\" data-ce-tag=\"paragraph\">author</p><h4 class=\"stk-theme_44178__style_small_header stk-theme_44178__color_44178_custom_color_0 stk-theme_44178__mb_0 stk-reset\" data-ce-tag=\"paragraph\">Millie Macdonald</h4><p class=\"stk-theme_44178__style_font_style-1628517714937 stk-theme_44178__color_44178_custom_color_2 stk-reset\" data-ce-tag=\"paragraph\">Product Manager at Halo Connect</p><p class=\"stk-theme_44178__style_small_text stk-theme_44178__color_44178_custom_color_0 stk-reset\" data-ce-tag=\"paragraph\">Millie is a Product Manager at Halo Connect who dabbles in writing. Previously, she worked at Tiny as a Product Owner, dev, and QA engineer. She loves learning above all else, whether it's about people, tech, or leadership.</p></div><div data-col-width=\"1\" class=\"stk-grid-col stk-grid-col_empty\" data-ce-tag=\"grid-col\"><p class=\"ce-element--empty stk-element_no-text stk-reset\" data-ce-tag=\"paragraph\"></p></div></div></div></div><style data-stk-css=\"stk8_dxH\" class=\"\" media=\"all\">\n  [data-stk-css=\"stk8_dxH\"]:not(#stk):not(#stk):not(style) {\n    background-color: rgba(16, 24, 55, 1)\n  }\n</style><style data-stk-css=\"stkCOU5x\" class=\"\" media=\"all\">\n  [data-stk-css=\"stkCOU5x\"]:not(#stk):not(#stk):not(style) {\n    --avatar-size: 180px;\n    align-self: center\n  }\n</style><style data-stk-css=\"stkJ4zPR\" class=\"\" media=\"all\">[data-stk-css=\"stkJ4zPR\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkHG-ly\" class=\"\" media=\"all\">[data-stk-css=\"stkHG-ly\"]:not(#stk):not(#stk):not(style){border: 1px solid #4D66CB; border-radius: 4px; box-shadow: 10px 10px 0 -1px #fff, 10px 10px #4D66CB; background-color: rgba(255, 255, 255, 1)}</style><style data-stk-css=\"stkdAVSa\" class=\"\" media=\"all\">[data-stk-css=\"stkdAVSa\"]:not(#stk):not(#stk):not(style){border-bottom: 1px solid #4D66CB; background-color: rgba(255, 255, 255, 1)}</style><style data-stk-css=\"stkpMSNI\" class=\"\" media=\"all\">\n  [data-stk-css=\"stkpMSNI\"]:not(#stk):not(#stk):not(style) {\n    padding: 5px 10px\n  }\n</style><style data-stk-css=\"stk7WByG\" class=\"\" media=\"all\">[data-stk-css=\"stk7WByG\"]:not(#stk):not(#stk):not(style){background: #D3E1E6}</style><style data-stk-css=\"stkxjvMW\" class=\"\" media=\"all\">\n  [data-stk-css=\"stkxjvMW\"]:not(#stk):not(#stk):not(style) {\n    padding: 5px 10px\n  }\n</style><style data-stk-css=\"stknXg1e\" class=\"\" media=\"all\">\n  [data-stk-css=\"stknXg1e\"]:not(#stk):not(#stk):not(style) {\n    padding: 0px 10px 10px\n  }\n</style><style data-stk-css=\"stkH5pvc\" class=\"\" media=\"all\">[data-stk-css=\"stkH5pvc\"]:not(#stk):not(#stk):not(style){background: #CFE3E6}</style><style data-stk-css=\"stkfzTyw\" class=\"\" media=\"all\">[data-stk-css=\"stkfzTyw\"]:not(#stk):not(#stk):not(style){color: #000}</style><style data-stk-css=\"stkwDbTS\" class=\"\" media=\"all\">\n  [data-stk-css=\"stkwDbTS\"]:not(#stk):not(#stk):not(style) {\n    border: 1px solid #4D66CB;\n    border-radius: 4px;\n    box-shadow: 10px 10px 0 -1px #fff, 10px 10px #4D66CB\n  }\n</style><style data-stk-css=\"stkhl_bK\" class=\"\" media=\"all\">[data-stk-css=\"stkhl_bK\"]:not(#stk):not(#stk):not(style){background-color: #F9FAFB; border-radius: 4px}</style><style data-stk-css=\"stkFs239\" class=\"\" media=\"all\">[data-stk-css=\"stkFs239\"]:not(#stk):not(#stk):not(style){background-color: #F9FAFB; border-radius: 4px}</style><style data-stk-css=\"stk_IOQK\" class=\"\" media=\"all\">\n  [data-stk-css=\"stk_IOQK\"]:not(#stk):not(#stk):not(style) {\n    border: 1px solid #4D66CB;\n    border-radius: 4px;\n    box-shadow: 10px 10px 0 -1px #fff, 10px 10px #4D66CB\n  }\n</style><style data-stk-css=\"stkHnOsS\" class=\"\" media=\"all\">\n  [data-stk-css=\"stkHnOsS\"]:not(#stk):not(#stk):not(style) {\n    border-bottom: 1px solid #4D66CB\n  }\n</style><style data-stk-css=\"stktQAdv\" class=\"\" media=\"all\">\n  [data-stk-css=\"stktQAdv\"]:not(#stk):not(#stk):not(style) {\n    padding: 5px 10px\n  }\n</style><style data-stk-css=\"stkWLhcE\" class=\"\" media=\"all\">\n  [data-stk-css=\"stkWLhcE\"]:not(#stk):not(#stk):not(style) {\n    padding: 5px 10px\n  }\n</style><style data-stk-css=\"stkVC2YR\" class=\"\" media=\"all\">[data-stk-css=\"stkVC2YR\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkgYlxO\" class=\"\" media=\"all\">[data-stk-css=\"stkgYlxO\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkskviH\" class=\"\" media=\"all\">[data-stk-css=\"stkskviH\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkZZQ0_\" class=\"\" media=\"all\">[data-stk-css=\"stkZZQ0_\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkIrWU8\" class=\"\" media=\"all\">[data-stk-css=\"stkIrWU8\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stktN_ST\" class=\"\" media=\"all\">[data-stk-css=\"stktN_ST\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkc1oXV\" class=\"\" media=\"all\">[data-stk-css=\"stkc1oXV\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stk_WswQ\" class=\"\" media=\"all\">[data-stk-css=\"stk_WswQ\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stk4h5wl\" class=\"\" media=\"all\">[data-stk-css=\"stk4h5wl\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stk1qK6f\" class=\"\" media=\"all\">[data-stk-css=\"stk1qK6f\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stka3giV\" class=\"\" media=\"all\">[data-stk-css=\"stka3giV\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkJhyDq\" class=\"\" media=\"all\">[data-stk-css=\"stkJhyDq\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkX76iA\" class=\"\" media=\"all\">[data-stk-css=\"stkX76iA\"]:not(#stk):not(#stk):not(style){background-color: #F9FAFB; border-radius: 4px}</style><style data-stk-css=\"stk7O3KJ\" class=\"\" media=\"all\">[data-stk-css=\"stk7O3KJ\"]:not(#stk):not(#stk):not(style){background-color: #F9FAFB; border-radius: 4px}</style><style data-stk-css=\"stkDmuil\" class=\"\" media=\"all\">[data-stk-css=\"stkDmuil\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkeQT36\" class=\"\" media=\"all\">[data-stk-css=\"stkeQT36\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkr1c1r\" class=\"\" media=\"all\">[data-stk-css=\"stkr1c1r\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stko-a84\" class=\"\" media=\"all\">[data-stk-css=\"stko-a84\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkaGMer\" class=\"\" media=\"all\">[data-stk-css=\"stkaGMer\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkhou7U\" class=\"\" media=\"all\">[data-stk-css=\"stkhou7U\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkfvkiI\" class=\"\" media=\"all\">[data-stk-css=\"stkfvkiI\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkSO7PE\" class=\"\" media=\"all\">[data-stk-css=\"stkSO7PE\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stk2VY0P\" class=\"\" media=\"all\">[data-stk-css=\"stk2VY0P\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkpY7T_\" class=\"\" media=\"all\">[data-stk-css=\"stkpY7T_\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stk61yRH\" class=\"\" media=\"all\">[data-stk-css=\"stk61yRH\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stk0Zy_s\" class=\"\" media=\"all\">[data-stk-css=\"stk0Zy_s\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stk9ZTyA\" class=\"\" media=\"all\">[data-stk-css=\"stk9ZTyA\"]:not(#stk):not(#stk):not(style){background-color: rgba(249, 250, 251, 1)}</style><style data-stk-css=\"stkfK1WJ\" class=\"\" media=\"all\">[data-stk-css=\"stkfK1WJ\"]:not(#stk):not(#stk):not(style){background-color: rgba(240, 242, 245, 1)}</style><style data-stk-css=\"stkqBwbb\" class=\"\" media=\"all\">[data-stk-css=\"stkqBwbb\"]:not(#stk):not(#stk):not(style){padding-bottom: 5px}</style><style data-stk-css=\"stkcu14c\" class=\"\" media=\"(min-width: 769px)\">[data-stk-css=\"stkcu14c\"]:not(#stk):not(#stk):not(style){margin-left: -70px}</style><style data-stk-css=\"stka9Q5j\" class=\"\" media=\"(min-width: 769px)\">[data-stk-css=\"stka9Q5j\"]:not(#stk):not(#stk):not(style){margin-left: -70px}</style><style data-stk-css-m=\"stkp7nJs\" media=\"(max-width: 768px)\" class=\"\">[data-stk-css-m=\"stkp7nJs\"]:not(#stk):not(#stk):not(#stk):not(style){}</style><style data-stk-css-m=\"stkxZSpT\" media=\"(max-width: 768px)\" class=\"\">[data-stk-css-m=\"stkxZSpT\"]:not(#stk):not(#stk):not(#stk):not(style){}</style><style data-anim-name=\"preset-slideInRight\" media=\"screen and (min-width: 768px)\" class=\"\">\n      .stk-post [data-anim-name=\"preset-slideInRight\"]:not(#stk):not([data-anim=\"false\"]) {\n        transform: translate3d(100%, 0, 0)\n      }</style><style data-anim-name=\"preset-slideInRight\" media=\"screen and (max-width: 767px)\" class=\"\">\n      .stk-post [data-anim-name=\"preset-slideInRight\"]:not(#stk):not([data-anim-m]),\n      .stk-post [data-anim-name=\"preset-slideInRight\"]:not(#stk):not([data-anim-m=\"false\"]) {\n        transform: translate3d(100%, 0, 0)\n      }</style><script data-anim-name=\"preset-slideInRight\" type=\"application/json\" class=\"\">{\"keyframes\":[{\"transform\":\"translate3d(100%, 0, 0)\",\"offset\":0},{\"transform\":\"none\",\"offset\":1}],\"options\":{\"id\":\"preset-slideInRight\",\"delay\":0,\"duration\":1000}}</script></div>","id":"5fba3556-83ae-5502-9740-18a48c7eba16"},"resourceFiles":null,"canonicalUrl":null}},"pageContext":{"slug":"technical-vs-functional-debt","setkaPostId":27253}},"staticQueryHashes":["2492987505","740350947"]}