1<!doctype html><html lang="en"><head> 2<!-- Google Tags script--> 3
3<script> 4 var gtmContainerId = 'GTM-P6FD3JJ5'; 5 // Create dataLayer 6 window.dataLayer = window.dataLayer || []; 7 function gtag(){dataLayer.push(arguments);} 8 window.gtag = gtag; 9 10 // Consent defaults: Deny all 11 gtag('consent', 'default', { 12 'ad_storage': 'denied', 13 'analytics_storage': 'denied', 14 'ad_user_data': 'denied', 15 'ad_personalization': 'denied' 16 }); 17 18 // Skip for automated tests 19 if (window.localStorage.getItem('ga_debug_mode') === 'true') { 20 console.log('[GTM] Debug mode active â GTM not loaded'); 21 } else { 22 23 // else run the function 24 (function(w,d,s,l,i){ 25 w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(), event:'gtm.js'}); 26 var f=d.getElementsByTagName(s)[0], 27 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:''; 28 j.async=true; 29 j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl; 30 f.parentNode.insertBefore(j,f); 31 })(window,document,'script','dataLayer', gtmContainerId); 32 } 33 34 // HubSpot consent listener to update Google Consent 35 window._hsq = window._hsq || []; 36 window._hsq.push(['addPrivacyConsentListener', function(consent) { 37 if (consent && consent.categories && consent.categories.analytics === true) { 38 // User accepted â update Google Consent Mode 39 gtag('consent', 'update', { 40 'ad_storage': 'granted', 41 'analytics_storage': 'granted', 42 'ad_user_data': 'granted', 43 'ad_personalization': 'granted' 44 }); 45 } else { 46 // User denied â keep defaults 47 gtag('consent', 'update', { 48 'ad_storage': 'denied', 49 'analytics_storage': 'denied', 50 'ad_user_data': 'denied', 51 'ad_personalization': 'denied' 52 }); 53 } 54 }]); 55 </script>
55 56<!-- End Google Tags script--> 57 58 <!-- Google Analytics script--> 59
59<script> 60 function loadGA4() { 61 var script = document.createElement('script'); 62 script.async = true; 63 script.src = 'https://www.googletagmanager.com/gtag/js?id=G-YBV9Q1MNVQ'; 64 document.head.appendChild(script); 65 window.dataLayer = window.dataLayer || []; 66 function gtag(){ dataLayer.push(arguments); } 67 window.gtag = gtag; 68 gtag('js', new Date()); 69 gtag('config', 'G-YBV9Q1MNVQ'); 70 } 71 window._hsq = window._hsq || []; 72 window._hsq.push(['addPrivacyConsentListener', function(consent) { 73 if (consent && consent.categories && consent.categories.analytics === true) { 74 loadGA4(); 75 } 76 }]); 77 </script>
77 78 <!-- End Google Analytics script--> 79 80 <meta charset="utf-8"> 81 <title>Blog</title> 82 <link rel="shortcut icon" href="https://codescene.com/hubfs/CS_Favicon_70x70px.png"> 83 <meta name="description" content="A developerâs blog by Adam Tornhill. He is founder of CodeScene - a tool 84that gives developers better context and visibility into software projects."> 85 86 87 88 89 90 91 92 93 94 <meta name="viewport" content="width=device-width, initial-scale=1"> 95 96 97 <meta property="og:description" content="A developerâs blog by Adam Tornhill. He is founder of CodeScene - a tool 98that gives developers better context and visibility into software projects."> 99 <meta property="og:title" content="Blog"> 100 <meta name="twitter:description" content="A developerâs blog by Adam Tornhill. He is founder of CodeScene - a tool 101that gives developers better context and visibility into software projects."> 102 <meta name="twitter:title" content="Blog"> 103 104 105 106 107 <style> 108a.cta_button{-moz-box-sizing:content-box !important;-webkit-box-sizing:content-box !important;box-sizing:content-box !important;vertical-align:middle}.hs-breadcrumb-menu{list-style-type:none;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px}.hs-breadcrumb-menu-item{float:left;padding:10px 0px 10px 10px}.hs-breadcrumb-menu-divider:before{content:'âº';padding-left:10px}.hs-featured-image-link{border:0}.hs-featured-image{float:right;margin:0 0 20px 20px;max-width:50%}@media (max-width: 568px){.hs-featured-image{float:none;margin:0;width:100%;max-width:100%}}.hs-screen-reader-text{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px} 109</style> 110 111<link rel="stylesheet" href="https://codescene.com/hubfs/hub_generated/template_assets/1/145737382471/1790689617801/template_main.min.css"> 112<link rel="stylesheet" href="https://codescene.com/hubfs/hub_generated/template_assets/1/145737382487/1790689612399/template_theme-overrides.min.css"> 113<link rel="stylesheet" href="https://codescene.com/hubfs/hub_generated/template_assets/1/145632788865/1790689619317/template_child-styles.min.css"> 114<link rel="stylesheet" href="https://codescene.com/hubfs/hub_generated/template_assets/1/190217990565/1790689616737/template__cs-footer.min.css"> 115<link rel="stylesheet" href="https://codescene.com/hubfs/hub_generated/template_assets/1/190217990660/1790689613628/template__cs-header.min.css"> 116<link rel="stylesheet" href="https://codescene.com/hubfs/hub_generated/module_assets/1/208977694528/1782833577074/module_CS-v2_Header.min.css"> 117 118<style> 119 .csb-elements-overlay-search { 120 display: none; 121 position: fixed; 122 z-index: 999999; 123 top: 0; 124 left: 0; 125 width: 100%; 126 height: 100%; 127 background: rgba(30, 37, 51, 0.4); 128 transition: opacity 0.3s ease; 129 } 130 131 .csb-searchBar { 132 position: absolute; 133 top: 30%; 134 left: 50%; 135 transform: translateX(-50%) !important; 136 width: 100%; 137 max-width: 600px; 138 padding: 0 24px; 139 } 140 141 .csb-elements-search-modal-group { 142 position: relative; 143 display: flex; 144 align-items: center; 145 background: white; 146 border-radius: 12px; 147 box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(12, 0, 32, 0.08), 0 16px 24px -8px rgba(12, 0, 32, 0.08); 148 padding: 12px 20px; 149 } 150 151 .csb-search-icon { 152 flex-shrink: 0; 153 margin-right: 12px; 154 display: flex; 155 align-items: center; 156 justify-content: center; 157 } 158 159 .csb-search-icon svg { 160 width: 24px; 161 height: 24px; 162 fill: #A0A3BD; 163 } 164 165 .csb-elements-search-modal-group input[type="text"] { 166 flex: 1; 167 border: none; 168 outline: none; 169 font-size: 18px; 170 font-weight: 400; 171 padding: 12px 0; 172 color: #1f2559; 173 background: transparent; 174 } 175 176 .csb-elements-search-modal-group input[type="text"]:-webkit-autofill { 177 box-shadow: 0 0 0px 1000px white inset !important; 178 -webkit-box-shadow: 0 0 0px 1000px white inset !important; 179 -webkit-text-fill-color: #1f2559 !important; 180 transition: background-color 9999s ease-in-out 0s; 181 } 182 183 .csb-showBtn { 184 cursor: pointer; 185 width: 24px; 186 height: 24px; 187 background-color: transparent; 188 background-repeat: no-repeat; 189 background-size: 24px; 190 background-position: center; 191 transition: transform 0.2s ease; 192 } 193 194 .csb-showBtn svg path { 195 fill: #172e52; 196 } 197 198 .csb-elements-overlay-search input::placeholder { 199 color: #A0A3BD; 200 font-weight: 400; 201 } 202 203 .csb-elements-overlay-search button { 204 display: none; 205 } 206</style> 207 208 209<style> 210 .cs-hidden { display: none !important; } 211</style> 212 213<style> 214@font-face { 215 font-family: "MatterSQ"; 216 src: url("https://codescene.com/hubfs/mattersq-heavy-webfont.woff") format("woff"); 217 font-display: swap; 218 font-weight: 900; 219} 220</style> 221 222 223 224 225<!-- Added by GoogleTagManager integration -->
226<script data-cookieconsent="ignore"> 227var _hsp = window._hsp = window._hsp || []; 228window.dataLayer = window.dataLayer || []; 229function gtag(){dataLayer.push(arguments);} 230 231var useGoogleConsentModeV2 = true; 232var waitForUpdateMillis = 1000; 233 234if (useGoogleConsentModeV2) { 235 236 gtag('set','developer_id.dZTQ1Zm',true); 237 238 gtag('consent', 'default', { 239 'ad_storage': 'denied', 240 'analytics_storage': 'denied', 241 'ad_user_data': 'denied', 242 'ad_personalization': 'denied', 243 'wait_for_update': waitForUpdateMillis 244 }); 245} 246 247var hsLoadGtm = function loadGtm() { 248 if(window._hsGtmLoadOnce) { 249 return; 250 } 251 252 if (useGoogleConsentModeV2) { 253 _hsp.push(['useGoogleConsentModeV2']) 254 }
vendor: 349 bytes, lines 254-260
254 255 256 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 257 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 258 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 259 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 260 })(window,document,'script','dataLayer','
260GTM-P6FD3JJ5
vendor: 9 bytes, lines 260-262
260'); 261 262
262window._hsGtmLoadOnce = true; 263}; 264 265_hsp.push(['addPrivacyConsentListener', function(consent){ 266 if(consent.allowed || (consent.categories && consent.categories.analytics)){ 267 hsLoadGtm(); 268 } 269}]); 270 271</script>
271 272 273<!-- /Added by GoogleTagManager integration --> 274 275
276<script type="text/javascript" src="https://secure.leadforensics.com/js/794635.js" async></script>
276 277<noscript><img src="https://secure.leadforensics.com/794635.png" style="display:none;"></noscript> 278<meta name="google-site-verification" content="wxrnvhPz65M7Sm_PocyLjWD7-O_HjCAk-mARm6Idfwk"> 279<!-- Hotjar Tracking Code for https://www.codescene.com -->
280<script async>
vendor: 125 bytes, lines 280-283
280 281 (function(h,o,t,j,a,r){ 282 h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; 283 h._hjSettings={hjid:
2832645668
vendor: 258 bytes, lines 283-288
283,hjsv:6}; 284 a=o.getElementsByTagName('head')[0]; 285 r=o.createElement('script');r.async=1; 286 r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; 287 a.appendChild(r); 288 })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
289</script>
289 290 291 292 293 294 295 296<link rel="next" href="https://codescene.com/blog/page/2"> 297<meta property="og:url" content="https://codescene.com/blog"> 298<meta property="og:type" content="blog"> 299<meta name="twitter:card" content="summary"> 300<link rel="alternate" type="application/rss+xml" href="https://codescene.com/blog/rss.xml"> 301<meta name="twitter:domain" content="codescene.com">
302<script src="//platform.linkedin.com/in.js" type="text/javascript"> 303 lang: en_US 304</script>
304 305 306<meta http-equiv="content-language" content="en"> 307 308 309 310 311 312 313 314 315 316 317 <link href="https://codescene.com/hubfs/PrismJS/prism.css" rel="stylesheet"> 318
318<script type="text/javascript" src="https://codescene.com/hubfs/PrismJS/prism.js"></script>
318 319 320 <meta name="generator" content="HubSpot"></head> 321 <body data-aos="fade" class="bg-w"> 322<!-- Added by GoogleTagManager integration -->
vendor: 68 bytes, lines 322-323
322 323<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
323GTM-P6FD3JJ5
vendor: 84 bytes, lines 323-324
323" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 324
325<!-- /Added by GoogleTagManager integration --> 326 327
327<script> 328 (function (c, p, d, u, id, i) { 329 id = ''; 330 u = 'https://tracking.g2crowd.com/attribution_tracking/conversions/' + c + '.js?p=' + encodeURI(p) + '&e=' + id; 331 i = document.createElement('script'); 332 i.type = 'application/javascript'; 333 i.async = true; 334 i.src = u; 335 d.getElementsByTagName('head')[0].appendChild(i); 336 }("1010028", document.location.href, document)); 337 </script>
337 338 339 <div class="body-wrapper hs-content-id-57110285733 hs-blog-listing hs-blog-id-57110285732"> 340 341 <div data-global-resource-path="Child Themes/Elements/templates/partials/cs-header.html"> 342 343<header id="cs-header"> 344 345 <div id="hs_cos_wrapper_CS-v2_Top-Notification" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"></div> 346 347 <div id="hs_cos_wrapper_CS-v2_Header" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"> 348 349 350 351 352<div id="site-header" class="header__container__main style-dark scroll-fade-enabled "> 353 <div class="header__container content-wrapper"> 354 <a class="header__logo--link" href="https://codescene.com/" aria-label="CodeScene"> 355 356 <svg class="nav-logo" width="146" height="28" viewbox="0 0 146 28" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> 357 <path d="M31.593 8.317C29.707 2.949 24.897 0 18.111 0C11.325 0 6.56598 2.949 4.64998 8.317C4.05098 9.996 3.75198 11.866 3.75198 13.875C3.75198 17.744 4.24098 20.663 5.25898 22.822C7.54398 27.63 12.015 28 18.102 28C24.189 28 28.659 27.63 30.945 22.822C31.953 20.703 32.452 17.784 32.452 13.875C32.472 11.896 32.182 10.026 31.593 8.317ZM30.046 15.704C30.046 17.843 29.687 19.703 28.968 21.222C26.952 25.43 22.342 25.99 18.101 25.99C13.86 25.99 9.25998 25.42 7.23398 21.222C6.52598 19.723 6.15598 17.863 6.15598 15.704C6.15598 13.335 6.51498 11.456 7.26398 9.966C8.88098 6.717 12.423 5.138 18.091 5.138C23.759 5.138 27.301 6.717 28.918 9.966C29.666 11.455 30.026 13.335 30.026 15.704H30.046ZM2.54498 13.875C2.54498 11.856 2.85398 9.986 3.45298 8.337C3.50298 8.237 3.45298 8.137 3.43298 8.097C3.37298 7.977 3.25298 7.977 3.17398 7.977C1.36798 8.357 0.000976562 11.626 0.000976562 15.594C0.000976562 19.882 1.54798 23.251 3.52398 23.251C3.65398 23.251 3.77298 23.231 3.88298 23.211C3.94298 23.211 4.03298 23.191 4.09298 23.071C4.13298 22.991 4.13298 22.931 4.09298 22.851C3.04498 20.692 2.54598 17.753 2.54598 13.874L2.54498 13.875ZM33.02 7.957C33.02 7.957 32.85 7.957 32.791 8.077C32.791 8.077 32.721 8.217 32.771 8.307C33.38 9.966 33.689 11.836 33.689 13.855C33.689 17.764 33.18 20.703 32.142 22.832C32.102 22.912 32.102 22.972 32.142 23.052C32.192 23.162 32.282 23.192 32.322 23.192C32.452 23.212 32.571 23.232 32.711 23.232C34.657 23.232 36.234 19.793 36.234 15.575C36.214 11.547 34.877 8.338 33.021 7.958L33.02 7.957ZM111.004 18.453C110.745 19.693 109.827 20.402 108.49 20.402C106.654 20.402 105.456 19.052 105.456 16.963C105.456 14.874 106.644 13.524 108.49 13.524C109.777 13.524 110.775 14.294 110.964 15.453L110.994 15.603L112.92 15.213L112.89 15.073C112.521 13.054 110.775 11.754 108.44 11.754C105.446 11.754 103.43 13.853 103.43 16.962C103.43 20.071 105.446 22.17 108.44 22.17C110.805 22.17 112.481 20.92 112.91 18.841L112.94 18.691L111.034 18.301L111.004 18.451V18.453ZM119.007 11.766C116.123 11.766 114.108 13.905 114.108 16.974C114.108 20.043 116.183 22.182 119.047 22.182C121.392 22.182 123.079 21.012 123.578 19.053L123.618 18.903L121.771 18.463L121.732 18.613C121.452 19.762 120.474 20.422 119.047 20.422C117.391 20.422 116.243 19.252 116.084 17.433H123.807V17.303C123.837 17.133 123.857 16.783 123.857 16.533C123.857 13.774 121.821 11.766 119.007 11.766ZM119.007 13.445C120.524 13.445 121.572 14.325 121.781 15.754H116.203C116.563 14.304 117.6 13.445 119.007 13.445ZM130.842 11.766C129.555 11.766 128.407 12.356 127.629 13.415V11.915H125.683V22.021H127.629V17.563C127.629 15.094 128.717 13.554 130.473 13.554C131.73 13.554 132.539 14.384 132.539 15.673V22.011H134.484V15.363C134.484 14.333 134.155 13.444 133.507 12.794C132.848 12.124 131.9 11.764 130.842 11.764V11.766ZM141.15 11.916C138.266 11.916 136.251 14.065 136.251 17.134C136.251 20.203 138.326 22.342 141.19 22.342C143.535 22.342 145.222 21.172 145.721 19.213L145.761 19.063L143.914 18.623L143.875 18.773C143.595 19.923 142.617 20.582 141.19 20.582C139.534 20.582 138.386 19.412 138.226 17.593H145.95L145.981 17.357C146.001 17.066 146 16.903 146 16.663C146 13.914 143.964 11.915 141.15 11.915V11.916
357ZM141.15 13.595C142.667 13.595 143.715 14.475 143.924 15.904H138.346C138.705 14.454 139.743 13.595 141.15 13.595ZM97.423 13.685C95.826 13.255 94.449 12.885 94.449 11.666C94.449 10.526 95.447 9.837 97.113 9.837C98.779 9.837 99.857 10.697 100.126 12.136L100.156 12.316L102.052 11.576L102.032 11.456C101.663 9.367 99.687 7.967 97.113 7.967C94.329 7.967 92.373 9.496 92.373 11.686C92.373 14.375 94.708 15.065 96.764 15.675C98.57 16.205 100.126 16.665 100.126 18.244C100.126 19.514 98.979 20.333 97.203 20.333C95.427 20.333 94.06 19.113 93.8 17.304L93.77 17.134L91.794 17.764L91.814 17.894C92.273 20.463 94.408 22.193 97.143 22.193C100.186 22.193 102.232 20.593 102.232 18.214C102.232 14.995 99.568 14.275 97.422 13.696V13.686L97.423 13.685ZM54.514 17.414C54.045 19.263 52.678 20.273 50.662 20.273C47.808 20.273 46.042 18.274 46.042 15.045C46.042 11.816 47.808 9.817 50.662 9.817C52.708 9.817 54.115 10.907 54.524 12.806L54.554 12.956L56.6 12.506L56.57 12.356C55.971 9.627 53.716 7.938 50.673 7.938C47.3 7.938 43.907 10.137 43.907 15.055C43.907 19.973 47.31 22.173 50.673 22.173C53.647 22.173 55.852 20.564 56.57 17.864L56.61 17.714L54.544 17.284L54.504 17.424L54.514 17.414ZM62.926 11.766C59.952 11.766 57.797 13.955 57.797 16.974C57.797 19.993 59.952 22.182 62.926 22.182C65.9 22.182 68.085 19.993 68.085 16.974C68.065 13.955 65.9 11.766 62.926 11.766ZM66.07 16.974C66.07 18.993 64.783 20.403 62.927 20.403C61.071 20.403 59.784 18.993 59.784 16.964C59.784 14.935 61.071 13.525 62.927 13.525C64.783 13.525 66.07 14.935 66.07 16.964V16.974ZM85.928 11.766C83.044 11.766 81.028 13.905 81.028 16.974C81.028 20.043 83.104 22.182 85.967 22.182C88.302 22.182 89.998 21.012 90.497 19.053L90.537 18.903L88.691 18.463L88.651 18.613C88.372 19.762 87.394 20.422 85.967 20.422C84.31 20.422 83.163 19.252 83.003 17.433H90.727C90.724 17.457 90.752 17.312 90.763 17.164C90.788 16.826 90.777 16.773 90.777 16.533C90.777 13.774 88.741 11.765 85.927 11.765L85.928 11.766ZM85.928 13.445C87.445 13.445 88.493 14.325 88.702 15.754H83.124C83.483 14.304 84.521 13.445 85.928 13.445ZM77.256 13.035C76.527 12.255 75.35 11.755 74.193 11.755C71.239 11.755 69.323 13.804 69.323 16.963C69.323 20.122 71.239 22.171 74.213 22.171C75.45 22.171 76.628 21.681 77.266 20.931V22.021H79.212V7.967H77.266V13.035H77.256ZM77.426 16.974C77.406 19.063 76.209 20.413 74.373 20.413C72.537 20.413 71.32 19.063 71.32 16.974C71.32 14.885 72.517 13.535 74.373 13.535C76.229 13.535 77.426 14.884 77.426 16.964V16.974Z" fill="#FFFFFF" /> 358 </svg> 359 360 </a> 361 <!-- Mobile toggles --> 362 <div class="header--toggle header__navigation--toggle" role="button" tabindex="0" aria-label="Open menu" aria-expanded="false"> 363 <svg viewbox="0 0 24 24" width="28" height="28" fill="none" xmlns="http://www.w3.org/2000/svg"> 364 <path d="M3 12H21M3 6H21M3 18H21" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> 365 </svg> 366 </div> 367 <div class="header--toggle header__search--toggle" style="display: none;"></div> 368 <div class="header__close--toggle" role="button" tabindex="0" aria-label="Close menu"> 369 <svg viewbox="0 0 24 24" width="28" height="28" fill="none" xmlns="http://www.w3.org/2000/svg"> 370 <path d="M18 6L6 18M6 6l12 12" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> 371 </svg> 372 </div> 373 374 <div class="header__navigation header--element"> 375 <nav class="navigation"> 376 <ul class="nav-container"> 377 378 379 380 381 382 <li class="parent-link mega"> 383 <!-- MOVED INPUT UP ONE LEVEL FOR STRICT CSS SIBLING BINDING --> 384 <input type="checkbox" id="Products" class="submenu-toggle" style="display: none;"> 385 386 <div class="parent-link-flex"> 387 <a href="#">Products</a> 388 <label class="menu-arrow" for="Products" aria-label="Toggle Products submenu"> 389 <span class="menu-arrow-bg"></span> 390 </label> 391 </div> 392 393 <div class="dropdown"> 394 395 396 397 <!-- 1 Group / 2 Columns Layout --> 398 <div class="links-container"> 399 <div class="grid-container"> 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 <div class="column no-icon-column"> 425 <div class="child-title">EXPLORE CODESCENE</div> 426 427 428 429 430 <a href="https://codescene.com/product/how-it-works" class="grandchild-container"> 431 432 <div class="grandchild-icon"> 433 434 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-howitworks-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 22 18"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M0,18v-2h22v2H0ZM3,15c-.55,0-1.02-.2-1.41-.59-.39-.39-.59-.86-.59-1.41V2c0-.55.2-1.02.59-1.41s.86-.59,1.41-.59h16c.55,0,1.02.2,1.41.59.39.39.59.86.59,1.41v11c0,.55-.2,1.02-.59,1.41-.39.39-.86.59-1.41.59H3ZM3,13h16V2H3v11Z" /></svg> 435 436 </div> 437 438 <div class="grandchild-text-container">
439 <span class="grandchild-title">How it works</span> 440 <p class="grandchild-description">Explore all CodeScene features</p> 441 </div> 442 </a> 443 444 445 446 <a href="https://codescene.com/product/code-health" class="grandchild-container"> 447 448 <div class="grandchild-icon"> 449 450 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-codehealth-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 19 19"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M16,0H3C1.35,0,0,1.35,0,3v13c0,1.65,1.35,3,3,3h13c1.65,0,3-1.35,3-3V3c0-1.65-1.35-3-3-3ZM3,2h13c.55,0,1,.45,1,1v7h-2.5c-.39,0-.53,0-.87-.38l-.98-1.62c-.3-.56-.82-.88-1.34-.85-.54.03-1,.4-1.25,1.03l-1.2,3.47-.37-.96c-.38-.96-1.45-1.69-2.49-1.69h-4s0-6,0-6c0-.55.45-1,1-1ZM16,17H3c-.55,0-1-.45-1-1v-4.99h4c.22-.01.55.21.62.4l.95,2.46c.37.93,1.04,1.04,1.32,1.04s.94-.1,1.33-1.08l1.31-3.81.43.71s.06.1.1.14c.98,1.13,1.86,1.13,2.44,1.13h2.5v4c0,.55-.45,1-1,1Z" /></svg> 451 452 </div> 453 454 <div class="grandchild-text-container"> 455 <span class="grandchild-title">CodeHealthâ¢</span> 456 <p class="grandchild-description">Visualize and prioritize tech debt</p> 457 </div> 458 </a> 459 460 461 462 <a href="https://codescene.com/product/behavioral-code-analysis" class="grandchild-container"> 463 464 <div class="grandchild-icon"> 465 466 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-behavioralcodean-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 22 16"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M0,16v-2.8c0-.57.15-1.09.44-1.56s.68-.84,1.16-1.09c1.03-.52,2.08-.9,3.15-1.16s2.15-.39,3.25-.39,2.18.13,3.25.39,2.12.65,3.15,1.16c.48.25.87.61,1.16,1.09s.44,1,.44,1.56v2.8H0ZM18,16v-3c0-.73-.2-1.44-.61-2.11-.41-.68-.99-1.25-1.74-1.74.85.1,1.65.27,2.4.51.75.24,1.45.54,2.1.89.6.33,1.06.7,1.38,1.11s.48.85.48,1.34v3h-4ZM8,8c-1.1,0-2.04-.39-2.82-1.18-.78-.78-1.18-1.72-1.18-2.82s.39-2.04,1.18-2.82,1.72-1.
46618,2.82-1.18,2.04.39,2.82,1.18c.78.78,1.18,1.72,1.18,2.82s-.39,2.04-1.18,2.82c-.78.78-1.72,1.18-2.82,1.18ZM18,4c0,1.1-.39,2.04-1.17,2.82-.78.78-1.73,1.18-2.83,1.18-.18,0-.42-.02-.7-.06-.28-.04-.52-.09-.7-.14.45-.53.8-1.12,1.04-1.78.24-.65.36-1.32.36-2.02s-.12-1.38-.36-2.03-.59-1.24-1.04-1.78c.23-.08.47-.14.7-.16s.47-.04.7-.04c1.1,0,2.04.39,2.83,1.18.78.78,1.17,1.72,1.17,2.82ZM2,14h12v-.8c0-.18-.05-.35-.14-.5-.09-.15-.21-.27-.36-.35-.9-.45-1.81-.79-2.73-1.01-.92-.22-1.84-.34-2.77-.34s-1.86.11-2.78.34c-.92.23-1.82.56-2.72,1.01-.15.08-.27.2-.36.35-.09.15-.14.32-.14.5v.8ZM8,6c.55,0,1.02-.2,1.41-.59.39-.39.59-.86.59-1.41s-.2-1.02-.59-1.41c-.39-.39-.86-.59-1.41-.59s-1.02.2-1.41.59c-.39.39-.59.86-.59,1.41s.2,1.02.59,1.41c.39.39.86.59,1.41.59Z" /></svg> 467 468 </div> 469 470 <div class="grandchild-text-container"> 471 <span class="grandchild-title">Behavioral code analysis</span> 472 <p class="grandchild-description">Go beyond static code analysis</p> 473 </div> 474 </a> 475 476 477 478 <a href="https://codescene.com/product/integrations" class="grandchild-container"> 479 480 <div class="grandchild-icon"> 481 482 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-allintegrations-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 18 18"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M6,0H2C.9,0,0,.9,0,2v4c0,1.1.9,2,2,2h4c1.1,0,2-.9,2-2V2C8,.9,7.1,0,6,0ZM6,6H2V2h4v4Z" /> <path class="cls-1" d="M16,10h-4c-1.1,0-2,.9-2,2v4c0,1.1.9,2,2,2h4c1.1,0,2-.9,2-2v-4c0-1.1-.9-2-2-2ZM16,16h-4v-4h4v4Z" /> <path class="cls-1" d="M6,10H2c-1.1,0-2,.9-2,2v4c0,1.1.9,2,2,2h4c1.1,0,2-.9,2-2v-4c0-1.1-.9-2-2-2ZM6,16H2v-4h4v4Z" /> <path class="cls-1" d="M11,5h2v2c0,.55.45,1,1,1s1-.45,1-1v-2h2c.55,0,1-.45,1-1s-.45-1-1-1h-2V1c0-.55-.45-1-1-1s-1,.45-1,1v2h-2c-.55,0-1,.45-1,1s.45,1,1,1Z" /></svg> 483 484 </div> 485 486 <div class="grandchild-text-container"> 487 <span class="grandchild-title">All integrations</span> 488 <p class="grandchild-description">Integrate with IDEs, CLI and more</p> 489 </div> 490 </a> 491 492 493 </div><div class="column no-icon-column"> 494 495 496 <a href="https://codescene.com/product/automated-code-health-reviews" class="grandchild-container"> 497 498 <div class="grandchild-icon"> 499 500 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-automatedcoderev-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 18"> <defs> <style> .cls-1 { fill: #021025; fill-rule: evenodd; } </style> </defs> <path class="cls-1" d="M3.5,0c1.93,0,3.5,1.57,3.5,3.5,0,1.59-1.05,2.92-2.5,3.35v4.29c1.45.43,2.5,1.77,2.5,3.35,0,1.93-1.57,3.5-3.5,3.5s-3.5-1.57-3.5-3.5c0-1.59,1.05-2.92,2.5-3.35v-4.29c-1.45-.43-2.5-1.77-2.5-3.35C0,1.57,1.57,0,3.5,0ZM3.5,13c-.83,0-1.5.67-1.5,1.5s.67,1.5,1.5,1.5,1.5-.67,1.5-1.5-.67-1.5-1.5-1.5ZM3.5,2c-.83,0-1.5.67-1.5,1.5s.67,1.5,1.5,1.5,1.5-.67,1.5-1.5-.67-1.5-1.5-1.5Z" /> <path class="cls-1" d="M12.22,1.08c.15-.1.35-.11.51-.02.16.09.26.26.26.44v1h.5c2.21,0,4,1.79,4,4v4.65c1.45.43,2.5,1.77,2.5,3.35,0,1.93-1.57,3.5-3.5,3.5s-3.5-1.57-3.5-3.5c0-1.59,1.05-2.92,2.5-3.35v-4.65c0-1.1-.9-2-2-2h-.5v1c0,.18-.1.35-.26.44-.16.09-.36.08-.51-.02l-3-2c-.14-.09-.22-.25-.22-.42s.08-.32.22-.42l3-2ZM16.5,13c-.83,0-1.5.67-1.5,1.5s.67,1.5,1.5,1.5,1.5-.67,1.5-1.5-.67-1.5-1.5-1.5Z" /></svg> 501 502 </div> 503 504 <div class="grandchild-text-container">
505 <span class="grandchild-title">Automated code reviews</span> 506 <p class="grandchild-description">Reduce daily technical debt</p> 507 </div> 508 </a> 509 510 511 512 <a href="https://codescene.com/product/integrations/ide-extensions" class="grandchild-container"> 513 514 <div class="grandchild-icon"> 515 516 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-ideextensions-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 19.5 19.5"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M14,10.5h-5v-5c0-1.1-.9-2-2-2H2c-1.1,0-2,.9-2,2v12c0,1.1.9,2,2,2h12c1.1,0,2-.9,2-2v-5c0-1.1-.9-2-2-2ZM2,5.5h5v5H2v-5ZM7,17.5H2v-5h5v5ZM14,17.5h-5v-5h5v5Z" /> <path class="cls-1" d="M17.5,0h-4c-1.1,0-2,.9-2,2v4c0,1.1.9,2,2,2h4c1.1,0,2-.9,2-2V2c0-1.1-.9-2-2-2ZM17.5,6h-4V2h4v4Z" /></svg> 517 518 </div> 519 520 <div class="grandchild-text-container"> 521 <span class="grandchild-title">IDE extensions</span> 522 <p class="grandchild-description">
522Prevent tech debt in real time</p> 523 </div> 524 </a> 525 526 527 528 <a href="https://codescene.com/product/codescene-for-open-source" class="grandchild-container"> 529 530 <div class="grandchild-icon"> 531 532 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-opensource-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M7,14c.55,0,1.02-.2,1.41-.59.39-.39.59-.86.59-1.41s-.2-1.02-.59-1.41c-.39-.39-.86-.59-1.41-.59s-1.02.2-1.41.59c-.39.39-.59.86-.59,1.41s.2,1.02.59,1.41c.39.39.86.59,1.41.59ZM13,14c.55,0,1.02-.2,1.41-.59.39-.39.59-.86.59-1.41s-.2-1.02-.59-1.41c-.39-.39-.86-.59-1.41-.59s-1.02.2-1.41.59c-.39.39-.59.86-.59,1.41s.2,1.02.59,1.41c.39.39.86.59,1.41.59ZM10,9c.55,0,1.02-.2,1.41-.59.39-.39.59-.86.59-1.41s-.2-1.02-.59-1.41c-.39-.39-.86-.59-1.41-.59s-1.02.2-1.41.59c-.39.39-.59.86-.59,1.41s.2,1.02.59,1.41c.39.39.86.59,1.41.59ZM10,20c-1.38,0-2.68-.26-3.9-.79-1.22-.52-2.28-1.24-3.18-2.14-.9-.9-1.61-1.96-2.14-3.18-.52-1.22-.79-2.52-.79-3.9s.26-2.68.79-3.9c.53-1.22,1.24-2.28,2.14-3.18.9-.9,1.96-1.61,3.18-2.14,1.22-.52,2.52-.79,3.9-.79s2.68.26,3.9.79c1.22.53,2.27,1.24,3.18,2.14.9.9,1.61,1.96,2.14,3.18.52,1.22.79,2.52.79,3.9s-.26,2.68-.79,3.9-1.24,2.27-2.14,3.18c-.9.9-1.96,1.61-3.18,2.14s-2.52.79-3.9.79ZM10,18c2.23,0,4.12-.77,5.67-2.33,1.55-1.55,2.33-3.44,2.33-5.67s-.77-4.12-2.33-5.68c-1.55-1.55-3.44-2.32-5.67-2.32s-4.12.78-5.68,2.32c-1.55,1.55-2.32,3.44-2.32,5.68s.78,4.12,2.32,5.67c1.55,1.55,3.44,2.33,5.68,2.33Z" /></svg> 533 534 </div> 535 536 <div class="grandchild-text-container"> 537 <span class="grandchild-title">Open source</span> 538 <p class="grandchild-description">Free for your open-source project</p> 539 </div> 540 </a> 541 542 543 544 <a href="https://codescene.com/product/deploying-codescene" class="grandchild-container"> 545 546 <div class="grandchild-icon"> 547 548 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-deployment-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 18 20"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M8,17.42v-6.85l-6-3.47v6.85l6,3.47ZM10,17.42l6-3.47v-6.85l-6,3.47v6.85ZM9,8.85l5.92-3.43-5.92-3.43-5.93,3.43,5.93,3.43ZM1,15.7c-.32-.18-.56-.43-.74-.73-.17-.3-.26-.63-.26-1v-7.95c0-.37.09-.7.26-1,.17-.3.42-.54.74-.72L8,.28c.32-.18.65-.28,1-.28s.68.09,1,.28l7,4.03c.32.18.56.42.74.72.18.3.26.63.26,1v7.95c0,.37-.09.7-.26,1-.17.3-.42.54-.74.73l-7,4.02c-.32.18-.65.27-1,.27s-.68-.09-1-.27L1,15.7Z" /></svg> 549 550 </div> 551 552 <div class="grandchild-text-container"> 553 <span class="grandchild-title">Deployment</span> 554 <p class="grandchild-description">Seamless deployment options</p> 555 </div> 556 </a> 557 558 559 </div> 560 </div> 561 562 <!-- Additional Links Logic --> 563 564 565 </div> 566 567 568 569 570 571 <div class="image-column"> 572 <a href="https://codescene.com/early-access-codescene-mcp-server" class="template-featured-image "> 573 <div class="featured-image__container"> 574 <div class="featured-image__content"> 575 576 <div class="featured-image__label-wrapper"> 577 <div class="featured-image__label">EARLY ACCESS</div> 578 </div> 579 580 <div class="featured-image__text"> 581 <div class="featured-image__title">CodeHealth⢠MCP Server</div> 582 583 <div class="featured-image__subtitle">Enable AI coding assistants to detect and fix issues using CodeScene's CodeHealth⢠guidance</div> 584 585 </div> 586 </div> 587 588 <div class="featured-image__cta cs-tst-text-link">
589 <span class="featured-image__cta-text">Early signup</span> 590 <svg width="24" height="24" viewbox="0 0 24 24" fill="none"><path d="M8 4L16 12L8 20" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" /></svg> 591 </div> 592 593 </div> 594 </a> 595 </div> 596 597 598 </div> 599 </li> 600 601 602 603 <li class="parent-link mega"> 604 <!-- MOVED INPUT UP ONE LEVEL FOR STRICT CSS SIBLING BINDING --> 605 <input type="checkbox" id="Solutions" class="submenu-toggle" style="display: none;"> 606 607 <div class="parent-link-flex"> 608 <a href="#">Solutions</a> 609 <label class="menu-arrow" for="Solutions" aria-label="Toggle Solutions submenu"> 610 <span class="menu-arrow-bg"></span> 611 </label> 612 </div> 613 614 <div class="dropdown"> 615 616 617 618 <!-- 2 Groups / 3 Columns Layout --> 619 <div class="links-container"> 620 <div class="grid-container"> 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 <div class="column no-icon-column"> 642 <div class="child-title">USE CASES</div> 643 644 645 646 <a href="https://codescene.com/resources/use-cases/technical-debt-management" class="grandchild-container"> 647 648 <div class="grandchild-icon"> 649 650 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-techdebtmanageme-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 18 18"> <path d="M9,10c-.15,0-.31-.04-.45-.11L.55,5.89C.21,5.73,0,5.38,0,5s.21-.73.55-.89L8.55.11c.28-.14.61-.14.89,0l8,4c.34.17.55.52.55.89s-.21.73-.55.89l-8,4c-.14.07-.29.11-.45.11ZM3.24,5l5.76,2.88,5.76-2.88-5.76-2.88-5.76,2.88Z" /> <path d="M9,18c-.15,0-.31-.04-.45-.11L.55,13.89c-.49-.25-.69-.85-.45-1.34.25-.49.85-.69,1.34-.45l7.55,3.78,7.55-3.78c.5-.25,1.09-.05,1.34.45.25.49.05,1.09-.45,1.34l-8,4c-.14.07-.29.11-.45.11ZM9,14c-.15,0-.31-.04-.45-.11L.55,9.89c-.49-.25-.69-.85-.45-1.34.25-.49.85-.69,1.34-.45l7.55,3.78,7.55-3.78c.5-.25,1.09-.05,1.34.45.25.49.05,1.09-.45,1.34l-8,4c-.14.07-.29.11-.45.11Z" /></svg> 651 652 </div> 653 654 <div class="grandchild-text-container"> 655 <span class="grandchild-title">Tech debt management</span> 656 <p class="grandchild-description">Visualize high-risk tech debt, prioritize refactoring and show business impact</p> 657 </div> 658 </a> 659 660 661 <a href="https://codescene.com/product/integrations/ide-extension" class="grandchild-container"> 662 663 <div class="grandchild-icon"> 664 665 <!--?xml version="1.0" encoding="UTF-8"?-->
665<svg id="csh-realtimetechdebt-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 17 20"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M8.5,20c-2.46-.58-4.49-1.91-6.1-3.99C.8,13.94,0,11.63,0,9.1V3L8.5,0l8.5,3v6.1c0,2.53-.8,4.84-2.4,6.91-1.6,2.07-3.63,3.4-6.1,3.99ZM8.5,17.9c1.84-.55,3.36-1.65,4.57-3.3,1.2-1.65,1.81-3.48,1.81-5.5v-4.73l-6.38-2.25-6.38,2.25v4.73c0,2.02.6,3.85,1.81,5.5,1.2,1.65,2.73,2.75,4.57,3.3Z" /> <path class="cls-1" d="M8.5,16c-1.48-.35-2.7-1.15-3.66-2.39-.96-1.24-1.44-2.63-1.44-4.15v-3.66l5.1-1.8v12ZM8.5,14.74V5.27v9.47Z" /></svg> 666 667 </div> 668 669 <div class="grandchild-text-container"> 670 <span class="grandchild-title">Real-time tech debt prevention</span> 671 <p class="grandchild-description">Our IDE extension ensures clean, scalable code with real-time checks</p> 672 </div> 673 </a> 674 675 676 <a href="https://codescene.com/use-cases/code-quality-improvement" class="grandchild-container"> 677 678 <div class="grandchild-icon"> 679 680 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-codequalityimpro-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 16"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M12,16v-2h3c.28,0,.52-.1.71-.29s.29-.43.29-.71v-2c0-.63.18-1.21.55-1.73.37-.52.85-.88,1.45-1.1v-.35c-.6-.22-1.08-.58-1.45-1.1-.37-.52-.55-1.09-.55-1.73v-2c0-.28-.1-.52-.29-.71s-.43-.29-.71-.29h-3V0h3c.83,0,1.54.29,2.12.88s.88,1.29.88,2.12v2c0,.28.1.52.29.71s.43.29.71.29h1v4h-1c-.28,0-.52.1-.71.29s-.29.43-.29.71v2c0,.83-.29,1.54-.88,2.12s-1.29.88-2.12.88h-3ZM5,16c-.83,0-1.54-.29-2.12-.88s-.88-1.29-.88-2.12v-2c0-.28-.1-.52-.29-.71-.19-.19-.43-.29-.71-.29H0v-4h1c.28,0,.52-.1.71-.29.19-.19.29-.43.29-.71v-2c0-.83.29-1.54.88-2.12s1.29-.88,2.12-.88h3v2h-3c-.28,0-.52.1-.71.29s-.29.43-.29.71v2c0,.63-.18,1.21-.55,1.73-.37.52-.85.88-1.45,1.1v.35c.6.22,1.08.58,1.45,1.1.37.52.55,1.09.55,1.73v2c0,.28.1.52.29.71s.43.29.71.29h3v2h-3Z" /></svg> 681 682 </div> 683 684 <div class="grandchild-text-container"> 685 <span class="grandchild-title">Code quality improvement</span> 686 <p class="grandchild-description">Evaluate code quality and enforce maintainability standards</p> 687 </div> 688 </a> 689 690 691 </div><div class="column no-icon-column"> 692 693 <a href="https://codescene.com/use-cases/scale-ai-coding-safely" class="grandchild-container"> 694 695 <div class="grandchild-icon"> 696 697 <svg width="16" height="20" viewbox="0 0 16 20" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#csh-scaleaicoding-clip0_30458_10823)"><path d="M8 20L0.8 14.6C0.55 14.4167 0.354167 14.1833 0.2125 13.9C0.0708333 13.6167 0 13.3167 0 13V3C0 2.45 0.195833 1.97917 0.5875 1.5875C0.979167 1.19583 1.45 1 2 1H14C14.55 1 15.0208 1.19583 15.4125 1.5875C15.8042 1.97917 16 2.45 16 3V13C16 13.3167 15.9292 13.6167 15.7875 13.9C15.6458 14.1833 15.45 14.4167 15.2 14.6L8 20ZM6.95 12.5L12 7.5L11 6.5L6.95 10.5L5 8.5L4 9.5L6.95 12.5Z" fill="#FFFFFF"></path></g><defs><clippath id="csh-scaleaicoding-clip0_30458_10823"><rect width="16" height="20" fill="white"></rect></clippath></defs></svg> 698 699 </div> 700 701 <div class="grandchild-text-container">
702 <span class="grandchild-title">Scale AI Coding</span> 703 <p class="grandchild-description">Assess AI risk and scale AI coding safely</p> 704 </div> 705 </a> 706 707 708 <a href="https://codescene.com/product/automated-code-health-reviews" class="grandchild-container"> 709 710 <div class="grandchild-icon"> 711 712 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-automatedcodehea-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 18 18"> <path d="M15,18H3c-1.65,0-3-1.35-3-3V7c0-1.65,1.35-3,3-3h1v-1c0-1.65,1.35-3,3-3h4c1.65,0,3,1.35,3,3v1h1c1.65,0,3,1.35,3,3v8c0,1.65-1.35,3-3,3ZM3,6c-.55,0-1,.45-1,1v8c0,.55.45,1,1,1h12c.55,0,1-.45,1-1V7c0-.55-.45-1-1-1H3ZM6,4h6v-1c0-.55-.45-1-1-1h-4c-.55,0-1,.45-1,1v1ZM9,14c-.55,0-1-.45-1-1v-1h-1c-.55,0-1-.45-1-1s.45-1,1-1h1v-1c0-.55.45-1,1-1s1,.45,1,1v1h1c.55,0,1,.45,1,1s-.45,1-1,1h-1v1c0,.55-.45,1-1,1Z" /></svg> 713 714 </div> 715 716 <div class="grandchild-text-container"> 717 <span class="grandchild-title">Automated code health reviews</span> 718 <p class="grandchild-description">Act on recommendations, reduce technical debt in daily development</p> 719 </div> 720 </a> 721 722 723 <a href="https://codescene.com/use-cases/measure-code-coverage" class="grandchild-container"> 724 725 <div class="grandchild-icon"> 726 727 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-measuringcodecov-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 18 18"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M5.6,12.6l-3.6-3.6,3.6-3.6,1.4,1.43-2.18,2.18,2.18,2.18-1.4,1.43ZM12.4,12.6l-1.4-1.43,2.17-2.18-2.17-2.18,1.4-1.43,3.6,3.6-3.6,3.6ZM2,18c-.55,0-1.02-.2-1.41-.59-.39-.39-.59-.86-.59-1.41v-4h2v4h4v2H2ZM12,18v-2h4v-4h2v4c0,.55-.2,1.02-.59,1.41-.39.39-.86.59-1.41.59h-4ZM0,6V2C0,1.45.2.98.59.59c.39-.39.86-.59,1.41-.59h4v2H2v4H0ZM16,6V2h-4V0h4c.55,0,1.02.2,1.41.59.39.39.59.86.59,1.41v4h-2Z" /></svg> 728 729 </div> 730 731 <div class="grandchild-text-container"> 732 <span class="grandchild-title">Measuring code coverage</span> 733 <p class="grandchild-description">Analyze and prioritize test coverage on high-risk areas where it matters</p> 734 </div> 735 </a> 736 737 738 </div> 739 </div> 740 741 <!-- Additional Links Logic --> 742 743 744 </div> 745 746 747 748 749 750 751 752 753 754 755 756 757 <div class="insights-column no-icon-column"> 758 <div class="child-title">MORE INSIGHTS</div> 759 760 761 <a href="https://codescene.com/product/integrations/ide-extensions/ai-refactoring" class="grandchild-container"> 762 763 <div class="grandchild-icon"> 764 765 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-aipoweredrefacto-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 18.6"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M9.75,8c.69,0,1.25.58,1.25,1.29v2.42c0,.71-.56,1.29-1.25,1.29s-1.25-.58-1.25-1.29v-2.42c0-.71.56-1.29,1.25-1.29ZM14.25,8c.69,0,1.25.58,1.25,1.29v2.42c0,.71-.56,1.29-1.25,1.29s-1.25-.58-1.25-1.29v-2.42c0-.71.56-1.29,1.25-1.29ZM12.01,0c4.48,0,7.22,1.94,8.5,4.79.31.01.71.05,1.1.18h0s0,0,0,0c0,0,0,0,.01,0h0c.19.06.81.27,1.37,1.02.57.76,1,1.99,1,3.94,0,2.12-.5,3.4-1.17,4.15-.33.37-.68.59-.98.71-.27.11-.56.16-.47.14h0s0,0,0,0h0c-.38.08-.69.13-.95.16-.01.02-.02.05-.03.08-1.53,3.29-4.72,3.42-8.38,3.42s-6.85-.13-8.38-3.42c-.01-.02-.02-.05-.03-.08-.26-.03-.58-.08-.95-.16h-.02s-.1-.02-.1-.02c-.1-.02-.24-.06-.37-.12-.29-.12-.64-.34-.98-.71C.5,13.34,0,12.06,0,9.94c0-1.95.43-3.17,1-3.94.56-.75,1.18-.96,1.37-1.02,0,0,0,0,0,0,0,0,0,0,0,0,.37-.12.78-.16,1.12-.16C4.79,1.95,7.53,0,12.01,0ZM12.01,3.25c-4.17,0-6.26,1.31-7.23,3.3-.19.39-.34.8-.45,1.24-.06.46-.09.94-.09,1.44,0,2.57.34,4.21.82,5.26l.1.21c.53,1.02,1.29,1.56,2.31,1.87h0s.22.07.22.07c1.14.31,2.55.35,4.3.35,1.86,0,3.34-.05,4.53-.42l.2-.07c.97-.34,1.7-.93,2.22-2.03h0s.09-.2.09-.2c.44-1.04.77-2.54.77-4.96v-.53c-.01-.21-.02-.41-.04-.62-.12-.58-.29-1.12-.53-1.62-.97-1.98-3.06-3.3-7.23-3.3ZM2.9,6.59h0s0,0,0,0l-.06.02s-.06.03-.1.05c-.09.05-.22.15-.36.34-.29.39-.66,1.21-.66,2.92,0,1.88.44,2.68.74,3.01.15.17.29.24.37.28.1.04.08.03.19.05,0,0,0,0,0,0-.24-1.1-.37-2.44-.37-4.07,0-.91.09-1.79.28-2.63,0,0-.02,0-.02,0ZM21.09,6.59c.18.83.27,1.71.27,2.62,0,1.63-.13,2.96-.37,4.07h0c.11-.03.1,0,.2-.05.08-.04.22-.11.37-.28.3-.33.74-1.14.74-3.01,0-1.71-.38-2.54-.66-2.92-.14-.19-.28-.29-.36-.35-.08-.05-.13-.06-.16-.07h0s-.01,0-.01,0Z" /></svg> 766 767 </div> 768 769 <div class="grandchild-text-container">
770 <span class="grandchild-title">AI-powered refactoring</span> 771 <p class="grandchild-description">Refactor automatically in your IDE to write clean, maintainable code</p> 772 </div> 773 </a> 774 775 <a href="https://codescene.com/product/integrations/ide-extensions/ai-refactoring" class="grandchild-container"> 776 777 <div class="grandchild-icon"> 778 779 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 12"><path fill="currentColor" d="M1.7,11.58c-.53-.8-.95-1.67-1.25-2.61s-.45-1.93-.45-2.96.15-2.04.45-2.98c.3-.93.72-1.8,1.25-2.6l1.67,1.1c-.43.63-.77,1.33-1.01,2.09-.24.76-.36,1.55-.36,2.39s.12,1.62.36,2.38c.24.75.58,1.44,1.01,2.08l-1.67,1.12ZM10,12c-1.67,0-3.08-.58-4.25-1.75s-1.75-2.58-1.75-4.25.58-3.08,1.75-4.25,2.58-1.75,4.25-1.75,3.08.58,4.25,1.75,1.75,2.58,1.75,4.25-.58,3.08-1.75,4.25-2.58,1.75-4.25,1.75ZM10,10c1.1,0,2.04-.39,2.82-1.18.78-.78,1.18-1.72,1.18-2.82s-.39-2.04-1.18-2.82c-.78-.78-1.72-1.18-2.82-1.18s-2.04.39-2.82,1.18-1.18,1.72-1.18,2.82.39,2.04,1.18,2.82c.78.78,1.72,1.18,2.82,1.18ZM18.27,11.58l-1.65-1.12c.43-.63.77-1.33,1.01-2.08.24-.75.36-1.54.36-2.38s-.12-1.63-.36-2.39c-.24-.76-.58-1.45-1.01-2.09l1.65-1.1c.53.8.95,1.67,1.26,2.6.31.93.46,1.93.46,2.98s-.15,2.02-.46,2.96-.73,1.81-1.26,2.61Z" /></svg> 780 781 </div> 782 783 <div class="grandchild-text-container"> 784 <span class="grandchild-title">Identify refactoring targets</span> 785 <p class="grandchild-description">Build a business case for refactoring, backed by measurable impact</p> 786 </div> 787 </a> 788 789 <a href="https://codescene.com/use-cases/sonarqube-vs-codescene" class="grandchild-container"> 790 791 <div class="grandchild-icon"> 792 793 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 16"><path fill="currentColor" d="M6,16l-1.4-1.42,2.58-2.58H0v-2h7.18l-2.58-2.57,1.4-1.43,5,5-5,5ZM14,10l-5-5L14,0l1.4,1.43-2.57,2.57h7.18v2h-7.18l2.57,2.57-1.4,1.43Z" /></svg> 794 795 </div> 796 797 <div class="grandchild-text-container"> 798 <span class="grandchild-title">SonarQube vs. CodeScene</span> 799 <p class="grandchild-description">Why CodeSceneâs CodeHealth⢠is 6x more accurate</p> 800 </div> 801 </a> 802 803 804 </div> 805 806 807 808 809 810 </div> 811 </li> 812 813 814 815 <li class="parent-link mega"> 816 <!-- MOVED INPUT UP ONE LEVEL FOR STRICT CSS SIBLING BINDING --> 817 <input type="checkbox" id="Resources" class="submenu-toggle" style="display: none;"> 818 819 <div class="parent-link-flex"> 820 <a href="#">Resources</a> 821 <label class="menu-arrow" for="Resources" aria-label="Toggle Resources submenu"> 822 <span class="menu-arrow-bg"></span> 823 </label> 824 </div> 825 826 <div class="dropdown"> 827 828 829 830 <!-- 2 Groups / 2 Columns Layout --> 831 <div class="links-container"> 832 <div class="grid-container"> 833 834 835 836 837 838 839 840 841 842 843 844 845 846 <div class="column no-icon-column"> 847 <div class="child-title">USE CODESCENE</div> 848 849 850 <a href="https://codescene.com/resources/tutorials" class="grandchild-container"> 851 852 <div class="grandchild-icon"> 853 854 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20">
854<path fill="currentColor" d="M2,20c-.55,0-1.02-.2-1.41-.59-.39-.39-.59-.86-.59-1.41v-10c0-.55.2-1.02.59-1.41.39-.39.86-.59,1.41-.59h16c.55,0,1.02.2,1.41.59.39.39.59.86.59,1.41v10c0,.55-.2,1.02-.59,1.41-.39.39-.86.59-1.41.59H2ZM2,18h16v-10H2v10ZM8,17l6-4-6-4v8ZM2,5v-2h16v2H2ZM5,2V0h10v2H5Z" /></svg> 855 856 </div> 857 858 <div class="grandchild-text-container"> 859 <span class="grandchild-title">Tutorials, podcasts and talks</span> 860 <p class="grandchild-description">See and explore resources</p> 861 </div> 862 </a> 863 864 <a href="https://codescene.io/projects/32159/jobs/4059008/results/code/technical-debt/system-map?max-code-health=10.00&min-change-freq=0&showHotspotsOnly=false&min-coverage=0.00&max-coverage=100.00#codehealth" class="grandchild-container"> 865 866 <div class="grandchild-icon"> 867 868 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 18.6"><path fill="currentColor" fill-rule="evenodd" d="M12.01,0c4.48,0,7.22,1.94,8.5,4.79.31.01.71.05,1.1.18h0s0,0,0,0c0,0,0,0,.01,0h0c.19.06.81.27,1.37,1.02.57.76,1,1.99,1,3.94,0,2.12-.5,3.4-1.17,4.15-.33.37-.68.59-.98.71-.27.11-.56.16-.47.14h0s0,0,0,0c-.38.08-.69.13-.95.16-.01.02-.02.05-.03.08-1.53,3.29-4.72,3.42-8.38,3.42s-6.85-.13-8.38-3.42c-.01-.02-.02-.05-.03-.08-.26-.03-.58-.08-.95-.16h-.02c.09.02-.2-.03-.47-.14-.29-.12-.64-.34-.98-.71C.5,13.34,0,12.06,0,9.94c0-1.95.43-3.17,1-3.94.56-.75,1.18-.96,1.37-1.02,0,0,0,0,0,0,0,0,0,0,0,0,.37-.12.78-.16,1.12-.16C4.79,1.95,7.53,0,12.01,0ZM12.01,3.25c-4.17,0-6.26,1.31-7.23,3.3-.19.38-.33.79-.44,1.22-.06.47-.1.96-.1,1.46,0,2.57.34,4.21.82,5.26l.1.21c.5.95,1.19,1.48,2.11,1.8l.2.07h0s.22.07.22.07c1.14.31,2.55.35,4.3.35,1.86,0,3.34-.05,4.53-.42l.2-.07c.97-.34,1.7-.93,2.22-2.03h0s.09-.2.09-.2c.44-1.04.77-2.54.77-4.96v-.53c-.01-.21-.02-.41-.04-.62-.12-.58-.29-1.12-.53-1.62-.97-1.98-3.06-3.3-7.23-3.3ZM2.9,6.59h0s0,0,0,0c-.02,0-.07.02-.16.07-.09.05-.22.15-.36.34-.29.39-.66,1.21-.66,2.92,0,1.88.44,2.68.74,3.01.15.17.29.24.37.28.1.04.08.03.19.05,0,0,0,0,0,0-.24-1.1-.37-2.44-.37-4.07,0-.91.09-1.79.28-2.63,0,0-.02,0-.02,0ZM21.09,6.59c.18.83.27,1.71.27,2.62,0,1.63-.13,2.96-.37,4.07h0c.11-.03.1,0,.2-.05.08-.04.22-.11.37-.28.3-.33.74-1.14.74-3.01,0-1.71-.38-2.54-.66-2.92-.14-.19-.28-.29-.36-.35-.08-.05-.13-.06-.16-.07h0s-.01,0-.01,0Z" /></svg> 869 870 </div> 871 872 <div class="grandchild-text-container"> 873 <span class="grandchild-title">Guided product tour</span> 874 <p class="grandchild-description">CodeScene in action</p> 875 </div> 876 </a> 877 878 <a href="https://codescene.com/resources/academy" class="grandchild-container"> 879 880 <div class="grandchild-icon"> 881 882 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 22 18"><path fill="currentColor" d="M11,18l-7-3.8v-6L0,6,11,0l11,6v8h-2v-6.9l-2,1.1v6l-7,3.8ZM11,9.7l6.85-3.7-6.85-3.7-6.85,3.7,6.85,3.7ZM11,15.73l5-2.7v-3.77l-5,2.75-5-2.75v3.77l5,2.7Z" /></svg> 883 884 </div> 885 886 <div class="grandchild-text-container"> 887 <span class="grandchild-title">CodeScene Academy</span> 888 <p class="grandchild-description">Master CodeHealth⢠and tech debt</p> 889 </div> 890 </a> 891 892 <a href="https://codescene.com/resources/github-students" class="grandchild-container"> 893 894 <div class="grandchild-icon"> 895 896 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 22.01 20">
896<path fill="currentColor" d="M10.88,18c.07,0,.13-.02.2-.05.07-.03.12-.07.15-.1l8.2-8.2c.2-.2.35-.42.44-.67.09-.25.14-.5.14-.75,0-.27-.05-.52-.14-.76-.09-.24-.24-.45-.44-.64l-4.25-4.25c-.18-.2-.4-.35-.64-.44-.24-.09-.5-.14-.76-.14-.25,0-.5.05-.75.14s-.47.24-.68.44l-.27.28,1.85,1.88c.25.23.43.5.55.8.12.3.18.62.18.95,0,.7-.24,1.29-.71,1.76-.48.47-1.06.71-1.76.71-.33,0-.65-.06-.96-.18-.31-.12-.58-.29-.81-.52l-1.87-1.85-4.38,4.38c-.05.05-.09.1-.11.16-.03.06-.04.12-.04.19,0,.13.05.25.15.36s.22.16.35.16c.07,0,.13-.02.2-.05.07-.03.12-.07.15-.1l3.4-3.4,1.4,1.4-3.37,3.4c-.05.05-.09.1-.11.16-.03.06-.04.12-.04.19,0,.13.05.25.15.35.1.1.22.15.35.15.07,0,.13-.02.2-.05.07-.03.12-.07.15-.1l3.4-3.38,1.4,1.4-3.37,3.4c-.05.03-.09.08-.11.15-.03.07-.04.13-.04.2,0,.13.05.25.15.35.1.1.22.15.35.15.07,0,.13-.01.19-.04.06-.02.11-.06.16-.11l3.4-3.38,1.4,1.4-3.4,3.4c-.05.05-.09.1-.11.16s-.04.12-.04.19c0,.13.05.25.16.35.11.1.23.15.36.15ZM10.86,20c-.62,0-1.16-.2-1.64-.61-.47-.41-.75-.92-.84-1.54-.57-.08-1.04-.32-1.42-.7-.38-.38-.62-.86-.7-1.42-.57-.08-1.04-.32-1.41-.71-.38-.39-.6-.86-.69-1.41-.63-.08-1.15-.36-1.55-.83-.4-.47-.6-1.02-.6-1.65,0-.33.06-.65.19-.96s.3-.58.54-.81l5.8-5.78,3.27,3.28s.08.09.15.11c.07.03.13.04.2.04.15,0,.28-.05.38-.14.1-.09.15-.21.15-.36,0-.07-.01-.13-.04-.2-.02-.07-.06-.12-.11-.15l-3.57-3.57c-.18-.2-.4-.35-.64-.44-.24-.09-.5-.14-.76-.14-.25,0-.5.05-.75.14s-.47.24-.68.44l-3.52,3.55c-.15.15-.28.32-.38.52-.1.2-.17.4-.2.6-.03.2-.03.4,0,.61.03.21.1.4.2.59l-1.45,1.45c-.28-.38-.49-.8-.62-1.26-.13-.46-.18-.92-.15-1.39.03-.47.15-.92.35-1.36.2-.44.48-.84.83-1.19l3.53-3.52c.4-.38.85-.67,1.34-.88.49-.2,1-.3,1.51-.3s1.02.1,1.51.3c.49.2.93.49,1.31.88l.27.28.28-.28c.4-.38.85-.67,1.34-.88.49-.2,1-.3,1.51-.3s1.02.1,1.51.3c.49.2.93.49,1.31.88l4.22,4.23c.38.38.68.83.88,1.33.2.5.3,1.01.3,1.52s-.1,1.02-.3,1.51c-.2.49-.49.93-.88,1.31l-8.2,8.18c-.23.23-.5.42-.81.55-.31.13-.63.2-.96.2Z" /></svg> 897 898 </div> 899 900 <div class="grandchild-text-container"> 901 <span class="grandchild-title">Students</span> 902 <p class="grandchild-description">Free developer package for students</p> 903 </div> 904 </a> 905 906 907 </div> 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 <div class="column no-icon-column"> 923 <div class="child-title">KNOWLEDGE AND SUPPORT</div> 924 925 926 <a href="https://codescene.com/resources/research-and-insights" class="grandchild-container"> 927 928 <div class="grandchild-icon"> 929 930 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-publications-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 19.5 16"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M6.5,16c-.55,0-1.02-.2-1.41-.59-.39-.39-.59-.86-.59-1.41v-3h3v-2.25c-.58-.03-1.14-.16-1.66-.39-.53-.23-1-.56-1.44-1.01v-1.1h-1.15L0,3c.6-.77,1.34-1.31,2.22-1.62s1.78-.47,2.68-.47c.45,0,.89.03,1.31.1.42.07.85.19,1.29.38V0h12v13c0,.83-.29,1.54-.88,2.12s-1.29.88-2.12.88H6.5ZM9.5,11h6v2c0,.28.1.52.29.71s.43.29.71.29.52-.1.71-.29.29-.43.29-.71V2h-8v.6l6,6v1.4h-1.4l-2.85-2.85-.2.2c-.23.23-.48.44-.74.62s-.53.32-.81.42v2.6ZM4.1,4.25h2.3v2.15c.2.13.41.23.62.28s.44.07.68.07c.38,0,.73-.06,1.04-.18.31-.12.61-.32.91-.62l.2-.2-1.4-1.4c-.48-.48-1.02-.85-1.62-1.09-.6-.24-1.24-.36-1.92-.36-.33,0-.65.03-.95.07-.3.05-.6.12-.9.22l1.05,1.05ZM13.5,13h-7v1h7.15c-.05-.15-.09-.31-.11-.48-.03-.17-.04-.34-.04-.52Z" /></svg> 931 932 </div> 933 934 <div class="grandchild-text-container">
935 <span class="grandchild-title">Publications</span> 936 <p class="grandchild-description">Research, books and insights</p> 937 </div> 938 </a> 939 940 <a href="https://codescene.io/docs/index.html" class="grandchild-container"> 941 942 <div class="grandchild-icon"> 943 944 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-documentation-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M8,12h4v-2h-4v2ZM8,9h8v-2h-8v2ZM8,6h8v-2h-8v2ZM6,16c-.55,0-1.02-.2-1.41-.59-.39-.39-.59-.86-.59-1.41V2c0-.55.2-1.02.59-1.41.39-.39.86-.59,1.41-.59h12c.55,0,1.02.2,1.41.59.39.39.59.86.59,1.41v12c0,.55-.2,1.02-.59,1.41-.39.39-.86.59-1.41.59H6ZM6,14h12V2H6v12ZM2,20c-.55,0-1.02-.2-1.41-.59-.39-.39-.59-.86-.59-1.41V4h2v14h14v2H2Z" /></svg> 945 946 </div> 947 948 <div class="grandchild-text-container"> 949 <span class="grandchild-title">Documentation</span> 950 <p class="grandchild-description">Use cases, guides and more</p> 951 </div> 952 </a> 953 954 <a href="https://helpcenter.codescene.com/en/help" class="grandchild-container"> 955 956 <div class="grandchild-icon"> 957 958 <!--?xml version="1.0" encoding="UTF-8"?--><svg id="csh-helpcenter-Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20"> <defs> <style> .cls-1 { fill: #021025; } </style> </defs> <path class="cls-1" d="M10,20c-1.38,0-2.68-.26-3.9-.79-1.22-.52-2.28-1.24-3.18-2.14-.9-.9-1.61-1.96-2.14-3.18-.52-1.22-.79-2.52-.79-3.9s.26-2.68.79-3.9c.53-1.22,1.24-2.28,2.14-3.18.9-.9,1.96-1.61,3.18-2.14,1.22-.52,2.52-.79,3.9-.79s2.68.26,3.9.79c1.22.53,2.27,1.24,3.18,2.14.9.9,1.61,1.96,2.14,3.18.52,1.22.79,2.52.79,3.9s-.26,2.68-.79,3.9-1.24,2.27-2.14,3.18c-.9.9-1.96,1.61-3.18,2.14s-2.52.79-3.9.79ZM7.1,17.45l1.2-2.75c-.7-.25-1.3-.64-1.81-1.16-.51-.53-.9-1.14-1.19-1.84l-2.75,1.15c.38,1.07.97,2,1.77,2.8.8.8,1.73,1.4,2.78,1.8ZM5.3,8.3c.28-.7.68-1.31,1.19-1.84.51-.52,1.11-.91,1.81-1.16l-1.15-2.75c-1.07.4-2,1-2.8,1.8-.8.8-1.4,1.73-1.8,2.8l2.75,1.15ZM10,13c.83,0,1.54-.29,2.12-.88s.88-1.29.88-2.12-.29-1.54-.88-2.12c-.58-.58-1.29-.88-2.12-.88s-1.54.29-2.12.88c-.58.58-.88,1.29-.88,2.12s.29,1.54.88,2.12c.58.58,1.29.88,2.12.88ZM12.9,17.45c1.05-.4,1.97-1,2.76-1.79s1.39-1.71,1.79-2.76l-2.75-1.2c-.25.7-.63,1.3-1.15,1.81s-1.12.9-1.8,1.19l1.15,2.75ZM14.7,8.25l2.75-1.15c-.4-1.05-1-1.97-1.79-2.76-.79-.79-1.71-1.39-2.76-1.79l-1.15,2.8c.68.25,1.27.63,1.77,1.14.5.51.89,1.1,1.18,1.76Z" /></svg> 959 960 </div> 961 962 <div class="grandchild-text-container"> 963 <span class="grandchild-title">Help center</span> 964 <p class="grandchild-description">Get help and guidance</p> 965 </div> 966 </a> 967 968 <a href="https://helpcenter.codescene.com/en/help" class="grandchild-container"> 969 970 <div class="grandchild-icon"> 971 972 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 17 20">
972<path fill="currentColor" d="M9,20l-.25-3h-.25c-2.37,0-4.38-.83-6.03-2.48-1.65-1.65-2.47-3.66-2.47-6.02S.83,4.12,2.47,2.47C4.12.83,6.13,0,8.5,0c1.18,0,2.29.22,3.31.66,1.02.44,1.92,1.05,2.7,1.83.77.77,1.38,1.67,1.82,2.7.44,1.02.66,2.13.66,3.31,0,1.25-.2,2.45-.61,3.6-.41,1.15-.97,2.22-1.68,3.2-.71.98-1.55,1.88-2.52,2.68-.98.8-2.04,1.48-3.19,2.02ZM11,16.35c1.18-1,2.15-2.17,2.89-3.51.74-1.34,1.11-2.79,1.11-4.34,0-1.82-.63-3.35-1.89-4.61-1.26-1.26-2.8-1.89-4.61-1.89s-3.35.63-4.61,1.89c-1.26,1.26-1.89,2.8-1.89,4.61s.63,3.35,1.89,4.61c1.26,1.26,2.8,1.89,4.61,1.89h2.5v1.35ZM8.48,13.55c.28,0,.52-.1.72-.3s.3-.44.3-.73-.1-.52-.3-.72-.44-.3-.72-.3-.53.1-.73.3-.3.44-.3.72.1.53.3.73.44.3.73.3ZM7.75,10.8h1.5c0-.5.05-.85.15-1.05.1-.2.42-.57.95-1.1.3-.3.55-.62.75-.97.2-.35.3-.73.3-1.12,0-.85-.29-1.49-.86-1.91-.58-.42-1.25-.64-2.04-.64-.73,0-1.35.2-1.85.61s-.85.9-1.05,1.49l1.4.55c.08-.28.24-.56.48-.84.23-.28.57-.41,1.02-.41s.79.12,1.01.38c.23.25.34.53.34.83,0,.28-.08.54-.25.76-.17.22-.37.45-.6.69-.58.5-.94.9-1.06,1.19-.12.29-.19.81-.19,1.56Z" /></svg> 973 974 </div> 975 976 <div class="grandchild-text-container"> 977 <span class="grandchild-title">FAQs</span> 978 <p class="grandchild-description">Answers to common questions</p> 979 </div> 980 </a> 981 982 983 </div> 984 </div> 985 986 <!-- Additional Links Logic --> 987 988 989 </div> 990 991 992 993 994 995 <div class="image-column"> 996 <a href="https://codescene.com/hubfs/web_docs/Business-impact-of-code-quality.pdf" class="template-featured-image light" target="_blank"> 997 <div class="featured-image__container"> 998 <div class="featured-image__content"> 999 1000 <div class="featured-image__label-wrapper"> 1001 <div class="featured-image__label">WHITEPAPER</div> 1002 </div> 1003 1004 <div class="featured-image__text"> 1005 <div class="featured-image__title">Code Red</div> 1006 1007 <div class="featured-image__subtitle">Discover how poor code quality slows teams down, increases costs, and puts delivery at risk</div> 1008 1009 </div> 1010 </div> 1011 1012 <div class="featured-image__cta cs-tst-text-link"> 1013 <span class="featured-image__cta-text">Read research</span> 1014 <svg width="24" height="24" viewbox="0 0 24 24" fill="none"><path d="M8 4L16 12L8 20" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" /></svg> 1015 </div> 1016 1017 </div> 1018 </a> 1019 </div> 1020 1021 1022 </div> 1023 </li> 1024 1025 1026 1027 1028 1029 1030 <li class="parent-link"> 1031 <div class="parent-link-flex"> 1032 <a href="https://codescene.com/blog"> 1033 Blog 1034 </a> 1035 </div> 1036 </li> 1037 1038 <li class="parent-link"> 1039 <div class="parent-link-flex"> 1040 <a href="https://codescene.com/enterprise"> 1041 Enterprise 1042 </a> 1043 </div> 1044 </li> 1045 1046 <li class="parent-link"> 1047 <div class="parent-link-flex"> 1048 <a href="https://codescene.com/pricing"> 1049 Pricing 1050 </a> 1051 </div> 1052 </li> 1053 1054 <li class="parent-link"> 1055 <div class="parent-link-flex"> 1056 <a href="https://codescene.com/customers"> 1057 Customers 1058 </a> 1059 </div> 1060 </li> 1061 1062 1063 1064 <!-- DYNAMIC MOBILE CTA BUTTONS (Syncs EXACTLY with Desktop) --> 1065 <div class="mobile-button__div__menu"> 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 <!-- Mobile Events Accordion Clone (STYLED LIKE A NATIVE CATEGORY) --> 1081 <div class="parent-link mega events-dropdown" data-automation-id="navigation-events-button"> 1082 <!-- MOVED INPUT UP ONE LEVEL HERE TOO --> 1083 <input type="checkbox" id="mob-cta-ev-1" class="submenu-toggle" style="display: none;"> 1084 1085 <div class="parent-link-flex" style="width: 100%;"> 1086 <a href="" class="mobile-as-category"> 1087 Events 1088 </a> 1089 <label class="menu-arrow" for="mob-cta-ev-1" aria-label="Toggle Events submenu">
1090 <span class="menu-arrow-bg"></span> 1091 </label> 1092 </div> 1093 1094 <div class="dropdown dropdown--1col"> 1095 1096 1097 1098 1099 <div class="image-column"> 1100 <a href="https://codescene.com/resources/webinars/scale-ai-coding-safely-without-sacrificing-quality" class="template-featured-image events-featured-card style-dark " target="_blank"> 1101 1102 1103 <div class="featured-image__overlay"></div> 1104 <div class="featured-image__container"> 1105 <div class="featured-image__content"> 1106 1107 <div class="featured-image__label-wrapper"> 1108 <div class="featured-image__label">FEATURED</div> 1109 </div> 1110 1111 <div class="featured-image__text"> 1112 <div class="featured-image__title">AI in Software Development</div> 1113 <div class="featured-image__subtitle">Navigating opportunities, risks and guardrails</div> 1114 </div> 1115 </div> 1116 1117 <div class="featured-image__cta cs-tst-text-link"> 1118 <span class="featured-image__cta-text">Enroll in the course</span> 1119 <svg width="24" height="24" viewbox="0 0 24 24" fill="none"><path d="M8 4L16 12L8 20" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" /></svg> 1120 </div> 1121 1122 </div> 1123 </a> 1124 </div> 1125 1126 1127 <div class="links-container"> 1128 <div class="grid-container"> 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 <div class="column no-icon-column"> 1140 1141 1142 1143 1144 1145 <a href="https://codescene.com/resources/academy/technical-debt" class="grandchild-container"> 1146 1147 <div class="grandchild-text-container"> 1148 <span class="grandchild-title">Mastering Technical Debt</span> 1149 <p class="grandchild-description">An introduction by CodeScene</p> 1150 </div> 1151 </a> 1152 1153 1154 1155 1156 <div class="child-title" style="margin-top: 4px;">MORE COURSES</div> 1157 1158 1159 </div> 1160 </div> 1161 </div> 1162 </div> 1163 </div> 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 <!-- Regular CTA Buttons (Login, Free Trial) --> 1180 <a href="https://codescene.io/login" data-automation-id="navigation-login-button">
1181 <span class="button btn-custom btn-has-icon"> 1182 1183 <span class="btn-icon"> 1184 1185 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 14 18"><path fill="currentColor" d="M12,18H2c-1.1,0-2-.9-2-2v-7c0-1.1.9-2,2-2h1v-3C3,1.79,4.79,0,7,0s4,1.79,4,4v3h1c1.1,0,2,.9,2,2v7c0,1.1-.9,2-2,2ZM2,9h0v7h10v-7H2ZM5,7h4v-3c0-1.1-.9-2-2-2s-2,.9-2,2v3ZM7,15c-.55,0-1-.45-1-1v-3c0-.55.45-1,1-1s1,.45,1,1v3c0,.55-.45,1-1,1Z" /></svg> 1186 1187 </span> 1188 <span class="btn-label" style="opacity: 1;">Login</span> 1189 1190 </span> 1191 </a> 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 <!-- Regular CTA Buttons (Login, Free Trial) --> 1208 <a href="https://codescene.com/product/free-trial"> 1209 <span class="button btn-primary-dark "> 1210 1211 Try for free 1212 1213 </span> 1214 </a> 1215 1216 1217 1218 1219 </div> 1220 </ul> 1221 </nav> 1222 </div> 1223 1224 <div class="header__button header--element login-button-wrapper"> 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 <div class="parent-link mega events-dropdown" data-automation-id="navigation-events-button"> 1243 <a href="" class="btn-events btn-has-icon "> 1244 1245 <span class="btn-icon"> 1246 1247 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 18 18"><path fill="currentColor" d="M16,18H2c-1.1,0-2-.9-2-2V4c0-1.1.9-2,2-2h1v-1c0-.55.45-1,1-1s1,.45,1,1v1h3v-1c0-.55.45-1,1-1s1,.45,1,1v1h3v-1c0-.55.45-1,1-1s1,.45,1,1v1h1c1.1,0,2,.9,2,2v12c0,1.1-.9,2-2,2ZM2,8v8h14v-8H2ZM2,6h14v-2h-1c0,.55-.45,1-1,1s-1-.45-1-1h-3c0,.55-.45,1-1,1s-1-.45-1-1h-3c0,.55-.45,1-1,1s-1-.45-1-1h-1v2ZM13,12H5c-.55,0-1-.45-1-1s.45-1,1-1h8c.55,0,1,.45,1,1s-.45,1-1,1Z" /></svg> 1248 1249 </span> 1250 <span class="btn-label">Events</span> 1251 1252 </a> 1253 1254 <div class="dropdown dropdown--right-aligned dropdown--1col"> 1255 1256 1257 <!-- 1-COL STRICT STRUCTURE (IMAGE ON TOP) --> 1258 1259 1260 1261 1262 <div class="image-column"> 1263 <a href="https://codescene.com/resources/webinars/scale-ai-coding-safely-without-sacrificing-quality" class="template-featured-image events-featured-card style-dark " target="_blank"> 1264 1265 <div class="featured-image__overlay"></div> 1266 <div class="featured-image__container"> 1267 <div class="featured-image__content"> 1268 1269 <div class="featured-image__label-wrapper"> 1270 <div class="featured-image__label">FEATURED</div> 1271 </div> 1272 1273 <div class="featured-image__text"> 1274 <div class="featured-image__title">AI in Software Development</div> 1275 <div class="featured-image__subtitle">Navigating opportunities, risks and guardrails</div> 1276 </div> 1277 </div> 1278 1279 <div class="featured-image__cta cs-tst-text-link">
1280 <span class="featured-image__cta-text">Enroll in the course</span> 1281 <svg width="24" height="24" viewbox="0 0 24 24" fill="none"><path d="M8 4L16 12L8 20" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" /></svg> 1282 </div> 1283 1284 </div> 1285 </a> 1286 </div> 1287 1288 1289 <div class="links-container"> 1290 <div class="grid-container"> 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 <div class="column no-icon-column"> 1302 1303 1304 1305 1306 1307 <a href="https://codescene.com/resources/academy/technical-debt" class="grandchild-container"> 1308 1309 <div class="grandchild-text-container"> 1310 <span class="grandchild-title">Mastering Technical Debt</span> 1311 <p class="grandchild-description">An introduction by CodeScene</p> 1312 </div> 1313 </a> 1314 1315 1316 1317 1318 <div class="child-title" style="margin-top: 4px;">MORE COURSES</div> 1319 1320 1321 </div> 1322 </div> 1323 </div> 1324 1325 1326 1327 </div> 1328 </div> 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 <a href="https://codescene.io/login" data-automation-id="navigation-login-button"> 1348 <span class="button btn-custom btn-has-icon "> 1349 1350 <span class="btn-icon"> 1351 1352 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 14 18"><path fill="currentColor" d="M12,18H2c-1.1,0-2-.9-2-2v-7c0-1.1.9-2,2-2h1v-3C3,1.79,4.79,0,7,0s4,1.79,4,4v3h1c1.1,0,2,.9,2,2v7c0,1.1-.9,2-2,2ZM2,9h0v7h10v-7H2ZM5,7h4v-3c0-1.1-.9-2-2-2s-2,.9-2,2v3ZM7,15c-.55,0-1-.45-1-1v-3c0-.55.45-1,1-1s1,.45,1,1v3c0,.55-.45,1-1,1Z" /></svg> 1353 1354 </span> 1355 <span class="btn-label">Login</span> 1356 1357 </span> 1358 </a> 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 <a href="https://codescene.com/product/free-trial"> 1378 <span class="button btn-primary-dark "> 1379 1380 Try for free 1381 1382 </span> 1383 </a> 1384 1385 1386 1387 1388 </div> 1389 1390 </div> 1391</div> 1392 1393 1394
1395<script> 1396(function(){ 1397 /* Checkout click handler â gates through Geo Selector popup */ 1398 document.addEventListener('click', function(e){ 1399 var btn = e.target.closest('.js-header-stripe-checkout'); 1400 if(!btn) return; 1401 e.preventDefault(); 1402 e.stopPropagation(); 1403 1404 var apiBase = btn.getAttribute('data-stripe-api'); 1405 var planKey = btn.getAttribute('data-stripe-plan'); 1406 var interval = btn.getAttribute('data-stripe-interval'); 1407 var successUrl = btn.getAttribute('data-stripe-success'); 1408 var cancelUrl = btn.getAttribute('data-stripe-cancel'); 1409 1410 /* Fall back to csGeoConfig if data attributes are empty */ 1411 var cfg = window.csGeoConfig || {}; 1412 if (!apiBase) apiBase = cfg.apiBase || ''; 1413 /* Single source of truth for the default billing interval: a button only 1414 emits an interval when explicitly set; otherwise inherit the site default 1415 from the Geo Selector (csGeoConfig.defaultInterval), last-resort 'month'. 1416 Never silently 'year' here. */ 1417 if (!interval) interval = cfg.defaultInterval || 'month'; 1418 if (!planKey) { console.error('[Header Stripe] Missing plan key'); return; } 1419 if (!apiBase) { console.error('[Header Stripe] Missing API base'); return; } 1420 1421 var useGeoGate = btn.getAttribute('data-geo-gate') === 'true'; 1422 1423 if (useGeoGate && typeof window.csGeoCheckout === 'function') { 1424 window.csGeoCheckout(function(account) { 1425 doCheckout(btn, apiBase, planKey, interval, successUrl, cancelUrl, account); 1426 }); 1427 } else { 1428 doCheckout(btn, apiBase, planKey, interval, successUrl, cancelUrl, localStorage.getItem('mcp_stripe_account') || 'ab'); 1429 } 1430 }); 1431 1432 function doCheckout(btn, apiBase, planKey, interval, successUrl, cancelUrl, account) { 1433 /* Preserve the styled <span> inside <a>, just swap its text */ 1434 var styledSpan = btn.querySelector('.button'); 1435 var origSpanHTML = styledSpan ? styledSpan.innerHTML : ''; 1436 var origBtnHTML = btn.innerHTML; 1437 if (styledSpan) { 1438 styledSpan.innerHTML = 'Loading...'; 1439 } else { 1440 btn.innerHTML = 'Loading...'; 1441 } 1442 btn.style.pointerEvents = 'none'; 1443 1444 var finalSuccess = successUrl || ''; 1445 if(finalSuccess && finalSuccess.indexOf('{CHECKOUT_SESSION_ID}') === -1){ 1446 finalSuccess += (finalSuccess.indexOf('?') !== -1 ? '&' : '?') + 'session_id={CHECKOUT_SESSION_ID}'; 1447 } 1448 1449 var payload = { "plan": planKey, "interval": interval, "stripe-account": account, "success-url": finalSuccess, "cancel-url": cancelUrl || '' }; 1450 /* Resolve billing vs no-billing. Default (Checkout Mode = inherit + page 1451 billingMode 'billing', or the no-billing wire fields left at their defaults) 1452 POSTs to /checkout exactly as before, so this stays fully inert until 1453 CodeScene's secondary endpoint is configured on the Geo Selector 1454 (csGeoConfig.noBillingPath / noBillingFlag). */ 1455 /* Checkout Mode emits 'no_billing' (underscore); internal effMode uses 1456 'no-billing' (hyphen). Both spellings are intentional, do not unify them. 1457 billingCfg is a distinct binding from the click-handler scope's cfg. */ 1458 var billingMode = btn.getAttribute('data-stripe-billing') || 'inherit'; 1459 var billingCfg = window.csGeoConfig || {}; 1460 var effMode = billingMode === 'billing' ? 'billing' 1461 : billingMode === 'no_billing' ? 'no-billing' 1462 : (billingCfg.billingMode === 'no-billing' ? 'no-billing' : 'billing'); 1463 var url = apiBase + '/checkout'; 1464 if (effMode === 'no-billing') { 1465 var nbPath = billingCfg.noBillingPath || '/checkout'; 1466 if (nbPath.charAt(0) !== '/') { nbPath = '/' + nbPath; } 1467 url = apiBase + nbPath; 1468 var nbFlag = billingCfg.noBillingFlag || ''; 1469 var nbEq = nbFlag.indexOf('='); 1470 if (nbEq !== -1) { 1471 var nbKey = nbFlag.slice(0, nbEq).trim(); 1472 var nbVal = nbFlag.slice(nbEq + 1).trim(); 1473 /* Coerce to the JSON type the endpoint expects. collect-payment-info is a 1474 boolean (CodeScene wire format), so send true/false UNQUOTED, never the 1475 string "false" which a validated boolean param would reject or read as 1476 truthy. Numeric values send as numbers, anything else stays a string. */ 1477 if (nbKey) { 1478 payload[nbKey] = nbVal === 'true' ? true 1479 : nbVal === 'false' ? false 1480 : (nbVal !== '' && !isNaN(nbVal)) ? Number(nbVal) 1481 : nbVal; 1482 } 1483 } 1484 } 1485 if (btn.getAttribute('data-stripe-test') === 'true') { url += (url.indexOf('?') !== -1 ? '&' : '?') + 'test'; }
1486 console.log('[Header Stripe] POST', url, payload); 1487 1488 fetch(url, { method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify(payload) }) 1489 .then(function(r){ 1490 return r.json().then(function(d){ 1491 if(!r.ok){ 1492 console.error('[Header Stripe] API ' + r.status + ':', d); 1493 alert('Checkout error ' + r.status + ': ' + (d.error || d.message || JSON.stringify(d))); 1494 if(styledSpan) styledSpan.innerHTML = origSpanHTML; else btn.innerHTML = origBtnHTML; btn.style.pointerEvents = 'auto'; 1495 return; 1496 } 1497 if(d.ok && d["checkout-url"]){ 1498 window.location.href = d["checkout-url"]; 1499 } else { 1500 console.error('[Header Stripe] Failed:', d); 1501 alert('Checkout failed: ' + (d.error || JSON.stringify(d))); 1502 if(styledSpan) styledSpan.innerHTML = origSpanHTML; else btn.innerHTML = origBtnHTML; btn.style.pointerEvents = 'auto'; 1503 } 1504 }); 1505 }) 1506 .catch(function(err){ 1507 console.error('[Header Stripe] Network Error:', err); 1508 alert('Could not connect to checkout service.'); 1509 if(styledSpan) styledSpan.innerHTML = origSpanHTML; else btn.innerHTML = origBtnHTML; btn.style.pointerEvents = 'auto'; 1510 }); 1511 } 1512})(); 1513</script>
1513</div> 1514 1515</header></div> 1516 1517 1518 1519 1520<main id="main-content" class="body-container-wrapper"> 1521 <div class="body-container body-container--blog-index"> 1522 1523 1524 1525 <section class="content-wrapper"> 1526 <div class="container-fluid csb-post2--blog--header__container"> 1527 <div class="row-fluid-wrapper"> 1528 <div class="row-fluid"> 1529 <div class="span12 widget-span widget-type-cell" style="" data-widget-type="cell" data-x="0" data-w="12"> 1530 <div class="cs-blog__header-bar"> 1531 <!-- Left side: Breadcrumb --> 1532 <div class="cs-blog__breadcrumbs" id="blog-bc" data-author-map="{"codescene-team":"CodeScene Team"}"> 1533 <a href="https://codescene.com/blog" class="csb-post2--blog-pagination__link"><span>Blog</span></a> 1534 <span class="cs-blog__breadcrumb-separator" hidden>/</span> 1535 <a class="csb-post2--blog-pagination__link bc-secondary" hidden><span></span></a> 1536 </div> 1537 1538
1538<script> 1539 document.addEventListener("DOMContentLoaded", function () { 1540 const bc = document.getElementById("blog-bc"); 1541 if (!bc) return; 1542 1543 // Elements 1544 const sep = bc.querySelector(".cs-blog__breadcrumb-separator"); 1545 const secondary = bc.querySelector(".bc-secondary"); 1546 const authorMap = (() => { try { return JSON.parse(bc.dataset.authorMap || "{}"); } catch { return {}; } })(); 1547 1548 // Normalize path (remove trailing slash) 1549 let path = window.location.pathname.toLowerCase().replace(/\/$/, ""); 1550 if (path === "/blog") return; // root: show only "Blog" 1551 1552 function showSecondary(text, href) { 1553 if (!secondary || !sep) return; 1554 secondary.querySelector("span").textContent = text; 1555 secondary.href = href; 1556 secondary.hidden = false; 1557 sep.hidden = false; 1558 } 1559 1560 // Tag listing 1561 if (path.startsWith("/blog/tag/")) { 1562 const m = path.match(/\/blog\/tag\/([^/]+)/); 1563 if (m) { 1564 const slug = m[1]; 1565 const label = slug.replace(/-/g, " ").replace(/\b\w/g, c => c.toUpperCase()); 1566 showSecondary(label, `/blog/tag/${slug}`); 1567 } 1568 } 1569 // Author listing 1570 else if (path.startsWith("/blog/author/")) { 1571 const m = path.match(/\/blog\/author\/([^/]+)/); 1572 if (m) { 1573 const slug = m[1]; 1574 const label = authorMap[slug] || slug.replace(/-/g, " ").replace(/\b\w/g, c => c.toUpperCase()); 1575 showSecondary(label, `/blog/author/${slug}`); 1576 } 1577 } 1578 // Other listing variants (e.g., pagination): do nothing 1579 }); 1580 </script>
1580 1581 1582 <!-- Right side: Tags + Search --> 1583 <div class="cs-blog__tags-search"> 1584 <!-- Tags + Show more button wrapper --> 1585 <div class="cs-blog__tags-dropdown-wrapper"> 1586 <div class="cs-blog__tags" id="tag-container"> 1587 1588 <a href="https://codescene.com/blog" class="cs-tag-current">Latest</a> 1589 1590 <a href="https://codescene.com/blog/tag/code-quality" class=""> 1591 Code Quality 1592 </a> 1593 1594 <a href="https://codescene.com/blog/tag/company-news" class=""> 1595 Company News 1596 </a> 1597 1598 <a href="https://codescene.com/blog/tag/product" class=""> 1599 Product 1600 </a> 1601 1602 <a href="https://codescene.com/blog/tag/ai-coding" class=""> 1603 AI Coding 1604 </a> 1605 1606 <a href="https://codescene.com/blog/tag/research" class=""> 1607 Research 1608 </a> 1609 1610 <a href="https://codescene.com/blog/tag/technical-debt" class=""> 1611 Technical Debt 1612 </a> 1613 1614 <a href="https://codescene.com/blog/tag/team-dynamics" class=""> 1615 Team Dynamics 1616 </a> 1617 1618 <a href="https://codescene.com/blog/tag/tutorials" class=""> 1619 Tutorials 1620 </a> 1621 1622 <a href="https://codescene.com/blog/tag/software-engineering" class=""> 1623 Software Engineering 1624 </a> 1625 1626 <a href="https://codescene.com/blog/tag/customer-interview" class=""> 1627 Customer Interview 1628 </a> 1629 1630 <a href="https://codescene.com/blog/tag/refactoring" class=""> 1631 Refactoring 1632 </a> 1633 1634 <a href="https://codescene.com/blog/tag/ci-cd-pipeline" class=""> 1635 CI/CD Pipeline 1636 </a> 1637 1638 </div> 1639 1640 <!-- Show more button --> 1641 <a id="toggle-tags-btn" class="cs-blog__tags-toggle">Show more</a> 1642 1643 <!-- Dropdown container for hidden tags --> 1644 <div class="cs-blog__tags-dropdown" id="tag-dropdown"></div> 1645 </div> 1646 1647 <!-- Search --> 1648 <div class="cs-blog__search"> 1649 <div id="hs_cos_wrapper_module_195145745740" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"> 1650 1651<div class="csb-elements-overlay-search" role="dialog" aria-modal="true"> 1652 <div id="searchBar" class="csb-searchBar" role="search" aria-label="Site search"> 1653 <form action="/hs-search-results"> 1654 <div class="csb-elements-search-modal-group"> 1655 <div class="csb-search-icon"> 1656 <svg width="24" height="24" viewbox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> 1657 <path fill-rule="evenodd" clip-rule="evenodd" d="M11 4C14.866 4 18 7.13401 18 11C18 12.5758
165717.4783 14.0293 16.5996 15.1992L20 18.5996L18.5996 20L15.1992 16.5996C14.0293 17.4783 12.5758 18 11 18C7.13401 18 4 14.866 4 11C4 7.13401 7.13401 4 11 4ZM11 6C8.23858 6 6 8.23858 6 11C6 13.7614 8.23858 16 11 16C13.7614 16 16 13.7614 16 11C16 8.23858 13.7614 6 11 6Z" fill="currentColor" /> 1658 </svg> 1659 </div> 1660 <input type="text" name="term" class="hs-search-field__input" placeholder="Search..." data-aos="fade-down" data-aos-once="true" autofocus aria-label="Search"> 1661 </div> 1662 <!-- Restrict results to blog posts only --> 1663 <input type="hidden" name="type" value="BLOG_POST"> 1664 1665 1666 </form> 1667 </div> 1668</div> 1669 1670<div class="csb-showBtn" role="button" aria-label="Open search"> 1671 <svg width="24" height="24" viewbox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> 1672 <path fill-rule="evenodd" clip-rule="evenodd" d="M11 4C14.866 4 18 7.13401 18 11C18 12.5758 17.4783 14.0293 16.5996 15.1992L20 18.5996L18.5996 20L15.1992 16.5996C14.0293 17.4783 12.5758 18 11 18C7.13401 18 4 14.866 4 11C4 7.13401 7.13401 4 11 4ZM11 6C8.23858 6 6 8.23858 6 11C6 13.7614 8.23858 16 11 16C13.7614 16 16 13.7614 16 11C16 8.23858 13.7614 6 11 6Z" fill="currentColor" /> 1673 </svg> 1674</div> 1675 1676 1677 1678 1679 1680</div> 1681 </div> 1682 1683
1683<script> 1684 document.addEventListener("DOMContentLoaded", function () { 1685 const tagContainer = document.getElementById("tag-container"); 1686 const allTags = Array.from(tagContainer.querySelectorAll("a")); 1687 const dropdown = document.getElementById("tag-dropdown"); 1688 const toggleBtn = document.getElementById("toggle-tags-btn"); 1689 1690 let expanded = false; 1691 1692 function layoutTags() { 1693 const isMobile = window.innerWidth < 1185; 1694 const maxVisible = 5; 1695 1696 // Reset 1697 tagContainer.innerHTML = ""; 1698 dropdown.innerHTML = ""; 1699 1700 if (isMobile) { 1701 allTags.forEach((tag) => dropdown.appendChild(tag)); 1702 toggleBtn.textContent = "Show tags"; 1703 } else { 1704 allTags.forEach((tag, index) => { 1705 if (index < maxVisible) { 1706 tagContainer.appendChild(tag); 1707 } else { 1708 dropdown.appendChild(tag); 1709 } 1710 }); 1711 toggleBtn.textContent = "Show more"; 1712 } 1713 1714 expanded = false; 1715 dropdown.classList.remove("show"); 1716 } 1717 1718 toggleBtn.addEventListener("click", function (event) { 1719 event.stopPropagation(); // Prevent triggering the document click 1720 expanded = !expanded; 1721 dropdown.classList.toggle("show", expanded); 1722 1723 const isMobile = window.innerWidth < 1185; 1724 if (isMobile) { 1725 toggleBtn.textContent = expanded ? "Hide tags" : "Show tags"; 1726 } else { 1727 toggleBtn.textContent = "Show more"; // Can update if you want a toggle behavior here 1728 } 1729 }); 1730 1731 // Close dropdown when clicking outside 1732 document.addEventListener("click", function (event) { 1733 if (expanded && !dropdown.contains(event.target) && !toggleBtn.contains(event.target)) { 1734 dropdown.classList.remove("show"); 1735 expanded = false; 1736 1737 const isMobile = window.innerWidth < 1185; 1738 toggleBtn.textContent = isMobile ? "Show tags" : "Show more"; 1739 } 1740 }); 1741 1742 window.addEventListener("resize", layoutTags); 1743 layoutTags(); 1744 }); 1745 </script>
1745 1746 </div> 1747 </div> 1748 1749 1750 1751 1752 </div> 1753 </div> 1754 </div> 1755 </div> 1756 </section> 1757 1758 1759 1760 1761 1762 1763 1764 <section class="content-wrapper"> 1765 1766 <div style=""> 1767 1768 <section> 1769 <div id="hs_cos_wrapper_module_195145259646" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"> 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806<div class="container-fluid cs-blog-nw__featured__post "> 1807 <div class="row-fluid-wrapper"> 1808 <div class="row-fluid"> 1809 1810 <!-- Section Header --> 1811 <div class="span12 widget-span widget-type-cell cs-blog-nw__featured-container cs-blog-nw__featured-container-header" data-widget-type="cell" data-x="0" data-w="12"> 1812 <h2 class="cs-blog-nw__main-title">Blog</h2> 1813 <span class="cs-blog-nw__main-subtitle">Deep dives into code quality, architecture, and cutting-edge development 1814 strategies.</span> 1815 </div> 1816 1817 <!-- Featured Posts --> 1818 <div class="span12 widget-span widget-type-cell cs-blog-nw__featured-container cs-blog-nw__featured-container-spacing" data-widget-type="cell" data-x="0" data-w="12"> 1819 1820 <div class="cs-blog-nw__featured-grid"> 1821 1822 <article class="cs-blog-nw__featured-card"> 1823 <a href="https://codescene.com/blog/case-study-refactoring-at-scale-with-agents" class="cs-blog-nw__featured-image-link"> 1824 <div class="cs-blog-nw-card__image-wrapper"> 1825 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://codescene.com/hubfs/Agentic_Refactoring_Streetfighter_blog_image.png');" aria-label=""></div> 1826 </div> 1827 <div class="cs-blog-nw__featured-content"> 1828 1829 <h4 class="cs-blog-nw--card__featured__title">Case Study: Refactoring at Scale with Agents</h4> 1830 1831 <p class="cs-blog-nw--card__featured__body">A legacy uplift that would traditionally have been a 12â18 month, high-risk engineering project was completed in three weeks of...</p> 1832 1833 <div class="cs-blog-nw__meta"> 1834 <time class="cs-blog-nw__featured-date"> 1835 Adam Tornhill 1836 <span class="cs-blog-nw__dot js-readtime-sep" hidden>·</span> 1837 <span class="cs-blog-nw__featured-readtime js-readtime" data-url="https://codescene.com/blog/case-study-refactoring-at-scale-with-agents" hidden></span> 1838 </time> 1839 1840
1840<script> 1841 document.addEventListener('DOMContentLoaded', () => { 1842 const items = Array.from(document.querySelectorAll('.js-readtime')); 1843 if (!items.length) return; 1844 1845 const WPM = 200; // match your post-page logic 1846 const CONCURRENCY = 2; // polite to the network 1847 1848 const q = items.slice(); // simple queue 1849 let inflight = 0; 1850 1851 const next = () => { 1852 if (!q.length || inflight >= CONCURRENCY) return; 1853 inflight++; 1854 const el = q.shift(); 1855 const url = el.getAttribute('data-url'); 1856 fetch(url, { credentials: 'same-origin' }) 1857 .then(r => r.text()) 1858 .then(html => { 1859 const doc = new DOMParser().parseFromString(html, 'text/html'); 1860 1861 // 1) Try JSON-LD wordCount 1862 let words = 0; 1863 try { 1864 const scripts = doc.querySelectorAll('script[type="application/ld+json"]'); 1865 for (const s of scripts) { 1866 const data = JSON.parse(s.textContent.trim()); 1867 // data can be an object or an array with BlogPosting inside 1868 const objects = Array.isArray(data) ? data : [data]; 1869 for (const obj of objects) { 1870 if ((obj['@type'] === 'BlogPosting' || (obj['@graph'] && obj['@graph'].length))) { 1871 const node = obj['@type'] === 'BlogPosting' 1872 ? obj 1873 : (obj['@graph'] || []).find(n => n['@type'] === 'BlogPosting'); 1874 if (node && node.wordCount) { 1875 words = parseInt(node.wordCount, 10) || 0; 1876 break; 1877 } 1878 } 1879 } 1880 if (words) break; 1881 } 1882 } catch { } 1883 1884 // 2) Fallback: count words from post body HTML 1885 if (!words) { 1886 const body = doc.querySelector('.elements--post2--blog--body') || 1887 doc.querySelector('article') || 1888 doc.querySelector('[data-post-body]'); 1889 if (body) { 1890 const text = (body.textContent || '').trim().replace(/\s+/g, ' '); 1891 words = text ? text.split(' ').length : 0; 1892 } 1893 } 1894 1895 const minutes = Math.max(1, Math.ceil(words / WPM)); 1896 if (minutes) { 1897 el.textContent = `${minutes} min read`; 1898 el.hidden = false; 1899 const sep = el.parentElement && el.parentElement.querySelector('.js-readtime-sep'); 1900 if (sep) sep.hidden = false; 1901 } 1902 }) 1903 .catch(() => { /* silent fail: keep hidden */ }) 1904 .finally(() => { inflight--; next(); }); 1905 }; 1906 1907 for (let i = 0; i < CONCURRENCY; i++) next(); 1908 }); 1909 </script>
1909 1910 </div> 1911 </div> 1912 </a> 1913 </article> 1914 1915 <article class="cs-blog-nw__featured-card"> 1916 <a href="https://codescene.com/blog/unhealthy-code-is-burning-your-token-usage-heres-the-data" class="cs-blog-nw__featured-image-link"> 1917 <div class="cs-blog-nw-card__image-wrapper"> 1918 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://codescene.com/hubfs/token_waste_1200x600.png');" aria-label=""></div> 1919 </div> 1920 <div class="cs-blog-nw__featured-content"> 1921 1922 <h4 class="cs-blog-nw--card__featured__title">Unhealthy Code is Burning Your Token Usage - Here's the Data</h4> 1923 1924 <p class="cs-blog-nw--card__featured__body">New research shows agents consume 35-45% more tokens on unhealthy code. Here's what the data reveals and how to mitigate the...</p> 1925 1926 <div class="cs-blog-nw__meta"> 1927 <time class="cs-blog-nw__featured-date"> 1928 Adam Tornhill 1929 <span class="cs-blog-nw__dot js-readtime-sep" hidden>·</span> 1930 <span class="cs-blog-nw__featured-readtime js-readtime" data-url="https://codescene.com/blog/unhealthy-code-is-burning-your-token-usage-heres-the-data" hidden></span> 1931 </time> 1932 1933
1933<script> 1934 document.addEventListener('DOMContentLoaded', () => { 1935 const items = Array.from(document.querySelectorAll('.js-readtime')); 1936 if (!items.length) return; 1937 1938 const WPM = 200; // match your post-page logic 1939 const CONCURRENCY = 2; // polite to the network 1940 1941 const q = items.slice(); // simple queue 1942 let inflight = 0; 1943 1944 const next = () => { 1945 if (!q.length || inflight >= CONCURRENCY) return; 1946 inflight++; 1947 const el = q.shift(); 1948 const url = el.getAttribute('data-url'); 1949 fetch(url, { credentials: 'same-origin' }) 1950 .then(r => r.text()) 1951 .then(html => { 1952 const doc = new DOMParser().parseFromString(html, 'text/html'); 1953 1954 // 1) Try JSON-LD wordCount 1955 let words = 0; 1956 try { 1957 const scripts = doc.querySelectorAll('script[type="application/ld+json"]'); 1958 for (const s of scripts) { 1959 const data = JSON.parse(s.textContent.trim()); 1960 // data can be an object or an array with BlogPosting inside 1961 const objects = Array.isArray(data) ? data : [data]; 1962 for (const obj of objects) { 1963 if ((obj['@type'] === 'BlogPosting' || (obj['@graph'] && obj['@graph'].length))) { 1964 const node = obj['@type'] === 'BlogPosting' 1965 ? obj 1966 : (obj['@graph'] || []).find(n => n['@type'] === 'BlogPosting'); 1967 if (node && node.wordCount) { 1968 words = parseInt(node.wordCount, 10) || 0; 1969 break; 1970 } 1971 } 1972 } 1973 if (words) break; 1974 } 1975 } catch { } 1976 1977 // 2) Fallback: count words from post body HTML 1978 if (!words) { 1979 const body = doc.querySelector('.elements--post2--blog--body') || 1980 doc.querySelector('article') || 1981 doc.querySelector('[data-post-body]'); 1982 if (body) { 1983 const text = (body.textContent || '').trim().replace(/\s+/g, ' '); 1984 words = text ? text.split(' ').length : 0; 1985 } 1986 } 1987 1988 const minutes = Math.max(1, Math.ceil(words / WPM)); 1989 if (minutes) { 1990 el.textContent = `${minutes} min read`; 1991 el.hidden = false; 1992 const sep = el.parentElement && el.parentElement.querySelector('.js-readtime-sep'); 1993 if (sep) sep.hidden = false; 1994 } 1995 }) 1996 .catch(() => { /* silent fail: keep hidden */ }) 1997 .finally(() => { inflight--; next(); }); 1998 }; 1999 2000 for (let i = 0; i < CONCURRENCY; i++) next(); 2001 }); 2002 </script>
2002 2003 </div> 2004 </div> 2005 </a> 2006 </article> 2007 2008 <article class="cs-blog-nw__featured-card"> 2009 <a href="https://codescene.com/blog/agentic-ai-coding-best-practice-patterns-for-speed-with-quality" class="cs-blog-nw__featured-image-link"> 2010 <div class="cs-blog-nw-card__image-wrapper"> 2011 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://codescene.com/hubfs/AI-Friendly-Code_Chart.png');" aria-label=""></div> 2012 </div> 2013 <div class="cs-blog-nw__featured-content"> 2014 2015 <h4 class="cs-blog-nw--card__featured__title">Agentic AI Coding: Best Practice Patterns for Speed with Quality</h4> 2016 2017 <p class="cs-blog-nw--card__featured__body">How CodeSceneâs Code Health and MCP tools turn agentic speed into sustainable engineering practices.</p> 2018 2019 <div class="cs-blog-nw__meta"> 2020 <time class="cs-blog-nw__featured-date"> 2021 Adam Tornhill 2022 <span class="cs-blog-nw__dot js-readtime-sep" hidden>·</span> 2023 <span class="cs-blog-nw__featured-readtime js-readtime" data-url="https://codescene.com/blog/agentic-ai-coding-best-practice-patterns-for-speed-with-quality" hidden></span> 2024 </time> 2025 2026
2026<script> 2027 document.addEventListener('DOMContentLoaded', () => { 2028 const items = Array.from(document.querySelectorAll('.js-readtime')); 2029 if (!items.length) return; 2030 2031 const WPM = 200; // match your post-page logic 2032 const CONCURRENCY = 2; // polite to the network 2033 2034 const q = items.slice(); // simple queue 2035 let inflight = 0; 2036 2037 const next = () => { 2038 if (!q.length || inflight >= CONCURRENCY) return; 2039 inflight++; 2040 const el = q.shift(); 2041 const url = el.getAttribute('data-url'); 2042 fetch(url, { credentials: 'same-origin' }) 2043 .then(r => r.text()) 2044 .then(html => { 2045 const doc = new DOMParser().parseFromString(html, 'text/html'); 2046 2047 // 1) Try JSON-LD wordCount 2048 let words = 0; 2049 try { 2050 const scripts = doc.querySelectorAll('script[type="application/ld+json"]'); 2051 for (const s of scripts) { 2052 const data = JSON.parse(s.textContent.trim()); 2053 // data can be an object or an array with BlogPosting inside 2054 const objects = Array.isArray(data) ? data : [data]; 2055 for (const obj of objects) { 2056 if ((obj['@type'] === 'BlogPosting' || (obj['@graph'] && obj['@graph'].length))) { 2057 const node = obj['@type'] === 'BlogPosting' 2058 ? obj 2059 : (obj['@graph'] || []).find(n => n['@type'] === 'BlogPosting'); 2060 if (node && node.wordCount) { 2061 words = parseInt(node.wordCount, 10) || 0; 2062 break; 2063 } 2064 } 2065 } 2066 if (words) break; 2067 } 2068 } catch { } 2069 2070 // 2) Fallback: count words from post body HTML 2071 if (!words) { 2072 const body = doc.querySelector('.elements--post2--blog--body') || 2073 doc.querySelector('article') || 2074 doc.querySelector('[data-post-body]'); 2075 if (body) { 2076 const text = (body.textContent || '').trim().replace(/\s+/g, ' '); 2077 words = text ? text.split(' ').length : 0; 2078 } 2079 } 2080 2081 const minutes = Math.max(1, Math.ceil(words / WPM)); 2082 if (minutes) { 2083 el.textContent = `${minutes} min read`; 2084 el.hidden = false; 2085 const sep = el.parentElement && el.parentElement.querySelector('.js-readtime-sep'); 2086 if (sep) sep.hidden = false; 2087 } 2088 }) 2089 .catch(() => { /* silent fail: keep hidden */ }) 2090 .finally(() => { inflight--; next(); }); 2091 }; 2092 2093 for (let i = 0; i < CONCURRENCY; i++) next(); 2094 }); 2095 </script>
2095 2096 </div> 2097 </div> 2098 </a> 2099 </article> 2100 2101 <article class="cs-blog-nw__featured-card"> 2102 <a href="https://codescene.com/blog/making-legacy-code-ai-ready-benchmarks-on-agentic-refactoring" class="cs-blog-nw__featured-image-link"> 2103 <div class="cs-blog-nw-card__image-wrapper"> 2104 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://codescene.com/hubfs/Making%20Legacy%20Code%20AI-Ready%20Benchmarks%20on%20Agentic%20Refactoring_600x350_1.png');" aria-label=""></div> 2105 </div> 2106 <div class="cs-blog-nw__featured-content"> 2107 2108 <h4 class="cs-blog-nw--card__featured__title">Making Legacy Code AI-Ready: Benchmarks on Agentic Refactoring</h4> 2109 2110 <p class="cs-blog-nw--card__featured__body">Benchmarks and use cases for agentic refactoring with the CodeScene CodeHealth MCP Server.</p> 2111 2112 <div class="cs-blog-nw__meta"> 2113 <time class="cs-blog-nw__featured-date"> 2114 Adam Tornhill 2115 <span class="cs-blog-nw__dot js-readtime-sep" hidden>·</span> 2116 <span class="cs-blog-nw__featured-readtime js-readtime" data-url="https://codescene.com/blog/making-legacy-code-ai-ready-benchmarks-on-agentic-refactoring" hidden></span> 2117 </time> 2118 2119
2119<script> 2120 document.addEventListener('DOMContentLoaded', () => { 2121 const items = Array.from(document.querySelectorAll('.js-readtime')); 2122 if (!items.length) return; 2123 2124 const WPM = 200; // match your post-page logic 2125 const CONCURRENCY = 2; // polite to the network 2126 2127 const q = items.slice(); // simple queue 2128 let inflight = 0; 2129 2130 const next = () => { 2131 if (!q.length || inflight >= CONCURRENCY) return; 2132 inflight++; 2133 const el = q.shift(); 2134 const url = el.getAttribute('data-url'); 2135 fetch(url, { credentials: 'same-origin' }) 2136 .then(r => r.text()) 2137 .then(html => { 2138 const doc = new DOMParser().parseFromString(html, 'text/html'); 2139 2140 // 1) Try JSON-LD wordCount 2141 let words = 0; 2142 try { 2143 const scripts = doc.querySelectorAll('script[type="application/ld+json"]'); 2144 for (const s of scripts) { 2145 const data = JSON.parse(s.textContent.trim()); 2146 // data can be an object or an array with BlogPosting inside 2147 const objects = Array.isArray(data) ? data : [data]; 2148 for (const obj of objects) { 2149 if ((obj['@type'] === 'BlogPosting' || (obj['@graph'] && obj['@graph'].length))) { 2150 const node = obj['@type'] === 'BlogPosting' 2151 ? obj 2152 : (obj['@graph'] || []).find(n => n['@type'] === 'BlogPosting'); 2153 if (node && node.wordCount) { 2154 words = parseInt(node.wordCount, 10) || 0; 2155 break; 2156 } 2157 } 2158 } 2159 if (words) break; 2160 } 2161 } catch { } 2162 2163 // 2) Fallback: count words from post body HTML 2164 if (!words) { 2165 const body = doc.querySelector('.elements--post2--blog--body') || 2166 doc.querySelector('article') || 2167 doc.querySelector('[data-post-body]'); 2168 if (body) { 2169 const text = (body.textContent || '').trim().replace(/\s+/g, ' '); 2170 words = text ? text.split(' ').length : 0; 2171 } 2172 } 2173 2174 const minutes = Math.max(1, Math.ceil(words / WPM)); 2175 if (minutes) { 2176 el.textContent = `${minutes} min read`; 2177 el.hidden = false; 2178 const sep = el.parentElement && el.parentElement.querySelector('.js-readtime-sep'); 2179 if (sep) sep.hidden = false; 2180 } 2181 }) 2182 .catch(() => { /* silent fail: keep hidden */ }) 2183 .finally(() => { inflight--; next(); }); 2184 }; 2185 2186 for (let i = 0; i < CONCURRENCY; i++) next(); 2187 }); 2188 </script>
2188 2189 </div> 2190 </div> 2191 </a> 2192 </article> 2193 2194 <article class="cs-blog-nw__featured-card"> 2195 <a href="https://codescene.com/blog/benchmarking-code-health-refactoring-roi" class="cs-blog-nw__featured-image-link"> 2196 <div class="cs-blog-nw-card__image-wrapper"> 2197 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://codescene.com/hubfs/From%20Tech%20Debt%20to%20Triumph%20241203.svg');" aria-label="Code Health Score Curve "></div> 2198 </div> 2199 <div class="cs-blog-nw__featured-content"> 2200 2201 <h4 class="cs-blog-nw--card__featured__title">From Tech Debt to Triumph: How Refactoring Speeds Development by 43%</h4> 2202 2203 <p class="cs-blog-nw--card__featured__body">In this article, weâll use a statistical model that translates Code Health scores into tangible business value â faster...</p> 2204 2205 <div class="cs-blog-nw__meta"> 2206 <time class="cs-blog-nw__featured-date"> 2207 Adam Tornhill 2208 <span class="cs-blog-nw__dot js-readtime-sep" hidden>·</span> 2209 <span class="cs-blog-nw__featured-readtime js-readtime" data-url="https://codescene.com/blog/benchmarking-code-health-refactoring-roi" hidden></span> 2210 </time> 2211 2212
2212<script> 2213 document.addEventListener('DOMContentLoaded', () => { 2214 const items = Array.from(document.querySelectorAll('.js-readtime')); 2215 if (!items.length) return; 2216 2217 const WPM = 200; // match your post-page logic 2218 const CONCURRENCY = 2; // polite to the network 2219 2220 const q = items.slice(); // simple queue 2221 let inflight = 0; 2222 2223 const next = () => { 2224 if (!q.length || inflight >= CONCURRENCY) return; 2225 inflight++; 2226 const el = q.shift(); 2227 const url = el.getAttribute('data-url'); 2228 fetch(url, { credentials: 'same-origin' }) 2229 .then(r => r.text()) 2230 .then(html => { 2231 const doc = new DOMParser().parseFromString(html, 'text/html'); 2232 2233 // 1) Try JSON-LD wordCount 2234 let words = 0; 2235 try { 2236 const scripts = doc.querySelectorAll('script[type="application/ld+json"]'); 2237 for (const s of scripts) { 2238 const data = JSON.parse(s.textContent.trim()); 2239 // data can be an object or an array with BlogPosting inside 2240 const objects = Array.isArray(data) ? data : [data]; 2241 for (const obj of objects) { 2242 if ((obj['@type'] === 'BlogPosting' || (obj['@graph'] && obj['@graph'].length))) { 2243 const node = obj['@type'] === 'BlogPosting' 2244 ? obj 2245 : (obj['@graph'] || []).find(n => n['@type'] === 'BlogPosting'); 2246 if (node && node.wordCount) { 2247 words = parseInt(node.wordCount, 10) || 0; 2248 break; 2249 } 2250 } 2251 } 2252 if (words) break; 2253 } 2254 } catch { } 2255 2256 // 2) Fallback: count words from post body HTML 2257 if (!words) { 2258 const body = doc.querySelector('.elements--post2--blog--body') || 2259 doc.querySelector('article') || 2260 doc.querySelector('[data-post-body]'); 2261 if (body) { 2262 const text = (body.textContent || '').trim().replace(/\s+/g, ' '); 2263 words = text ? text.split(' ').length : 0; 2264 } 2265 } 2266 2267 const minutes = Math.max(1, Math.ceil(words / WPM)); 2268 if (minutes) { 2269 el.textContent = `${minutes} min read`; 2270 el.hidden = false; 2271 const sep = el.parentElement && el.parentElement.querySelector('.js-readtime-sep'); 2272 if (sep) sep.hidden = false; 2273 } 2274 }) 2275 .catch(() => { /* silent fail: keep hidden */ }) 2276 .finally(() => { inflight--; next(); }); 2277 }; 2278 2279 for (let i = 0; i < CONCURRENCY; i++) next(); 2280 }); 2281 </script>
2281 2282 </div> 2283 </div> 2284 </a> 2285 </article> 2286 2287 <article class="cs-blog-nw__featured-card"> 2288 <a href="https://codescene.com/blog/6x-improvement-over-sonarqube" class="cs-blog-nw__featured-image-link"> 2289 <div class="cs-blog-nw-card__image-wrapper"> 2290 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://codescene.com/hubfs/Featured%20image%20-%20SonarQube-1.png');" aria-label="CodeScene surpasses SonarQube by 6 times on the public software maintainability dataset, scoring 83% vs. SonarQube's 13.3% using F-score."></div> 2291 </div> 2292 <div class="cs-blog-nw__featured-content"> 2293 2294 <h4 class="cs-blog-nw--card__featured__title">6X improvement over SonarQube - Raising the Maintainability bar</h4> 2295 2296 <p class="cs-blog-nw--card__featured__body">CodeScene surpasses SonarQube by 6 times on the public software maintainability dataset, scoring 83% vs. SonarQube's 13.3% using...</p> 2297 2298 <div class="cs-blog-nw__meta"> 2299 <time class="cs-blog-nw__featured-date"> 2300 Adam Tornhill 2301 <span class="cs-blog-nw__dot js-readtime-sep" hidden>·</span> 2302 <span class="cs-blog-nw__featured-readtime js-readtime" data-url="https://codescene.com/blog/6x-improvement-over-sonarqube" hidden></span> 2303 </time> 2304 2305
2305<script> 2306 document.addEventListener('DOMContentLoaded', () => { 2307 const items = Array.from(document.querySelectorAll('.js-readtime')); 2308 if (!items.length) return; 2309 2310 const WPM = 200; // match your post-page logic 2311 const CONCURRENCY = 2; // polite to the network 2312 2313 const q = items.slice(); // simple queue 2314 let inflight = 0; 2315 2316 const next = () => { 2317 if (!q.length || inflight >= CONCURRENCY) return; 2318 inflight++; 2319 const el = q.shift(); 2320 const url = el.getAttribute('data-url'); 2321 fetch(url, { credentials: 'same-origin' }) 2322 .then(r => r.text()) 2323 .then(html => { 2324 const doc = new DOMParser().parseFromString(html, 'text/html'); 2325 2326 // 1) Try JSON-LD wordCount 2327 let words = 0; 2328 try { 2329 const scripts = doc.querySelectorAll('script[type="application/ld+json"]'); 2330 for (const s of scripts) { 2331 const data = JSON.parse(s.textContent.trim()); 2332 // data can be an object or an array with BlogPosting inside 2333 const objects = Array.isArray(data) ? data : [data]; 2334 for (const obj of objects) { 2335 if ((obj['@type'] === 'BlogPosting' || (obj['@graph'] && obj['@graph'].length))) { 2336 const node = obj['@type'] === 'BlogPosting' 2337 ? obj 2338 : (obj['@graph'] || []).find(n => n['@type'] === 'BlogPosting'); 2339 if (node && node.wordCount) { 2340 words = parseInt(node.wordCount, 10) || 0; 2341 break; 2342 } 2343 } 2344 } 2345 if (words) break; 2346 } 2347 } catch { } 2348 2349 // 2) Fallback: count words from post body HTML 2350 if (!words) { 2351 const body = doc.querySelector('.elements--post2--blog--body') || 2352 doc.querySelector('article') || 2353 doc.querySelector('[data-post-body]'); 2354 if (body) { 2355 const text = (body.textContent || '').trim().replace(/\s+/g, ' '); 2356 words = text ? text.split(' ').length : 0; 2357 } 2358 } 2359 2360 const minutes = Math.max(1, Math.ceil(words / WPM)); 2361 if (minutes) { 2362 el.textContent = `${minutes} min read`; 2363 el.hidden = false; 2364 const sep = el.parentElement && el.parentElement.querySelector('.js-readtime-sep'); 2365 if (sep) sep.hidden = false; 2366 } 2367 }) 2368 .catch(() => { /* silent fail: keep hidden */ }) 2369 .finally(() => { inflight--; next(); }); 2370 }; 2371 2372 for (let i = 0; i < CONCURRENCY; i++) next(); 2373 }); 2374 </script>
2374 2375 </div> 2376 </div> 2377 </a> 2378 </article> 2379 2380 </div> 2381 2382 </div> 2383 </div> 2384 </div> 2385</div></div> 2386 </section> 2387 2388 <section> 2389 <div id="hs_cos_wrapper_module_195236051760" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"> 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418<div class="container-fluid cs-blog-min__featured__post"> 2419 <div class="row-fluid-wrapper"> 2420 <div class="row-fluid"> 2421 2422 <!-- Section Header --> 2423 <div class="cs-blog-min__header"> 2424 <h2 class="cs-blog-min__title">Knowledge Hub</h2> 2425 2426 <a class="cs-blog-min__see-all" href="https://codescene.com/blog/tag/research"> 2427 <span>See more</span> 2428 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 16 16" width="16" height="16" aria-hidden="true"> 2429 <path d="M8.22 2.97a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l2.97-2.97H3.75a.75.75 0 0 1 0-1.5h7.44L8.22 4.03a.75.75 0 0 1 0-1.06Z"></path> 2430 </svg> 2431 </a> 2432 2433 </div> 2434 2435 <!-- Featured Posts --> 2436 <div class="span12 widget-span widget-type-cell cs-blog-min__featured-container"> 2437 <div class="cs-blog-min__featured-grid"> 2438 2439 <article class="cs-blog-nw-card__featured-card"> 2440 <a href="https://codescene.com/blog/human-what-must-i-tell-you" class="cs-blog-min__image-link cs-blog-nw__featured-image-link"> 2441 <div class="cs-blog-nw-card__image-wrapper"> 2442 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://i0.wp.com/mrksbrg.com/wp-content/uploads/2023/05/chatgpt_ver2.jpg?resize=681%2C1024');" aria-label=""></div> 2443 </div> 2444 <div class="cs-blog-nw__featured-content"> 2445 <h4 class="cs-blog-nw--card__featured__title">Human, What Must I Tell You?</h4> 2446 </div> 2447 </a> 2448 </article> 2449 2450 <article class="cs-blog-nw-card__featured-card"> 2451 <a href="https://codescene.com/blog/requirements-on-technical-debt-dare-to-specify-them" class="cs-blog-min__image-link cs-blog-nw__featured-image-link"> 2452 <div class="cs-blog-nw-card__image-wrapper"> 2453 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://i0.wp.com/mrksbrg.com/wp-content/uploads/2023/02/codescene.png?resize=723%2C541');" aria-label=""></div> 2454 </div> 2455 <div class="cs-blog-nw__featured-content"> 2456 <h4 class="cs-blog-nw--card__featured__title">Requirements on Technical Debt: Dare to Specify Them!</h4> 2457 </div> 2458 </a> 2459 </article> 2460 2461 <article class="cs-blog-nw-card__featured-card"> 2462 <a href="https://codescene.com/blog/requirements-for-organizational-resilience-engineering-developer-happiness" class="cs-blog-min__image-link cs-blog-nw__featured-image-link"> 2463 <div class="cs-blog-nw-card__image-wrapper"> 2464 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://i0.wp.com/mrksbrg.com/wp-content/uploads/2024/06/vicious_cycle.png?resize=458%2C275');" aria-label=""></div> 2465 </div> 2466 <div class="cs-blog-nw__featured-content"> 2467 <h4 class="cs-blog-nw--card__featured__title">Requirements for Organizational Resilience: Engineering Developer Happiness</h4> 2468 </div> 2469 </a> 2470 </article> 2471 2472 <article class="cs-blog-nw-card__featured-card"> 2473 <a href="https://codescene.com/blog/measuring-the-business-impact-of-low-code-quality" class="cs-blog-min__image-link cs-blog-nw__featured-image-link"> 2474 <div class="cs-blog-nw-card__image-wrapper"> 2475 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://codescene.com/hubfs/Featured%20image_%20Code%20quality_%20measuring%20the%20business%20impact%20of%20unhealthy%20code.png');" aria-label="Quality code graph"></div> 2476 </div> 2477 <div class="cs-blog-nw__featured-content"> 2478 <h4 class="cs-blog-nw--card__featured__title">Code quality: measuring the business impact of unhealthy code</h4> 2479 </div> 2480 </a> 2481 </article> 2482 2483 </div> 2484 </div> 2485 </div> 2486 </div> 2487</div> 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518<div class="container-fluid cs-blog-min__featured__post"> 2519 <div class="row-fluid-wrapper"> 2520 <div class="row-fluid"> 2521 2522 <!-- Section Header --> 2523 <div class="cs-blog-min__header"> 2524 <h2 class="cs-blog-min__title">Insights from the Engineering team</h2> 2525 2526 </div> 2527 2528 <!-- Featured Posts --> 2529 <div class="span12 widget-span widget-type-cell cs-blog-min__featured-container"> 2530 <div class="cs-blog-min__featured-grid"> 2531 2532 <article class="cs-blog-nw-card__featured-card"> 2533 <a href="https://codescene.com/blog/extending-cursor-ai-with-automated-code-reviews" class="cs-blog-min__image-link cs-blog-nw__featured-image-link"> 2534 <div class="cs-blog-nw-card__image-wrapper"> 2535 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://codescene.com/hubfs/AI%20cursor.png');" aria-label=""></div> 2536 </div> 2537 <div class="cs-blog-nw__featured-content"> 2538 <h4 class="cs-blog-nw--card__featured__title">AI vs. Code Maintainability: Extending Cursor with Automated Code Reviews</h4> 2539 </div> 2540 </a> 2541 </article> 2542 2543 <article class="cs-blog-nw-card__featured-card"> 2544 <a href="https://codescene.com/blog/example-of-a-functional-programming-refactoring-pattern" class="cs-blog-min__image-link cs-blog-nw__featured-image-link"> 2545 <div class="cs-blog-nw-card__image-wrapper"> 2546 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://codescene.com/hubfs/Example%20of%20a%20functional%20programming%20refactoring%20pattern.png');" aria-label=""></div> 2547 </div> 2548 <div class="cs-blog-nw__featured-content"> 2549 <h4 class="cs-blog-nw--card__featured__title">Example of a functional programming refactoring pattern</h4> 2550 </div> 2551 </a> 2552 </article> 2553 2554 <article class="cs-blog-nw-card__featured-card"> 2555 <a href="https://codescene.com/blog/base-64-padding-and-urls" class="cs-blog-min__image-link cs-blog-nw__featured-image-link"> 2556 <div class="cs-blog-nw-card__image-wrapper"> 2557 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://codescene.com/hubfs/Featured%20image%2
25570-%20Base64.png');" aria-label=""></div> 2558 </div> 2559 <div class="cs-blog-nw__featured-content"> 2560 <h4 class="cs-blog-nw--card__featured__title">Base 64 - padding and URLs</h4> 2561 </div> 2562 </a> 2563 </article> 2564 2565 <article class="cs-blog-nw-card__featured-card"> 2566 <a href="https://codescene.com/blog/code-health-simple-ways-to-avoid-complexity" class="cs-blog-min__image-link cs-blog-nw__featured-image-link"> 2567 <div class="cs-blog-nw-card__image-wrapper"> 2568 <div class="cs-blog-nw-card__image-inner" style="background-image: url('https://codescene.com/hubfs/Featured%20image%20-%20Engineering%20blog-1.png');" aria-label=""></div> 2569 </div> 2570 <div class="cs-blog-nw__featured-content"> 2571 <h4 class="cs-blog-nw--card__featured__title">Code Health: simple ways to avoid complexity</h4> 2572 </div> 2573 </a> 2574 </article> 2575 2576 </div> 2577 </div> 2578 </div> 2579 </div> 2580</div> 2581</div> 2582 </section> 2583 2584 2585 2586 <div class="content-section" style="padding: 0 0 80px;"> 2587 <div class="container"> 2588 <div class="row-fluid"> 2589 <div class="span12 cs-blog-more-section-title"> 2590 <h2 class="cs-blog-more-title">More news</h2> 2591 </div> 2592 </div> 2593 2594 <div class="row-fluid"> 2595 <div class="span12"> 2596 <ul id="cs-more-news-list" class="cs-blog-more-list"> 2597 2598 2599 2600 <li class="cs-blog-more-item"> 2601 <a href="https://codescene.com/blog/case-study-refactoring-at-scale-with-agents" class="cs-blog-more-link" title="Case Study: Refactoring at Scale with Agents"> 2602 <span class="cs-blog-more-title-text">Case Study: Refactoring at Scale with Agents</span> 2603 2604 2605 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 2606 2607 2608 <time class="cs-blog-more-date" datetime="2026-09-24"> 2609 September 24, 2026 2610 </time> 2611 2612 2613 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 2614 2615 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 2616 2617 </span> 2618 2619 </a> 2620 </li> 2621 2622 2623 2624 <li class="cs-blog-more-item"> 2625 <a href="https://codescene.com/blog/deterministic-code-health-gate-for-ai-agents" class="cs-blog-more-link" title="Why AI Coding Agents Need a Deterministic Code Health Gate"> 2626 <span class="cs-blog-more-title-text">Why AI Coding Agents Need a Deterministic Code Health Gate</span> 2627 2628 2629 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 2630 2631 2632 <time class="cs-blog-more-date" datetime="2026-09-15"> 2633 September 15, 2026 2634 </time> 2635 2636 2637 <span class="cs-blog-more-author" data-author="Adna Salkovic" title="Adna Salkovic â A software engineer with a Computer Science background and strong business foundation, focused on building reliable backend systems and great developer experiences. Worked across startups and product teams. Passionate about explaining complex technical topics clearly â through teaching, mentoring, technical writing, and collaborating with teams to turn real-world problems into practical, developer-friendly solutions."> 2638 2639 <img src="https://codescene.com/hubfs/Adna_
2639Salkovic.png" alt="Adna Salkovic" class="cs-blog-more-author-avatar"> 2640 2641 </span> 2642 2643 </a> 2644 </li> 2645 2646 2647 2648 <li class="cs-blog-more-item"> 2649 <a href="https://codescene.com/blog/code-health-a-prerequisite-for-successful-agent-deployment" class="cs-blog-more-link" title="CodeHealth as a Prerequisite and Compass for Coding Agents"> 2650 <span class="cs-blog-more-title-text">CodeHealth as a Prerequisite and Compass for Coding Agents</span> 2651 2652 2653 <span class="cs-blog-more-tag"><span>AI Coding</span></span> 2654 2655 2656 <time class="cs-blog-more-date" datetime="2026-06-25"> 2657 June 25, 2026 2658 </time> 2659 2660 2661 <span class="cs-blog-more-author" data-author="Markus Borg" title="Markus Borg â Dr. Markus Borg leads CodeScene's research, turning evidence-based software engineering into practical impact. A Principal Researcher at CodeScene and Adjunct Associate Professor at Lund University, he focuses on software maintainability, technical debt, and AI-driven software analytics. With 90+ peer-reviewed publications, he is a recognized voice in empirical software engineering, serving on the editorial boards of Empirical Software Engineering and IEEE Software."> 2662 2663 <img src="https://codescene.com/hubfs/Markus_Borg_CS_2%20(1).png" alt="Markus Borg" class="cs-blog-more-author-avatar"> 2664 2665 </span> 2666 2667 </a> 2668 </li> 2669 2670 2671 2672 <li class="cs-blog-more-item"> 2673 <a href="https://codescene.com/blog/deterministic-pr-refactoring-agents" class="cs-blog-more-link" title="Announcement: Deterministic PR Refactoring Agents"> 2674 <span class="cs-blog-more-title-text">Announcement: Deterministic PR Refactoring Agents</span> 2675 2676 2677 <span class="cs-blog-more-tag"><span>AI Coding</span></span> 2678 2679 2680 <time class="cs-blog-more-date" datetime="2026-05-28"> 2681 May 28, 2026 2682 </time> 2683 2684 2685 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 2686 2687 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 2688 2689 </span> 2690 2691 </a> 2692 </li> 2693 2694 2695 2696 <li class="cs-blog-more-item"> 2697 <a href="https://codescene.com/blog/unhealthy-code-is-burning-your-token-usage-heres-the-data" class="cs-blog-more-link" title="Unhealthy Code is Burning Your Token Usage - Here's the Data"> 2698 <span class="cs-blog-more-title-text">Unhealthy Code is Burning Your Token Usage - Here's the Data</span> 2699 2700 2701 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 2702 2703 2704 <time class="cs-blog-more-date" datetime="2026-05-28"> 2705 May 28, 2026 2706 </time> 2707 2708 2709 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 2710 2711 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 2712 2713 </span> 2714 2715 </a> 2716 </li> 2717 2718 2719 2720 <li class="cs-blog-more-item"> 2721 <a href="https://codescene.com/blog/making-legacy-code-ai-ready-benchmarks-on-agentic-refactoring" class="cs-blog-more-link" title="Making Legacy Code AI-Ready: Benchmarks on Agentic Refactoring">
2722 <span class="cs-blog-more-title-text">Making Legacy Code AI-Ready: Benchmarks on Agentic Refactoring</span> 2723 2724 2725 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 2726 2727 2728 <time class="cs-blog-more-date" datetime="2026-03-18"> 2729 March 18, 2026 2730 </time> 2731 2732 2733 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 2734 2735 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 2736 2737 </span> 2738 2739 </a> 2740 </li> 2741 2742 2743 2744 <li class="cs-blog-more-item"> 2745 <a href="https://codescene.com/blog/agentic-ai-coding-best-practice-patterns-for-speed-with-quality" class="cs-blog-more-link" title="Agentic AI Coding: Best Practice Patterns for Speed with Quality"> 2746 <span class="cs-blog-more-title-text">Agentic AI Coding: Best Practice Patterns for Speed with Quality</span> 2747 2748 2749 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 2750 2751 2752 <time class="cs-blog-more-date" datetime="2026-02-20"> 2753 February 20, 2026 2754 </time> 2755 2756 2757 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 2758 2759 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 2760 2761 </span> 2762 2763 </a> 2764 </li> 2765 2766 2767 2768 <li class="cs-blog-more-item"> 2769 <a href="https://codescene.com/blog/strengthening-the-inner-developer-loop-turn-ai-into-a-reliable-engineering-partner" class="cs-blog-more-link" title="Strengthening the Inner Developer Loop: Turn AI Into a Reliable Engineering Partner"> 2770 <span class="cs-blog-more-title-text">Strengthening the Inner Developer Loop: Turn AI Into a Reliable Engineering Partner</span> 2771 2772 2773 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 2774 2775 2776 <time class="cs-blog-more-date" datetime="2025-12-02"> 2777 December 2, 2025 2778 </time> 2779 2780 2781 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 2782 2783 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 2784 2785 </span> 2786 2787 </a> 2788 </li> 2789 2790 2791 2792 <li class="cs-blog-more-item"> 2793 <a href="https://codescene.com/blog/human-what-must-i-tell-you" class="cs-blog-more-link" title="Human, What Must I Tell You?">
2794 <span class="cs-blog-more-title-text">Human, What Must I Tell You?</span> 2795 2796 2797 <span class="cs-blog-more-tag"><span>Research</span></span> 2798 2799 2800 <time class="cs-blog-more-date" datetime="2025-09-23"> 2801 September 23, 2025 2802 </time> 2803 2804 2805 <span class="cs-blog-more-author" data-author="Markus Borg" title="Markus Borg â Dr. Markus Borg leads CodeScene's research, turning evidence-based software engineering into practical impact. A Principal Researcher at CodeScene and Adjunct Associate Professor at Lund University, he focuses on software maintainability, technical debt, and AI-driven software analytics. With 90+ peer-reviewed publications, he is a recognized voice in empirical software engineering, serving on the editorial boards of Empirical Software Engineering and IEEE Software."> 2806 2807 <img src="https://codescene.com/hubfs/Markus_Borg_CS_2%20(1).png" alt="Markus Borg" class="cs-blog-more-author-avatar"> 2808 2809 </span> 2810 2811 </a> 2812 </li> 2813 2814 2815 2816 <li class="cs-blog-more-item"> 2817 <a href="https://codescene.com/blog/requirements-on-technical-debt-dare-to-specify-them" class="cs-blog-more-link" title="Requirements on Technical Debt: Dare to Specify Them!"> 2818 <span class="cs-blog-more-title-text">Requirements on Technical Debt: Dare to Specify Them!</span> 2819 2820 2821 <span class="cs-blog-more-tag"><span>Research</span></span> 2822 2823 2824 <time class="cs-blog-more-date" datetime="2025-09-23"> 2825 September 23, 2025 2826 </time> 2827 2828 2829 <span class="cs-blog-more-author" data-author="Markus Borg" title="Markus Borg â Dr. Markus Borg leads CodeScene's research, turning evidence-based software engineering into practical impact. A Principal Researcher at CodeScene and Adjunct Associate Professor at Lund University, he focuses on software maintainability, technical debt, and AI-driven software analytics. With 90+ peer-reviewed publications, he is a recognized voice in empirical software engineering, serving on the editorial boards of Empirical Software Engineering and IEEE Software."> 2830 2831 <img src="https://codescene.com/hubfs/Markus_Borg_CS_2%20(1).png" alt="Markus Borg" class="cs-blog-more-author-avatar"> 2832 2833 </span> 2834 2835 </a> 2836 </li> 2837 2838 2839 2840 <li class="cs-blog-more-item"> 2841 <a href="https://codescene.com/blog/requirements-for-organizational-resilience-engineering-developer-happiness" class="cs-blog-more-link" title="Requirements for Organizational Resilience: Engineering Developer Happiness"> 2842 <span class="cs-blog-more-title-text">Requirements for Organizational Resilience: Engineering Developer Happiness</span> 2843 2844 2845 <span class="cs-blog-more-tag"><span>Research</span></span> 2846 2847 2848 <time class="cs-blog-more-date" datetime="2025-09-23"> 2849 September 23, 2025 2850 </time> 2851 2852 2853 <span class="cs-blog-more-author" data-author="Markus Borg" title="Markus Borg â Dr. Markus Borg leads CodeScene's research, turning evidence-based software engineering into practical impact. A Principal Researcher at CodeScene and Adjunct Associate Professor at Lund University, he focuses on software maintainability, technical debt, and AI-driven software analytics. With 90+ peer-reviewed publications, he is a recognized voice in empirical software engineering, serving on the editorial boards of Empirical Software Engineering and IEEE Software."> 2854 2855 <img src="https://codescene.com/hubfs/Markus_Borg_CS_2%20(1).png" alt="Markus Borg" class="cs-blog-more-author-avatar"> 2856 2857 </span> 2858 2859 </a> 2860 </li> 2861 2862 2863 2864 <li class="cs-blog-more-item"> 2865 <a href="https://codescene.com/blog/bumpy-road-code-complexity-in-context/" class="cs-blog-more-link" title="The Bumpy Road Code Smell: Measuring Code Complexity by its Shape and Distribution (Clone)">
2866 <span class="cs-blog-more-title-text">The Bumpy Road Code Smell: Measuring Code Complexity by its Shape and Distribution (Clone)</span> 2867 2868 2869 2870 <time class="cs-blog-more-date" datetime="2025-09-22"> 2871 September 22, 2025 2872 </time> 2873 2874 2875 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 2876 2877 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 2878 2879 </span> 2880 2881 </a> 2882 </li> 2883 2884 2885 2886 <li class="cs-blog-more-item"> 2887 <a href="https://codescene.com/blog/architectural-analysis-simplified-and-growing-programming-language-support" class="cs-blog-more-link" title="Architectural Analysis Simplified and growing Programming Language support"> 2888 <span class="cs-blog-more-title-text">Architectural Analysis Simplified and growing Programming Language support</span> 2889 2890 2891 <span class="cs-blog-more-tag"><span>Product</span></span> 2892 2893 2894 <time class="cs-blog-more-date" datetime="2025-09-22"> 2895 September 22, 2025 2896 </time> 2897 2898 2899 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 2900 2901 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 2902 2903 </span> 2904 2905 </a> 2906 </li> 2907 2908 2909 2910 <li class="cs-blog-more-item"> 2911 <a href="https://codescene.com/blog/base-64-padding-and-urls" class="cs-blog-more-link" title="Base 64 - padding and URLs"> 2912 <span class="cs-blog-more-title-text">Base 64 - padding and URLs</span> 2913 2914 2915 <span class="cs-blog-more-tag"><span>Tutorials</span></span> 2916 2917 2918 <time class="cs-blog-more-date" datetime="2025-09-22"> 2919 September 22, 2025 2920 </time> 2921 2922 2923 <span class="cs-blog-more-author" data-author="Juraj Martinka" title="Juraj Martinka â "> 2924 2925 <span class="cs-blog-more-author-avatar cs-blog-more-avatar-fallback" aria-hidden="true"></span> 2926 2927 </span> 2928 2929 </a> 2930 </li> 2931 2932 2933 2934 <li class="cs-blog-more-item"> 2935 <a href="https://codescene.com/blog/change-coupling-visualize-the-cost-of-change" class="cs-blog-more-link" title="Change coupling: visualize the cost of change"> 2936 <span class="cs-blog-more-title-text">Change coupling: visualize the cost of change</span> 2937 2938
2939 <span class="cs-blog-more-tag"><span>Product</span></span> 2940 2941 2942 <time class="cs-blog-more-date" datetime="2025-09-22"> 2943 September 22, 2025 2944 </time> 2945 2946 2947 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 2948 2949 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 2950 2951 </span> 2952 2953 </a> 2954 </li> 2955 2956 2957 2958 <li class="cs-blog-more-item"> 2959 <a href="https://codescene.com/blog/code-health-visualized-new-user-interface-blog" class="cs-blog-more-link" title="Code Health Trends Reworked"> 2960 <span class="cs-blog-more-title-text">Code Health Trends Reworked</span> 2961 2962 2963 <span class="cs-blog-more-tag"><span>Product</span></span> 2964 2965 2966 <time class="cs-blog-more-date" datetime="2025-09-22"> 2967 September 22, 2025 2968 </time> 2969 2970 2971 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 2972 2973 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 2974 2975 </span> 2976 2977 </a> 2978 </li> 2979 2980 2981 2982 <li class="cs-blog-more-item"> 2983 <a href="https://codescene.com/blog/code-health-simple-ways-to-avoid-complexity" class="cs-blog-more-link" title="Code Health: simple ways to avoid complexity"> 2984 <span class="cs-blog-more-title-text">Code Health: simple ways to avoid complexity</span> 2985 2986 2987 <span class="cs-blog-more-tag"><span>Software Engineering</span></span> 2988 2989 2990 <time class="cs-blog-more-date" datetime="2025-09-22"> 2991 September 22, 2025 2992 </time> 2993 2994 2995 <span class="cs-blog-more-author" data-author="Joseph Fahey" title="Joseph Fahey â "> 2996 2997 <span class="cs-blog-more-author-avatar cs-blog-more-avatar-fallback" aria-hidden="true"></span> 2998 2999 </span> 3000 3001 </a> 3002 </li> 3003 3004 3005 3006 <li class="cs-blog-more-item"> 3007 <a href="https://codescene.com/blog/visualize-team-code-alignment" class="cs-blog-more-link" title="Visualize team-code alignment: reverse engineer your organization from version-control"> 3008 <span class="cs-blog-more-title-text">Visualize team-code alignment: reverse engineer your organization from version-control</span> 3009 3010 3011 <span class="cs-blog-more-tag"><span>Product</span></span> 3012 3013 3014 <time class="cs-blog-more-date" datetime="2025-09-22"> 3015 September 22, 2025 3016 </time> 3017 3018
3019 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3020 3021 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3022 3023 </span> 3024 3025 </a> 3026 </li> 3027 3028 3029 3030 <li class="cs-blog-more-item"> 3031 <a href="https://codescene.com/blog/visualize-the-impact-of-automated-code-reviews-announcement" class="cs-blog-more-link" title="Visualize the impact of (automated) code reviews"> 3032 <span class="cs-blog-more-title-text">Visualize the impact of (automated) code reviews</span> 3033 3034 3035 <span class="cs-blog-more-tag"><span>Product</span></span> 3036 3037 3038 <time class="cs-blog-more-date" datetime="2025-09-22"> 3039 September 22, 2025 3040 </time> 3041 3042 3043 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3044 3045 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3046 3047 </span> 3048 3049 </a> 3050 </li> 3051 3052 3053 3054 <li class="cs-blog-more-item"> 3055 <a href="https://codescene.com/blog/microservice-dependencies-visualization" class="cs-blog-more-link" title="Visualize Microservice Dependencies in a Team Context"> 3056 <span class="cs-blog-more-title-text">Visualize Microservice Dependencies in a Team Context</span> 3057 3058 3059 <span class="cs-blog-more-tag"><span>Product</span></span> 3060 3061 3062 <time class="cs-blog-more-date" datetime="2025-09-22"> 3063 September 22, 2025 3064 </time> 3065 3066 3067 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3068 3069 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3070 3071 </span> 3072 3073 </a> 3074 </li> 3075 3076 3077 3078 <li class="cs-blog-more-item"> 3079 <a href="https://codescene.com/blog/ci/cd-pipeline-main-use-cases-for-codescene" class="cs-blog-more-link" title="Use CodeScene's CI/CD Quality Gates to Manage Technical Debt with Positive Reinforcement">
3080 <span class="cs-blog-more-title-text">Use CodeScene's CI/CD Quality Gates to Manage Technical Debt with Positive Reinforcement</span> 3081 3082 3083 <span class="cs-blog-more-tag"><span>Product</span></span> 3084 3085 3086 <time class="cs-blog-more-date" datetime="2025-09-22"> 3087 September 22, 2025 3088 </time> 3089 3090 3091 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3092 3093 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3094 3095 </span> 3096 3097 </a> 3098 </li> 3099 3100 3101 3102 <li class="cs-blog-more-item"> 3103 <a href="https://codescene.com/blog/technical-debt-examples-prioritizing-tech-debt-in-react" class="cs-blog-more-link" title="Under the Hood: Prioritizing Technical Debt in React"> 3104 <span class="cs-blog-more-title-text">Under the Hood: Prioritizing Technical Debt in React</span> 3105 3106 3107 <span class="cs-blog-more-tag"><span>Tutorials</span></span> 3108 3109 3110 <time class="cs-blog-more-date" datetime="2025-09-22"> 3111 September 22, 2025 3112 </time> 3113 3114 3115 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3116 3117 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3118 3119 </span> 3120 3121 </a> 3122 </li> 3123 3124 3125 3126 <li class="cs-blog-more-item"> 3127 <a href="https://codescene.com/blog/the-technical-interview-rethought-an-approach-to-evaluate-communication-and-code-comprehension" class="cs-blog-more-link" title="The technical interview rethought: an approach to evaluate communication and code comprehension"> 3128 <span class="cs-blog-more-title-text">The technical interview rethought: an approach to evaluate communication and code comprehension</span> 3129 3130 3131 <span class="cs-blog-more-tag"><span>Software Engineering</span></span> 3132 3133 3134 <time class="cs-blog-more-date" datetime="2025-09-22"> 3135 September 22, 2025 3136 </time> 3137 3138 3139 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3140 3141 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3142 3143 </span> 3144 3145 </a> 3146 </li> 3147 3148 3149 3150 <li class="cs-blog-more-item"> 3151 <a href="https://codescene.com/blog/the-day-i-parsed-a-monster" class="cs-blog-more-link" title="The Day I Parsed A Monster">
3152 <span class="cs-blog-more-title-text">The Day I Parsed A Monster</span> 3153 3154 3155 <span class="cs-blog-more-tag"><span>Software Engineering</span></span> 3156 3157 3158 <time class="cs-blog-more-date" datetime="2025-09-22"> 3159 September 22, 2025 3160 </time> 3161 3162 3163 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3164 3165 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3166 3167 </span> 3168 3169 </a> 3170 </li> 3171 3172 3173 3174 <li class="cs-blog-more-item"> 3175 <a href="https://codescene.com/blog/tech-debt-examples-prioritize-technical-debt-with-codescene" class="cs-blog-more-link" title="Tech Debt - prioritize technical debt with CodeScene"> 3176 <span class="cs-blog-more-title-text">Tech Debt - prioritize technical debt with CodeScene</span> 3177 3178 3179 <span class="cs-blog-more-tag"><span>Product</span></span> 3180 3181 3182 <time class="cs-blog-more-date" datetime="2025-09-22"> 3183 September 22, 2025 3184 </time> 3185 3186 3187 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3188 3189 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3190 3191 </span> 3192 3193 </a> 3194 </li> 3195 3196 3197 3198 <li class="cs-blog-more-item"> 3199 <a href="https://codescene.com/blog/engineering-blog/refactoring-recommendations-based-on-machine-learning" class="cs-blog-more-link" title="Refactoring Recommendations"> 3200 <span class="cs-blog-more-title-text">Refactoring Recommendations</span> 3201 3202 3203 <span class="cs-blog-more-tag"><span>Product</span></span> 3204 3205 3206 <time class="cs-blog-more-date" datetime="2025-09-22"> 3207 September 22, 2025 3208 </time> 3209 3210 3211 <span class="cs-blog-more-author" data-author="Emil Aasa" title="Emil Aasa â "> 3212 3213 <span class="cs-blog-more-author-avatar cs-blog-more-avatar-fallback" aria-hidden="true"></span> 3214 3215 </span> 3216 3217 </a> 3218 </li> 3219 3220 3221 3222 <li class="cs-blog-more-item"> 3223 <a href="https://codescene.com/blog/refactoring-components-in-react-with-custom-hooks" class="cs-blog-more-link" title="Refactoring components in React with custom hooks"> 3224 <span class="cs-blog-more-title-text">Refactoring components in React with custom hooks</span> 3225 3226
3227 <span class="cs-blog-more-tag"><span>Refactoring</span></span> 3228 3229 3230 <time class="cs-blog-more-date" datetime="2025-09-22"> 3231 September 22, 2025 3232 </time> 3233 3234 3235 <span class="cs-blog-more-author" data-author="Simon Sandlund" title="Simon Sandlund â "> 3236 3237 <span class="cs-blog-more-author-avatar cs-blog-more-avatar-fallback" aria-hidden="true"></span> 3238 3239 </span> 3240 3241 </a> 3242 </li> 3243 3244 3245 3246 <li class="cs-blog-more-item"> 3247 <a href="https://codescene.com/blog/minimize-on-and-off-boarding-risks" class="cs-blog-more-link" title="Minimize On- and Off-Boarding Risks"> 3248 <span class="cs-blog-more-title-text">Minimize On- and Off-Boarding Risks</span> 3249 3250 3251 <span class="cs-blog-more-tag"><span>Product</span></span> 3252 3253 3254 <time class="cs-blog-more-date" datetime="2025-09-22"> 3255 September 22, 2025 3256 </time> 3257 3258 3259 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3260 3261 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3262 3263 </span> 3264 3265 </a> 3266 </li> 3267 3268 3269 3270 <li class="cs-blog-more-item"> 3271 <a href="https://codescene.com/blog/migrating-from-tfs-to-git" class="cs-blog-more-link" title="Migrating from TFS to Git: How to Run CodeScene on TFS Projects"> 3272 <span class="cs-blog-more-title-text">Migrating from TFS to Git: How to Run CodeScene on TFS Projects</span> 3273 3274 3275 <span class="cs-blog-more-tag"><span>Tutorials</span></span> 3276 3277 3278 <time class="cs-blog-more-date" datetime="2025-09-22"> 3279 September 22, 2025 3280 </time> 3281 3282 3283 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3284 3285 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3286 3287 </span> 3288 3289 </a> 3290 </li> 3291 3292 3293 3294 <li class="cs-blog-more-item"> 3295 <a href="https://codescene.com/blog/meet-the-branch-measures-behavioral-code-analysis-predicts-delivery-risks" class="cs-blog-more-link" title="Meet the Branch Measures: Behavioral Code Analysis Predicts Delivery Risks"> 3296 <span class="cs-blog-more-title-text">Meet the Branch Measures: Behavioral Code Analysis Predicts Delivery Risks</span> 3297 3298
3299 <span class="cs-blog-more-tag"><span>Product</span></span> 3300 3301 3302 <time class="cs-blog-more-date" datetime="2025-09-22"> 3303 September 22, 2025 3304 </time> 3305 3306 3307 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3308 3309 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3310 3311 </span> 3312 3313 </a> 3314 </li> 3315 3316 3317 3318 <li class="cs-blog-more-item"> 3319 <a href="https://codescene.com/blog/how-to-manage-technical-debt-with-auto-supervised-goals-read-more" class="cs-blog-more-link" title="How to Manage Technical Debt with Auto-Supervised Goals"> 3320 <span class="cs-blog-more-title-text">How to Manage Technical Debt with Auto-Supervised Goals</span> 3321 3322 3323 <span class="cs-blog-more-tag"><span>Product</span></span> 3324 3325 3326 <time class="cs-blog-more-date" datetime="2025-09-22"> 3327 September 22, 2025 3328 </time> 3329 3330 3331 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3332 3333 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3334 3335 </span> 3336 3337 </a> 3338 </li> 3339 3340 3341 3342 <li class="cs-blog-more-item"> 3343 <a href="https://codescene.com/blog/feature-toggles-are-technical-debt-guest-blog" class="cs-blog-more-link" title="Feature Toggles are Technical Debt, but still great"> 3344 <span class="cs-blog-more-title-text">Feature Toggles are Technical Debt, but still great</span> 3345 3346 3347 <span class="cs-blog-more-tag"><span>Product</span></span> 3348 3349 3350 <time class="cs-blog-more-date" datetime="2025-09-22"> 3351 September 22, 2025 3352 </time> 3353 3354 3355 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3356 3357 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3358 3359 </span> 3360 3361 </a> 3362 </li> 3363 3364 3365 3366 <li class="cs-blog-more-item"> 3367 <a href="https://codescene.com/blog/example-of-a-functional-programming-refactoring-pattern" class="cs-blog-more-link" title="Example of a functional programming refactoring pattern"> 3368 <span class="cs-blog-more-title-text">Example of a functional programming refactoring pattern</span> 3369 3370
3371 <span class="cs-blog-more-tag"><span>Tutorials</span></span> 3372 3373 3374 <time class="cs-blog-more-date" datetime="2025-09-22"> 3375 September 22, 2025 3376 </time> 3377 3378 3379 <span class="cs-blog-more-author" data-author="Joseph Fahey" title="Joseph Fahey â "> 3380 3381 <span class="cs-blog-more-author-avatar cs-blog-more-avatar-fallback" aria-hidden="true"></span> 3382 3383 </span> 3384 3385 </a> 3386 </li> 3387 3388 3389 3390 <li class="cs-blog-more-item"> 3391 <a href="https://codescene.com/blog/early-warnings-for-future-maintenance-problems" class="cs-blog-more-link" title="Early Warnings for Future Maintenance Problems"> 3392 <span class="cs-blog-more-title-text">Early Warnings for Future Maintenance Problems</span> 3393 3394 3395 <span class="cs-blog-more-tag"><span>Product</span></span> 3396 3397 3398 <time class="cs-blog-more-date" datetime="2025-09-22"> 3399 September 22, 2025 3400 </time> 3401 3402 3403 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3404 3405 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3406 3407 </span> 3408 3409 </a> 3410 </li> 3411 3412 3413 3414 <li class="cs-blog-more-item"> 3415 <a href="https://codescene.com/blog/ide-integration-for-codescene-has-just-been-released" class="cs-blog-more-link" title="CodeScene's IDE Extension brings CodeHealth⢠Analysis directly into your editor"> 3416 <span class="cs-blog-more-title-text">CodeScene's IDE Extension brings CodeHealth⢠Analysis directly into your editor</span> 3417 3418 3419 <span class="cs-blog-more-tag"><span>Product</span></span> 3420 3421 3422 <time class="cs-blog-more-date" datetime="2025-09-22"> 3423 September 22, 2025 3424 </time> 3425 3426 3427 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3428 3429 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3430 3431 </span> 3432 3433 </a> 3434 </li> 3435 3436 3437 3438 <li class="cs-blog-more-item"> 3439 <a href="https://codescene.com/blog/codescene-integrates-with-bitbucket-announcement" class="cs-blog-more-link" title="CodeScene SaaS with BitBucket Hosting"> 3440 <span class="cs-blog-more-title-text">CodeScene SaaS with BitBucket Hosting</span> 3441 3442 3443 <span class="cs-blog-more-tag"><span>Product</span></span> 3444 3445 3446 <time class="cs-blog-more-date" datetime="2025-09-22"> 3447 September 22, 2025 3448 </time> 3449 3450 3451 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3452 3453 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3454 3455 </span> 3456 3457 </a> 3458 </li> 3459 3460 3461 3462 <li class="cs-blog-more-item"> 3463 <a href="https://codescene.com/blog/codescene-in-your-continuous-integration-pipeline" class="cs-blog-more-link" title="CodeScene in your Continuous Integration Pipeline">
3464 <span class="cs-blog-more-title-text">CodeScene in your Continuous Integration Pipeline</span> 3465 3466 3467 <span class="cs-blog-more-tag"><span>CI/CD Pipeline</span></span> 3468 3469 3470 <time class="cs-blog-more-date" datetime="2025-09-22"> 3471 September 22, 2025 3472 </time> 3473 3474 3475 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3476 3477 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3478 3479 </span> 3480 3481 </a> 3482 </li> 3483 3484 3485 3486 <li class="cs-blog-more-item"> 3487 <a href="https://codescene.com/blog/rust-programming-language-is-now-supported-in-codescene" class="cs-blog-more-link" title="Announcing Code Health support for the Rust Programming Language"> 3488 <span class="cs-blog-more-title-text">Announcing Code Health support for the Rust Programming Language</span> 3489 3490 3491 <span class="cs-blog-more-tag"><span>Product</span></span> 3492 3493 3494 <time class="cs-blog-more-date" datetime="2025-09-22"> 3495 September 22, 2025 3496 </time> 3497 3498 3499 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3500 3501 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3502 3503 </span> 3504 3505 </a> 3506 </li> 3507 3508 3509 3510 <li class="cs-blog-more-item"> 3511 <a href="https://codescene.com/blog/brightscript-is-now-supported-in-codescene" class="cs-blog-more-link" title="Announcement: Code Health Metrics for the BrightScript Language"> 3512 <span class="cs-blog-more-title-text">Announcement: Code Health Metrics for the BrightScript Language</span> 3513 3514 3515 <span class="cs-blog-more-tag"><span>Product</span></span> 3516 3517 3518 <time class="cs-blog-more-date" datetime="2025-09-22"> 3519 September 22, 2025 3520 </time> 3521 3522 3523 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3524 3525 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3526 3527 </span> 3528 3529 </a> 3530 </li> 3531 3532 3533 3534 <li class="cs-blog-more-item"> 3535 <a href="https://codescene.com/blog/analyse-pair-and-mob-programming-patterns" class="cs-blog-more-link" title="Analyse Pair and Mob Programming Patterns">
3536 <span class="cs-blog-more-title-text">Analyse Pair and Mob Programming Patterns</span> 3537 3538 3539 <span class="cs-blog-more-tag"><span>Product</span></span> 3540 3541 3542 <time class="cs-blog-more-date" datetime="2025-09-22"> 3543 September 22, 2025 3544 </time> 3545 3546 3547 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3548 3549 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3550 3551 </span> 3552 3553 </a> 3554 </li> 3555 3556 3557 3558 <li class="cs-blog-more-item"> 3559 <a href="https://codescene.com/blog/ai-coding-assistant-introducing-ai-generated-code-refactoring" class="cs-blog-more-link" title="AI Coding Assistants: Introducing CodeScene AI Generated Code Refactoring"> 3560 <span class="cs-blog-more-title-text">AI Coding Assistants: Introducing CodeScene AI Generated Code Refactoring</span> 3561 3562 3563 <span class="cs-blog-more-tag"><span>AI Coding</span></span> 3564 3565 3566 <time class="cs-blog-more-date" datetime="2025-09-22"> 3567 September 22, 2025 3568 </time> 3569 3570 3571 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3572 3573 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3574 3575 </span> 3576 3577 </a> 3578 </li> 3579 3580 3581 3582 <li class="cs-blog-more-item"> 3583 <a href="https://codescene.com/blog/a-project-management-software-that-understands-code" class="cs-blog-more-link" title="A Project Management Software that Understands Code"> 3584 <span class="cs-blog-more-title-text">A Project Management Software that Understands Code</span> 3585 3586 3587 <span class="cs-blog-more-tag"><span>Product</span></span> 3588 3589 3590 <time class="cs-blog-more-date" datetime="2025-09-22"> 3591 September 22, 2025 3592 </time> 3593 3594 3595 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3596 3597 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3598 3599 </span> 3600 3601 </a> 3602 </li> 3603 3604 3605 3606 <li class="cs-blog-more-item"> 3607 <a href="https://codescene.com/blog/a-performance-optimization-workflow-clojure" class="cs-blog-more-link" title="A performance optimization workflow - Clojure">
3608 <span class="cs-blog-more-title-text">A performance optimization workflow - Clojure</span> 3609 3610 3611 <span class="cs-blog-more-tag"><span>Tutorials</span></span> 3612 3613 3614 <time class="cs-blog-more-date" datetime="2025-09-22"> 3615 September 22, 2025 3616 </time> 3617 3618 3619 <span class="cs-blog-more-author" data-author="Emil Aasa" title="Emil Aasa â "> 3620 3621 <span class="cs-blog-more-author-avatar cs-blog-more-avatar-fallback" aria-hidden="true"></span> 3622 3623 </span> 3624 3625 </a> 3626 </li> 3627 3628 3629 3630 <li class="cs-blog-more-item"> 3631 <a href="https://codescene.com/blog/codescene-recognized-by-g2-in-summer-2025-reports" class="cs-blog-more-link" title="CodeScene Momentum Leader in G2 Summer 2025 Reports"> 3632 <span class="cs-blog-more-title-text">CodeScene Momentum Leader in G2 Summer 2025 Reports</span> 3633 3634 3635 <span class="cs-blog-more-tag"><span>Company News</span></span> 3636 3637 3638 <time class="cs-blog-more-date" datetime="2025-07-09"> 3639 July 9, 2025 3640 </time> 3641 3642 3643 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3644 3645 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3646 3647 </span> 3648 3649 </a> 3650 </li> 3651 3652 3653 3654 <li class="cs-blog-more-item"> 3655 <a href="https://codescene.com/blog/codility-and-codescene-announce-strategic-partnership" class="cs-blog-more-link" title="New CodilityâCodeScene Partnership Brings CodeHealth⢠into Technical Assessments"> 3656 <span class="cs-blog-more-title-text">New CodilityâCodeScene Partnership Brings CodeHealth⢠into Technical Assessments</span> 3657 3658 3659 <span class="cs-blog-more-tag"><span>Company News</span></span> 3660 3661 3662 <time class="cs-blog-more-date" datetime="2025-06-27"> 3663 June 27, 2025 3664 </time> 3665 3666 3667 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3668 3669 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3670 3671 </span> 3672 3673 </a> 3674 </li> 3675 3676 3677 3678 <li class="cs-blog-more-item"> 3679 <a href="https://codescene.com/blog/explore-coverage-feature-in-codescene" class="cs-blog-more-link" title="Explore CodeScene's New Code Coverage Feature"> 3680 <span class="cs-blog-more-title-text">Explore CodeScene's New Code Coverage Feature</span> 3681 3682 3683 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 3684 3685 3686 <time class="cs-blog-more-date" datetime="2025-06-16"> 3687 June 16, 2025 3688 </time> 3689 3690 3691 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3692 3693 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3694 3695 </span> 3696 3697 </a> 3698 </li> 3699 3700 3701 3702 <li class="cs-blog-more-item"> 3703 <a href="https://codescene.com/blog/what-is-a-static-code-analysis" class="cs-blog-more-link" title="What is Static Code Analysis?">
3704 <span class="cs-blog-more-title-text">What is Static Code Analysis?</span> 3705 3706 3707 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 3708 3709 3710 <time class="cs-blog-more-date" datetime="2025-05-13"> 3711 May 13, 2025 3712 </time> 3713 3714 3715 <span class="cs-blog-more-author" data-author="Joseph Fahey" title="Joseph Fahey â "> 3716 3717 <span class="cs-blog-more-author-avatar cs-blog-more-avatar-fallback" aria-hidden="true"></span> 3718 3719 </span> 3720 3721 </a> 3722 </li> 3723 3724 3725 3726 <li class="cs-blog-more-item"> 3727 <a href="https://codescene.com/blog/implement-guardrails-for-ai-assisted-coding" class="cs-blog-more-link" title="Use Guardrails for AI-Assisted Coding"> 3728 <span class="cs-blog-more-title-text">Use Guardrails for AI-Assisted Coding</span> 3729 3730 3731 <span class="cs-blog-more-tag"><span>AI Coding</span></span> 3732 3733 3734 <time class="cs-blog-more-date" datetime="2025-03-03"> 3735 March 3, 2025 3736 </time> 3737 3738 3739 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3740 3741 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3742 3743 </span> 3744 3745 </a> 3746 </li> 3747 3748 3749 3750 <li class="cs-blog-more-item"> 3751 <a href="https://codescene.com/blog/extending-cursor-ai-with-automated-code-reviews" class="cs-blog-more-link" title="AI vs. Code Maintainability: Extending Cursor with Automated Code Reviews"> 3752 <span class="cs-blog-more-title-text">AI vs. Code Maintainability: Extending Cursor with Automated Code Reviews</span> 3753 3754 3755 <span class="cs-blog-more-tag"><span>AI Coding</span></span> 3756 3757 3758 <time class="cs-blog-more-date" datetime="2025-01-29"> 3759 January 29, 2025 3760 </time> 3761 3762 3763 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3764 3765 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3766 3767 </span> 3768 3769 </a> 3770 </li> 3771 3772 3773 3774 <li class="cs-blog-more-item"> 3775 <a href="https://codescene.com/blog/your-teams-automated-defense-against-technical-debt" class="cs-blog-more-link" title="Your Teamâs Automated Defense Against Technical Debt"> 3776 <span class="cs-blog-more-title-text">Your Teamâs Automated Defense Against Technical Debt</span> 3777 3778
3779 <span class="cs-blog-more-tag"><span>Technical Debt</span></span> 3780 3781 3782 <time class="cs-blog-more-date" datetime="2025-01-24"> 3783 January 24, 2025 3784 </time> 3785 3786 3787 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3788 3789 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3790 3791 </span> 3792 3793 </a> 3794 </li> 3795 3796 3797 3798 <li class="cs-blog-more-item"> 3799 <a href="https://codescene.com/blog/benchmarking-code-health-refactoring-roi" class="cs-blog-more-link" title="From Tech Debt to Triumph: How Refactoring Speeds Development by 43%"> 3800 <span class="cs-blog-more-title-text">From Tech Debt to Triumph: How Refactoring Speeds Development by 43%</span> 3801 3802 3803 <span class="cs-blog-more-tag"><span>Research</span></span> 3804 3805 3806 <time class="cs-blog-more-date" datetime="2024-12-05"> 3807 December 5, 2024 3808 </time> 3809 3810 3811 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3812 3813 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3814 3815 </span> 3816 3817 </a> 3818 </li> 3819 3820 3821 3822 <li class="cs-blog-more-item"> 3823 <a href="https://codescene.com/blog/codescene-now-available-on-aws-marketplace" class="cs-blog-more-link" title="CodeScene Now Available on AWS Marketplace"> 3824 <span class="cs-blog-more-title-text">CodeScene Now Available on AWS Marketplace</span> 3825 3826 3827 <span class="cs-blog-more-tag"><span>Company News</span></span> 3828 3829 3830 <time class="cs-blog-more-date" datetime="2024-11-18"> 3831 November 18, 2024 3832 </time> 3833 3834 3835 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3836 3837 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3838 3839 </span> 3840 3841 </a> 3842 </li> 3843 3844 3845 3846 <li class="cs-blog-more-item"> 3847 <a href="https://codescene.com/blog/conflux-and-codescene-announce-strategic-partnership" class="cs-blog-more-link" title="Conflux and CodeScene Announce Strategic Partnership"> 3848 <span class="cs-blog-more-title-text">Conflux and CodeScene Announce Strategic Partnership</span> 3849 3850 3851 <span class="cs-blog-more-tag"><span>Company News</span></span> 3852 3853 3854 <time class="cs-blog-more-date" datetime="2024-09-09"> 3855 September 9, 2024 3856 </time> 3857 3858 3859 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3860 3861 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3862 3863 </span> 3864 3865 </a> 3866 </li> 3867 3868 3869 3870 <li class="cs-blog-more-item"> 3871 <a href="https://codescene.com/blog/automatically-fix-technical-debt-with-ai-refactoring" class="cs-blog-more-link" title="Wouldnât It Be Great If You Could Automatically Pay Down Technical Debt Using AI?">
3872 <span class="cs-blog-more-title-text">Wouldnât It Be Great If You Could Automatically Pay Down Technical Debt Using AI?</span> 3873 3874 3875 <span class="cs-blog-more-tag"><span>AI Coding</span></span> 3876 3877 3878 <time class="cs-blog-more-date" datetime="2024-08-29"> 3879 August 29, 2024 3880 </time> 3881 3882 3883 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3884 3885 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3886 3887 </span> 3888 3889 </a> 3890 </li> 3891 3892 3893 3894 <li class="cs-blog-more-item"> 3895 <a href="https://codescene.com/blog/use-guardrails-for-ai-assisted-coding" class="cs-blog-more-link" title="Use Guardrails for AI-Assisted Coding"> 3896 <span class="cs-blog-more-title-text">Use Guardrails for AI-Assisted Coding</span> 3897 3898 3899 <span class="cs-blog-more-tag"><span>AI Coding</span></span> 3900 3901 3902 <time class="cs-blog-more-date" datetime="2024-06-14"> 3903 June 14, 2024 3904 </time> 3905 3906 3907 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 3908 3909 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 3910 3911 </span> 3912 3913 </a> 3914 </li> 3915 3916 3917 3918 <li class="cs-blog-more-item"> 3919 <a href="https://codescene.com/blog/codescene-is-a-proud-partner-of-the-nextg2com-competence-center" class="cs-blog-more-link" title="CodeScene is a proud partner of Lund University and Vinnova's NextG2Com Competence Center"> 3920 <span class="cs-blog-more-title-text">CodeScene is a proud partner of Lund University and Vinnova's NextG2Com Competence Center</span> 3921 3922 3923 <span class="cs-blog-more-tag"><span>Company News</span></span> 3924 3925 3926 <time class="cs-blog-more-date" datetime="2024-06-07"> 3927 June 7, 2024 3928 </time> 3929 3930 3931 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3932 3933 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3934 3935 </span> 3936 3937 </a> 3938 </li> 3939 3940 3941 3942 <li class="cs-blog-more-item"> 3943 <a href="https://codescene.com/blog/university-of-antwerp-uses-codescene-in-re-engineering-course" class="cs-blog-more-link" title="University of Antwerp uses CodeScene in Re-engineering Course"> 3944 <span class="cs-blog-more-title-text">University of Antwerp uses CodeScene in Re-engineering Course</span> 3945 3946 3947 <span class="cs-blog-more-tag"><span>Refactoring</span></span> 3948 3949 3950 <time class="cs-blog-more-date" datetime="2024-06-06"> 3951 June 6, 2024 3952 </time> 3953 3954
3955 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3956 3957 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3958 3959 </span> 3960 3961 </a> 3962 </li> 3963 3964 3965 3966 <li class="cs-blog-more-item"> 3967 <a href="https://codescene.com/blog/identify-technical-risk-and-prioritize-actions-to-mitigate-it" class="cs-blog-more-link" title="CodeScene helps identify technical risk and prioritize actions to mitigate it"> 3968 <span class="cs-blog-more-title-text">CodeScene helps identify technical risk and prioritize actions to mitigate it</span> 3969 3970 3971 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 3972 3973 3974 <time class="cs-blog-more-date" datetime="2024-05-24"> 3975 May 24, 2024 3976 </time> 3977 3978 3979 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 3980 3981 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 3982 3983 </span> 3984 3985 </a> 3986 </li> 3987 3988 3989 3990 <li class="cs-blog-more-item"> 3991 <a href="https://codescene.com/blog/ework-group-uses-codescene-for-unbiased-development-insights" class="cs-blog-more-link" title="Ework Group uses CodeScene to Navigate Challenges of Distributed Software Development"> 3992 <span class="cs-blog-more-title-text">Ework Group uses CodeScene to Navigate Challenges of Distributed Software Development</span> 3993 3994 3995 <span class="cs-blog-more-tag"><span>Team Dynamics</span></span> 3996 3997 3998 <time class="cs-blog-more-date" datetime="2024-05-24"> 3999 May 24, 2024 4000 </time> 4001 4002 4003 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4004 4005 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4006 4007 </span> 4008 4009 </a> 4010 </li> 4011 4012 4013 4014 <li class="cs-blog-more-item"> 4015 <a href="https://codescene.com/blog/luminare-prevented-developer-burnout-and-improved-code-quality" class="cs-blog-more-link" title="Luminare prevents developer burnout and improved code quality"> 4016 <span class="cs-blog-more-title-text">Luminare prevents developer burnout and improved code quality</span> 4017 4018 4019 <span class="cs-blog-more-tag"><span>Team Dynamics</span></span> 4020 4021 4022 <time class="cs-blog-more-date" datetime="2024-05-24"> 4023 May 24, 2024 4024 </time> 4025 4026 4027 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4028 4029 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4030 4031 </span> 4032 4033 </a> 4034 </li> 4035 4036 4037 4038 <li class="cs-blog-more-item"> 4039 <a href="https://codescene.com/blog/codescene-receives-best-paper-award-at-the-international-technical-debt-conference" class="cs-blog-more-link" title="CodeScene Receives Best Paper Award at the International Conference on Technical Debt"> 4040 <span class="cs-blog-more-title-text">CodeScene Receives Best Paper Award at the International Conference on Technical Debt</span> 4041 4042
4043 <span class="cs-blog-more-tag"><span>Company News</span></span> 4044 4045 4046 <time class="cs-blog-more-date" datetime="2024-04-22"> 4047 April 22, 2024 4048 </time> 4049 4050 4051 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4052 4053 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4054 4055 </span> 4056 4057 </a> 4058 </li> 4059 4060 4061 4062 <li class="cs-blog-more-item"> 4063 <a href="https://codescene.com/blog/what-is-technical-debt" class="cs-blog-more-link" title="What is technical debt? Let's explore!"> 4064 <span class="cs-blog-more-title-text">What is technical debt? Let's explore!</span> 4065 4066 4067 <span class="cs-blog-more-tag"><span>Technical Debt</span></span> 4068 4069 4070 <time class="cs-blog-more-date" datetime="2024-04-19"> 4071 April 19, 2024 4072 </time> 4073 4074 4075 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4076 4077 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4078 4079 </span> 4080 4081 </a> 4082 </li> 4083 4084 4085 4086 <li class="cs-blog-more-item"> 4087 <a href="https://codescene.com/blog/codescene-is-a-g2-high-performer-for-spring-2024" class="cs-blog-more-link" title="CodeScene Named Spring 2024 High Performer by G2"> 4088 <span class="cs-blog-more-title-text">CodeScene Named Spring 2024 High Performer by G2</span> 4089 4090 4091 <span class="cs-blog-more-tag"><span>Company News</span></span> 4092 4093 4094 <time class="cs-blog-more-date" datetime="2024-04-05"> 4095 April 5, 2024 4096 </time> 4097 4098 4099 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4100 4101 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4102 4103 </span> 4104 4105 </a> 4106 </li> 4107 4108 4109 4110 <li class="cs-blog-more-item"> 4111 <a href="https://codescene.com/blog/6x-improvement-over-sonarqube" class="cs-blog-more-link" title="6X improvement over SonarQube - Raising the Maintainability bar"> 4112 <span class="cs-blog-more-title-text">6X improvement over SonarQube - Raising the Maintainability bar</span> 4113 4114 4115 <span class="cs-blog-more-tag"><span>Research</span></span> 4116 4117 4118 <time class="cs-blog-more-date" datetime="2024-02-27"> 4119 February 27, 2024 4120 </time> 4121 4122 4123 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4124 4125 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4126 4127 </span> 4128 4129 </a> 4130 </li> 4131 4132 4133 4134 <li class="cs-blog-more-item"> 4135 <a href="https://codescene.com/blog/codescene-proud-sponsor-of-pink-programming" class="cs-blog-more-link" title="CodeScene is a proud sponsor of Pink Programming">
4136 <span class="cs-blog-more-title-text">CodeScene is a proud sponsor of Pink Programming</span> 4137 4138 4139 <span class="cs-blog-more-tag"><span>Company News</span></span> 4140 4141 4142 <time class="cs-blog-more-date" datetime="2024-02-14"> 4143 February 14, 2024 4144 </time> 4145 4146 4147 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4148 4149 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4150 4151 </span> 4152 4153 </a> 4154 </li> 4155 4156 4157 4158 <li class="cs-blog-more-item"> 4159 <a href="https://codescene.com/blog/cli-tool" class="cs-blog-more-link" title="Introducing CodeScene's new CLI Tool"> 4160 <span class="cs-blog-more-title-text">Introducing CodeScene's new CLI Tool</span> 4161 4162 4163 4164 <time class="cs-blog-more-date" datetime="2023-12-14"> 4165 December 14, 2023 4166 </time> 4167 4168 4169 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4170 4171 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4172 4173 </span> 4174 4175 </a> 4176 </li> 4177 4178 4179 4180 <li class="cs-blog-more-item"> 4181 <a href="https://codescene.com/blog/visualize-conways-law-in-your-codebase" class="cs-blog-more-link" title="Visualize Conway's Law in your Codebase"> 4182 <span class="cs-blog-more-title-text">Visualize Conway's Law in your Codebase</span> 4183 4184 4185 4186 <time class="cs-blog-more-date" datetime="2023-10-27"> 4187 October 27, 2023 4188 </time> 4189 4190 4191 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4192 4193 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4194 4195 </span> 4196 4197 </a> 4198 </li> 4199 4200 4201 4202 <li class="cs-blog-more-item"> 4203 <a href="https://codescene.com/blog/lydia-nicoll-enters-as-codescenes-new-chief-marketing-officer" class="cs-blog-more-link" title="Lydia Nicoll enters as CodeScene's new Chief Marketing Officer"> 4204 <span class="cs-blog-more-title-text">Lydia Nicoll enters as CodeScene's new Chief Marketing Officer</span> 4205 4206 4207 <span class="cs-blog-more-tag"><span>Company News</span></span> 4208 4209 4210 <time class="cs-blog-more-date" datetime="2023-08-11"> 4211 August 11, 2023 4212 </time> 4213 4214 4215 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4216 4217 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4218 4219 </span> 4220 4221 </a> 4222 </li> 4223 4224 4225 4226 <li class="cs-blog-more-item"> 4227 <a href="https://codescene.com/blog/codescene-raises-7.5-million-euro-in-financing-round" class="cs-blog-more-link" title="CodeScene Raises â¬7.5 Million in a Financing Round">
4228 <span class="cs-blog-more-title-text">CodeScene Raises â¬7.5 Million in a Financing Round</span> 4229 4230 4231 <span class="cs-blog-more-tag"><span>Company News</span></span> 4232 4233 4234 <time class="cs-blog-more-date" datetime="2023-08-04"> 4235 August 4, 2023 4236 </time> 4237 4238 4239 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4240 4241 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4242 4243 </span> 4244 4245 </a> 4246 </li> 4247 4248 4249 4250 <li class="cs-blog-more-item"> 4251 <a href="https://codescene.com/blog/code-quality-debunking-the-speed-vs-vs-quality-myth-with-empirical-data" class="cs-blog-more-link" title="Code Quality: Debunking the Speed vs Quality Myth with Empirical Data"> 4252 <span class="cs-blog-more-title-text">Code Quality: Debunking the Speed vs Quality Myth with Empirical Data</span> 4253 4254 4255 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 4256 4257 4258 <time class="cs-blog-more-date" datetime="2023-05-23"> 4259 May 23, 2023 4260 </time> 4261 4262 4263 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4264 4265 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4266 4267 </span> 4268 4269 </a> 4270 </li> 4271 4272 4273 4274 <li class="cs-blog-more-item"> 4275 <a href="https://codescene.com/blog/prevent-technical-debt-from-crippling-your-organization" class="cs-blog-more-link" title="Reduce Technical Debt: Strategies to Safeguard Your Organization from its Debilitating Impact"> 4276 <span class="cs-blog-more-title-text">Reduce Technical Debt: Strategies to Safeguard Your Organization from its Debilitating Impact</span> 4277 4278 4279 <span class="cs-blog-more-tag"><span>Technical Debt</span></span> 4280 4281 4282 <time class="cs-blog-more-date" datetime="2023-01-23"> 4283 January 23, 2023 4284 </time> 4285 4286 4287 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4288 4289 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4290 4291 </span> 4292 4293 </a> 4294 </li> 4295 4296 4297 4298 <li class="cs-blog-more-item"> 4299 <a href="https://codescene.com/blog/adam-tornhill-joins-forbes-technology-council" class="cs-blog-more-link" title="Adam Tornhill, Founder of CodeScene joins Forbes Technology Council"> 4300 <span class="cs-blog-more-title-text">Adam Tornhill, Founder of CodeScene joins Forbes Technology Council</span> 4301 4302 4303 <span class="cs-blog-more-tag"><span>Company News</span></span> 4304 4305 4306 <time class="cs-blog-more-date" datetime="2022-11-09"> 4307 November 9, 2022 4308 </time> 4309 4310
4311 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4312 4313 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4314 4315 </span> 4316 4317 </a> 4318 </li> 4319 4320 4321 4322 <li class="cs-blog-more-item"> 4323 <a href="https://codescene.com/blog/differences-between-a-startup-and-an-enterprise-a-qa-perspective" class="cs-blog-more-link" title="Differences between a startup and an enterprise - a QA perspective"> 4324 <span class="cs-blog-more-title-text">Differences between a startup and an enterprise - a QA perspective</span> 4325 4326 4327 <span class="cs-blog-more-tag"><span>Company News</span></span> 4328 4329 4330 <time class="cs-blog-more-date" datetime="2022-09-23"> 4331 September 23, 2022 4332 </time> 4333 4334 4335 <span class="cs-blog-more-author" data-author="Nejla Setkic" title="Nejla Setkic â "> 4336 4337 <span class="cs-blog-more-author-avatar cs-blog-more-avatar-fallback" aria-hidden="true"></span> 4338 4339 </span> 4340 4341 </a> 4342 </li> 4343 4344 4345 4346 <li class="cs-blog-more-item"> 4347 <a href="https://codescene.com/blog/how-is-technical-debt-related-to-progress" class="cs-blog-more-link" title="How is technical debt related to progress?"> 4348 <span class="cs-blog-more-title-text">How is technical debt related to progress?</span> 4349 4350 4351 <span class="cs-blog-more-tag"><span>Technical Debt</span></span> 4352 4353 4354 <time class="cs-blog-more-date" datetime="2022-08-04"> 4355 August 4, 2022 4356 </time> 4357 4358 4359 <span class="cs-blog-more-author" data-author="Joseph Fahey" title="Joseph Fahey â "> 4360 4361 <span class="cs-blog-more-author-avatar cs-blog-more-avatar-fallback" aria-hidden="true"></span> 4362 4363 </span> 4364 4365 </a> 4366 </li> 4367 4368 4369 4370 <li class="cs-blog-more-item"> 4371 <a href="https://codescene.com/blog/codescene-recruits-markus-borg-as-principal-researcher" class="cs-blog-more-link" title="We've recruited Markus Borg as Principal Researcher to lead companyâs research efforts"> 4372 <span class="cs-blog-more-title-text">We've recruited Markus Borg as Principal Researcher to lead companyâs research efforts</span> 4373 4374 4375 <span class="cs-blog-more-tag"><span>Company News</span></span> 4376 4377 4378 <time class="cs-blog-more-date" datetime="2022-07-04"> 4379 July 4, 2022 4380 </time> 4381 4382 4383 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4384 4385 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4386 4387 </span> 4388 4389 </a> 4390 </li> 4391 4392 4393 4394 <li class="cs-blog-more-item"> 4395 <a href="https://codescene.com/blog/what-can-software-developers-learn-from-offender-profiling" class="cs-blog-more-link" title="What can software developers learn from offender profiling?"> 4396 <span class="cs-blog-more-title-text">What can software developers learn from offender profiling?</span> 4397 4398 4399 <span class="cs-blog-more-tag"><span>Team Dynamics</span></span> 4400 4401 4402 <time class="cs-blog-more-date" datetime="2022-06-09"> 4403 June 9, 2022 4404 </time> 4405 4406
4407 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4408 4409 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4410 4411 </span> 4412 4413 </a> 4414 </li> 4415 4416 4417 4418 <li class="cs-blog-more-item"> 4419 <a href="https://codescene.com/blog/measuring-the-business-impact-of-low-code-quality" class="cs-blog-more-link" title="Code quality: measuring the business impact of unhealthy code"> 4420 <span class="cs-blog-more-title-text">Code quality: measuring the business impact of unhealthy code</span> 4421 4422 4423 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 4424 4425 4426 <time class="cs-blog-more-date" datetime="2022-03-16"> 4427 March 16, 2022 4428 </time> 4429 4430 4431 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4432 4433 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4434 4435 </span> 4436 4437 </a> 4438 </li> 4439 4440 4441 4442 <li class="cs-blog-more-item"> 4443 <a href="https://codescene.com/blog/code-analysis-tool/" class="cs-blog-more-link" title="How CodeScene Differs From Traditional Code Analysis Tools"> 4444 <span class="cs-blog-more-title-text">How CodeScene Differs From Traditional Code Analysis Tools</span> 4445 4446 4447 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 4448 4449 4450 <time class="cs-blog-more-date" datetime="2021-12-20"> 4451 December 20, 2021 4452 </time> 4453 4454 4455 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4456 4457 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4458 4459 </span> 4460 4461 </a> 4462 </li> 4463 4464 4465 4466 <li class="cs-blog-more-item"> 4467 <a href="https://codescene.com/blog/iso/iec-27001-accreditation" class="cs-blog-more-link" title="ISO/IEC 27001 accredited - Your code is safe with us!"> 4468 <span class="cs-blog-more-title-text">ISO/IEC 27001 accredited - Your code is safe with us!</span> 4469 4470 4471 <span class="cs-blog-more-tag"><span>Company News</span></span> 4472 4473 4474 <time class="cs-blog-more-date" datetime="2021-11-17"> 4475 November 17, 2021 4476 </time> 4477 4478 4479 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4480 4481 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4482 4483 </span> 4484 4485 </a> 4486 </li> 4487 4488 4489 4490 <li class="cs-blog-more-item"> 4491 <a href="https://codescene.com/blog/codescene-one-of-50-finalists-in-techarenan-challenge-2021" class="cs-blog-more-link" title="CodeScene one of the 50 finalists in Techarenan Challenge 2021">
4492 <span class="cs-blog-more-title-text">CodeScene one of the 50 finalists in Techarenan Challenge 2021</span> 4493 4494 4495 <span class="cs-blog-more-tag"><span>Company News</span></span> 4496 4497 4498 <time class="cs-blog-more-date" datetime="2021-11-10"> 4499 November 10, 2021 4500 </time> 4501 4502 4503 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4504 4505 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4506 4507 </span> 4508 4509 </a> 4510 </li> 4511 4512 4513 4514 <li class="cs-blog-more-item"> 4515 <a href="https://codescene.com/blog/3-code-health-kpis/" class="cs-blog-more-link" title="Meet the three Code Health KPIs: a unique profile of each codebase"> 4516 <span class="cs-blog-more-title-text">Meet the three Code Health KPIs: a unique profile of each codebase</span> 4517 4518 4519 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 4520 4521 4522 <time class="cs-blog-more-date" datetime="2021-08-16"> 4523 August 16, 2021 4524 </time> 4525 4526 4527 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4528 4529 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4530 4531 </span> 4532 4533 </a> 4534 </li> 4535 4536 4537 4538 <li class="cs-blog-more-item"> 4539 <a href="https://codescene.com/blog/nordic-rising-star" class="cs-blog-more-link" title="Techarenan names CodeScene as a Nordic rising star"> 4540 <span class="cs-blog-more-title-text">Techarenan names CodeScene as a Nordic rising star</span> 4541 4542 4543 <span class="cs-blog-more-tag"><span>Company News</span></span> 4544 4545 4546 <time class="cs-blog-more-date" datetime="2021-06-10"> 4547 June 10, 2021 4548 </time> 4549 4550 4551 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4552 4553 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4554 4555 </span> 4556 4557 </a> 4558 </li> 4559 4560 4561 4562 <li class="cs-blog-more-item"> 4563 <a href="https://codescene.com/blog/prioritize-technical-debt-by-impact/" class="cs-blog-more-link" title="Managing technical debt: measure the impact and prioritize improvements guided by development data"> 4564 <span class="cs-blog-more-title-text">Managing technical debt: measure the impact and prioritize improvements guided by development data</span> 4565 4566 4567 <span class="cs-blog-more-tag"><span>Technical Debt</span></span> 4568 4569 4570 <time class="cs-blog-more-date" datetime="2021-05-19"> 4571 May 19, 2021 4572 </time> 4573 4574
4575 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4576 4577 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4578 4579 </span> 4580 4581 </a> 4582 </li> 4583 4584 4585 4586 <li class="cs-blog-more-item"> 4587 <a href="https://codescene.com/blog/predicting-security-vulnerabilities-with-behavioral-code-analysis/" class="cs-blog-more-link" title="Predicting Security Vulnerabilities with Behavioral Code Analysis"> 4588 <span class="cs-blog-more-title-text">Predicting Security Vulnerabilities with Behavioral Code Analysis</span> 4589 4590 4591 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 4592 4593 4594 <time class="cs-blog-more-date" datetime="2021-04-26"> 4595 April 26, 2021 4596 </time> 4597 4598 4599 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4600 4601 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4602 4603 </span> 4604 4605 </a> 4606 </li> 4607 4608 4609 4610 <li class="cs-blog-more-item"> 4611 <a href="https://codescene.com/blog/evaluate-code-quality-at-scale/" class="cs-blog-more-link" title="Evaluate Code Quality at Scale"> 4612 <span class="cs-blog-more-title-text">Evaluate Code Quality at Scale</span> 4613 4614 4615 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 4616 4617 4618 <time class="cs-blog-more-date" datetime="2021-01-21"> 4619 January 21, 2021 4620 </time> 4621 4622 4623 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4624 4625 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4626 4627 </span> 4628 4629 </a> 4630 </li> 4631 4632 4633 4634 <li class="cs-blog-more-item"> 4635 <a href="https://codescene.com/blog/edward-cattermole/" class="cs-blog-more-link" title="Interview with Edward Cattermole, CFO Codescene">
4636 <span class="cs-blog-more-title-text">Interview with Edward Cattermole, CFO Codescene</span> 4637 4638 4639 <span class="cs-blog-more-tag"><span>Company News</span></span> 4640 4641 4642 <time class="cs-blog-more-date" datetime="2020-10-15"> 4643 October 15, 2020 4644 </time> 4645 4646 4647 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4648 4649 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4650 4651 </span> 4652 4653 </a> 4654 </li> 4655 4656 4657 4658 <li class="cs-blog-more-item"> 4659 <a href="https://codescene.com/blog/stephen-marikkar/" class="cs-blog-more-link" title="Interview with Stephen Marikkar, Customer Success Manager Codescene"> 4660 <span class="cs-blog-more-title-text">Interview with Stephen Marikkar, Customer Success Manager Codescene</span> 4661 4662 4663 <span class="cs-blog-more-tag"><span>Company News</span></span> 4664 4665 4666 <time class="cs-blog-more-date" datetime="2020-10-15"> 4667 October 15, 2020 4668 </time> 4669 4670 4671 <span class="cs-blog-more-author" data-author="CodeScene Team" title="CodeScene Team â "> 4672 4673 <img src="https://codescene.com/hubfs/CS_Favicon_192x192px.png" alt="CodeScene Team" class="cs-blog-more-author-avatar"> 4674 4675 </span> 4676 4677 </a> 4678 </li> 4679 4680 4681 4682 <li class="cs-blog-more-item"> 4683 <a href="https://codescene.com/blog/measure-code-health-of-your-codebase" class="cs-blog-more-link" title="Measure the Code Health of your Codebase: a continuous feedback loop for engineering decisions based on data"> 4684 <span class="cs-blog-more-title-text">Measure the Code Health of your Codebase: a continuous feedback loop for engineering decisions based on data</span> 4685 4686 4687 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 4688 4689 4690 <time class="cs-blog-more-date" datetime="2020-09-22"> 4691 September 22, 2020 4692 </time> 4693 4694 4695 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4696 4697 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4698 4699 </span> 4700 4701 </a> 4702 </li> 4703 4704 4705 4706 <li class="cs-blog-more-item"> 4707 <a href="https://codescene.com/blog/refactoring-guided-by-data/" class="cs-blog-more-link" title="Guide Refactoring by Data"> 4708 <span class="cs-blog-more-title-text">Guide Refactoring by Data</span> 4709 4710 4711 <span class="cs-blog-more-tag"><span>Refactoring</span></span> 4712 4713 4714 <time class="cs-blog-more-date" datetime="2020-09-10"> 4715 September 10, 2020 4716 </time> 4717 4718 4719 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4720 4721 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4722 4723 </span> 4724 4725 </a> 4726 </li> 4727 4728 4729 4730 <li class="cs-blog-more-item"> 4731 <a href="https://codescene.com/blog/measure-conways-law/" class="cs-blog-more-link" title="Measure Conway's Law with CodeScene">
4732 <span class="cs-blog-more-title-text">Measure Conway's Law with CodeScene</span> 4733 4734 4735 <span class="cs-blog-more-tag"><span>Team Dynamics</span></span> 4736 4737 4738 <time class="cs-blog-more-date" datetime="2020-08-01"> 4739 August 1, 2020 4740 </time> 4741 4742 4743 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4744 4745 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4746 4747 </span> 4748 4749 </a> 4750 </li> 4751 4752 4753 4754 <li class="cs-blog-more-item"> 4755 <a href="https://codescene.com/blog/communicate-technical-improvements-to-non-technical-stakeholders/" class="cs-blog-more-link" title="Tech Debt Management: Communicate the Effects of Technical Improvements to Non-Technical Stakeholders"> 4756 <span class="cs-blog-more-title-text">Tech Debt Management: Communicate the Effects of Technical Improvements to Non-Technical Stakeholders</span> 4757 4758 4759 <span class="cs-blog-more-tag"><span>Technical Debt</span></span> 4760 4761 4762 <time class="cs-blog-more-date" datetime="2020-04-02"> 4763 April 2, 2020 4764 </time> 4765 4766 4767 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4768 4769 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4770 4771 </span> 4772 4773 </a> 4774 </li> 4775 4776 4777 4778 <li class="cs-blog-more-item"> 4779 <a href="https://codescene.com/blog/codescene-in-github-student-developer-pack/" class="cs-blog-more-link" title="CodeScene joins the GitHub Student Developer Pack"> 4780 <span class="cs-blog-more-title-text">CodeScene joins the GitHub Student Developer Pack</span> 4781 4782 4783 <span class="cs-blog-more-tag"><span>Company News</span></span> 4784 4785 4786 <time class="cs-blog-more-date" datetime="2020-01-19"> 4787 January 19, 2020 4788 </time> 4789 4790 4791 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4792 4793 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4794 4795 </span> 4796 4797 </a> 4798 </li> 4799 4800 4801 4802 <li class="cs-blog-more-item"> 4803 <a href="https://codescene.com/blog/code-biomarkers/" class="cs-blog-more-link" title="How Healthy is Your Codebase? Introducing Code Health and Biomarkers for Software">
4804 <span class="cs-blog-more-title-text">How Healthy is Your Codebase? Introducing Code Health and Biomarkers for Software</span> 4805 4806 4807 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 4808 4809 4810 <time class="cs-blog-more-date" datetime="2020-01-02"> 4811 January 2, 2020 4812 </time> 4813 4814 4815 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4816 4817 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4818 4819 </span> 4820 4821 </a> 4822 </li> 4823 4824 4825 4826 <li class="cs-blog-more-item"> 4827 <a href="https://codescene.com/blog/codescene-predict-future-code-quality-issues/" class="cs-blog-more-link" title="Predicting Code Quality Issues Before They Happen: A Minority Report for Code"> 4828 <span class="cs-blog-more-title-text">Predicting Code Quality Issues Before They Happen: A Minority Report for Code</span> 4829 4830 4831 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 4832 4833 4834 <time class="cs-blog-more-date" datetime="2019-11-25"> 4835 November 25, 2019 4836 </time> 4837 4838 4839 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4840 4841 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4842 4843 </span> 4844 4845 </a> 4846 </li> 4847 4848 4849 4850 <li class="cs-blog-more-item"> 4851 <a href="https://codescene.com/blog/codescene-compared-to-static-analysis/" class="cs-blog-more-link" title="How Does CodeScene Compare To Static Code Analysis and SonarQube?"> 4852 <span class="cs-blog-more-title-text">How Does CodeScene Compare To Static Code Analysis and SonarQube?</span> 4853 4854 4855 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 4856 4857 4858 <time class="cs-blog-more-date" datetime="2019-09-05"> 4859 September 5, 2019 4860 </time> 4861 4862 4863 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4864 4865 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4866 4867 </span> 4868 4869 </a> 4870 </li> 4871 4872 4873 4874 <li class="cs-blog-more-item"> 4875 <a href="https://codescene.com/blog/validation-for-behavioral-code-analysis/" class="cs-blog-more-link" title="Better than silver bullets: A milestone for behavioral code analysis">
4876 <span class="cs-blog-more-title-text">Better than silver bullets: A milestone for behavioral code analysis</span> 4877 4878 4879 <span class="cs-blog-more-tag"><span>Code Quality</span></span> 4880 4881 4882 <time class="cs-blog-more-date" datetime="2019-08-27"> 4883 August 27, 2019 4884 </time> 4885 4886 4887 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4888 4889 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4890 4891 </span> 4892 4893 </a> 4894 </li> 4895 4896 4897 4898 <li class="cs-blog-more-item"> 4899 <a href="https://codescene.com/blog/visualize-brooks-law/" class="cs-blog-more-link" title="Visualize Brooks's Law: When more people make a late software project later"> 4900 <span class="cs-blog-more-title-text">Visualize Brooks's Law: When more people make a late software project later</span> 4901 4902 4903 <span class="cs-blog-more-tag"><span>Team Dynamics</span></span> 4904 4905 4906 <time class="cs-blog-more-date" datetime="2019-06-11"> 4907 June 11, 2019 4908 </time> 4909 4910 4911 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4912 4913 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4914 4915 </span> 4916 4917 </a> 4918 </li> 4919 4920 4921 4922 <li class="cs-blog-more-item"> 4923 <a href="https://codescene.com/blog/manage-technical-debt-with-augmented-code-analysis/" class="cs-blog-more-link" title="Managing Technical Debt With Augmented Code Analysis"> 4924 <span class="cs-blog-more-title-text">Managing Technical Debt With Augmented Code Analysis</span> 4925 4926 4927 <span class="cs-blog-more-tag"><span>Technical Debt</span></span> 4928 4929 4930 <time class="cs-blog-more-date" datetime="2019-01-02"> 4931 January 2, 2019 4932 </time> 4933 4934 4935 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4936 4937 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4938 4939 </span> 4940 4941 </a> 4942 </li> 4943 4944 4945 4946 <li class="cs-blog-more-item"> 4947 <a href="https://codescene.com/blog/happy-birthday-3-years/" class="cs-blog-more-link" title="CodeScene: The First Three Years of a Bootstrapped Startup">
4948 <span class="cs-blog-more-title-text">CodeScene: The First Three Years of a Bootstrapped Startup</span> 4949 4950 4951 <span class="cs-blog-more-tag"><span>Company News</span></span> 4952 4953 4954 <time class="cs-blog-more-date" datetime="2018-10-16"> 4955 October 16, 2018 4956 </time> 4957 4958 4959 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4960 4961 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4962 4963 </span> 4964 4965 </a> 4966 </li> 4967 4968 4969 4970 <li class="cs-blog-more-item"> 4971 <a href="https://codescene.com/blog/codescene-in-research/" class="cs-blog-more-link" title="CodeScene in Research"> 4972 <span class="cs-blog-more-title-text">CodeScene in Research</span> 4973 4974 4975 <span class="cs-blog-more-tag"><span>Research</span></span> 4976 4977 4978 <time class="cs-blog-more-date" datetime="2018-03-27"> 4979 March 27, 2018 4980 </time> 4981 4982 4983 <span class="cs-blog-more-author" data-author="Adam Tornhill" title="Adam Tornhill â Adam Tornhill is a programmer who combines degrees in engineering and psychology. Heâs the founder and CTO of CodeScene where he designs tools for code analysis. Adam is also a recognized international speaker and the author of multiple technical books, including the best selling Your Code as a Crime Scene and Software Design X-Rays. Adamâs other interests include modern history, music, retro computing, and martial arts."> 4984 4985 <img src="https://codescene.com/hubfs/Adam%20Tornhill%20Founder%20and%20CTO%20CodeScene.svg" alt="Adam Tornhill" class="cs-blog-more-author-avatar"> 4986 4987 </span> 4988 4989 </a> 4990 </li> 4991 4992 4993 </ul> 4994 4995 4996 <div id="cs-blog-more-load"> 4997 <button id="cs-more-news-btn" type="button" class="button btn-secondary-white">Load more</button> 4998 </div> 4999 </div> 5000 </div> 5001 </div> 5002</div> 5003 5004 5005 5006 5007 5008 </div> 5009 </section> 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 </div> 5020</main> 5021 5022 5023 5024 5025 <div data-global-resource-path="Child Themes/Elements/templates/partials/cs-footer.html"><footer class="cs-footer"> 5026 <div class="cs-footer-inner"> 5027 <div class="cs-footer-container"> 5028 <div class="cs-footer-content"> 5029 <div class="cs-footer-columns"> 5030 <div class="cs-footer-column-group"> 5031 5032 <section class="cs-footer-column product-column"> 5033 <div class="column-title">Product</div> 5034 <nav class="cs-footer-links"> 5035 <a href="https://codescene.io/projects/32159/jobs/3156659/results/code/hotspots/system-map?_[%E2%80%A6]47059653394.1&__hssc=79299531.2.1747059653394&__hsfp=832010880" class="cs-footer-link hide">Guided demo tour</a> 5036 <a href="https://codescene.com/product/how-it-works" class="cs-footer-link">How it works</a> 5037 <a href="https://codescene.com/product/code-health" class="cs-footer-link">Code Healthâ¢</a> 5038 <a href="https://codescene.com/product/behavioral-code-analysis" class="cs-footer-link">Behavioral code analysis</a> 5039 <a href="https://codescene.com/product/automated-code-health-reviews" class="cs-footer-link">Automated code reviews</a> 5040 <a href="https://codescene.com/product/integrations/ide-extensions" class="cs-footer-link">IDE extensions</a> 5041 <a href="https://codescene.com/product/codescene-for-open-source" class="cs-footer-link">Open source</a> 5042 <a href="https://codescene.com/product/integrations" class="cs-footer-link">All integrations</a> 5043 <a href="https://codescene.com/product/deploying-codescene" class="cs-footer-link">Deployment</a> 5044 <a href="https://codescene.com/enterprise" class="cs-footer-link">Enterprise</a> 5045 <a href="https://codescene.com/pricing" class="cs-footer-link">Pricing</a> 5046 </nav> 5047 </section> 5048 </div> 5049 5050 <div class="cs-footer-column-group">
5051 <section class="cs-footer-column solutions-column"> 5052 <div class="column-title">Use cases</div> 5053 <nav class="cs-footer-links"> 5054 <a href="https://codescene.com/use-cases/technical-debt-management" class="cs-footer-link">Technical debt mangement</a> 5055 <a href="https://codescene.com/product/automated-code-health-reviews" class="cs-footer-link">Automated code health reviews</a> 5056 <a href="https://codescene.com/product/integrations/ide-extensions" class="cs-footer-link">Real-time tech debt prevention</a> 5057 <a href="https://codescene.com/use-cases/ai-code-quality" class="cs-footer-link">AI code quality</a> 5058 <a href="https://codescene.com/use-cases/code-quality-improvement" class="cs-footer-link">Code quality improvement </a> 5059 <a href="https://codescene.com/use-cases/measure-code-coverage" class="cs-footer-link">Measure code coverage</a> 5060 </nav> 5061 </section> 5062 5063 <section class="cs-footer-column help-column"> 5064 <div class="column-title">More insights</div> 5065 <nav class="cs-footer-links"> 5066 <a href="https://codescene.com/product/integrations/ide-extensions/ai-refactoring" class="cs-footer-link">AI-powered refactoring</a> 5067 <a href="https://codescene.com/use-cases/refactoring-targets" class="cs-footer-link">Identify refactoring targets</a> 5068 <a href="https://codescene.com/use-cases/sonarqube-vs-codescene" class="cs-footer-link">SonarQube vs. CodeScene</a> 5069 </nav> 5070 </section> 5071 </div> 5072 5073 <div class="cs-footer-column-group"> 5074 <section class="cs-footer-column resources-column"> 5075 <div class="column-title">Resources</div> 5076 <nav class="cs-footer-links"> 5077 <a href="https://codescene.com/resources/tutorials" class="cs-footer-link">Tutorials, podcasts, talks</a> 5078 <a href="https://codescene.com/resources/academy" class="cs-footer-link">CodeScene Academy</a> 5079 <a href="https://codescene.com/resources/github-students" class="cs-footer-link">Students</a> 5080 <a href="https://codescene.com/blog" class="cs-footer-link">Blog</a> 5081 </nav> 5082 </section> 5083 5084 <section class="cs-footer-column try-column"> 5085 <div class="column-title">Try CodeScene</div> 5086 <nav class="cs-footer-links"> 5087 <a href="https://codescene.com/product/free-trial" class="cs-footer-link">Start free trial</a> 5088 <a href="https://codescene.com/product/request-demo" class="cs-footer-link">Request demo</a> 5089 <a href="https://codescene.com/product/talk-to-sales" class="cs-footer-link">Talk to sales</a> 5090 </nav> 5091 </section> 5092 5093 <section class="cs-footer-column research-column"> 5094 <div class="column-title">Research</div> 5095 <nav class="cs-footer-links"> 5096 <a href="https://codescene.com/resources/research-and-insights" class="cs-footer-link">Research and insights</a> 5097 <a href="https://codescene.com/resources/gartner-report-reduce-technical-debt-and-improve-quality" class="cs-footer-link">Gartner Report®</a> 5098 <a href="https://codescene.com/blog/6x-improvement-over-sonarqube" class="cs-footer-link">6x improvement over SonarQube</a> 5099 </nav> 5100 </section> 5101 </div> 5102 5103 <div class="cs-footer-column-group"> 5104 <section class="cs-footer-column company-column"> 5105 <div class="column-title">CodeScene</div> 5106 <nav class="cs-footer-links"> 5107 <a href="https://codescene.com/company" class="cs-footer-link">Company</a> 5108 <a href="https://codescene.com/resources/customers" class="cs-footer-link">Customers</a> 5109 <a href="https://codescene.com/partners" class="cs-footer-link">Partners</a> 5110 <a href="https://codescene.com/policies" class="cs-footer-link">Security and privacy</a> 5111 </nav> 5112 </section> 5113 5114 <section class="cs-footer-column help-column"> 5115 <div class="column-title">Help</div> 5116 <nav class="cs-footer-links"> 5117 <a href="https://codescene.io/docs/index.html" class="cs-footer-link">Documentation</a> 5118 <a href="https://helpcenter.codescene.com/en/help" class="cs-footer-link">Help center</a> 5119 <a href="https://codescene.com/company/contact-us" class="cs-footer-link">Contact us</a> 5120 <a href="https://codescene.com/resources/faq" class="cs-footer-link">FAQs</a> 5121 </nav> 5122 </section> 5123
5124 <section class="cs-footer-column social-column"> 5125 <div class="social-icons"> 5126 <a href="https://www.linkedin.com/company/codescene" aria-label="LinkedIn"> 5127 <svg width="24" height="24" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 5128 <path d="M6.25 7.81225C6.25 8.53692 6.83301 9.1245 7.55249 9.1245C8.27197 9.1245 8.85463 8.53692 8.85463 7.81225C8.85463 7.08758 8.27197 6.5 7.55249 6.5C6.83301 6.5 6.25 7.08758 6.25 7.81225Z" fill="#98A2B3" /> 5129 <path d="M8.5 17H6.5V10H8.5V17Z" fill="#98A2B3" /> 5130 <path d="M17.5 17H15.2585V13.4344C15.2585 12.4568 14.8608 11.9104 14.0323 11.9104C13.131 11.9104 12.6602 12.479 12.6602 13.4344V17H10.5V10.2075H12.6602V11.1225C12.6602 11.1225 13.3097 10 14.853 10C16.3956 10 17.5 10.8798 17.5 12.6994V17Z" fill="#98A2B3" /> 5131 <path fill-rule="evenodd" clip-rule="evenodd" d="M5 2C3.34315 2 2 3.34315 2 5V19C2 20.6569 3.34315 22 5 22H19C20.6569 22 22 20.6569 22 19V5C22 3.34315 20.6569 2 19 2H5ZM4 5C4 4.44772 4.44772 4 5 4H19C19.5523 4 20 4.44772 20 5V19C20 19.5523 19.5523 20 19 20H5C4.44772 20 4 19.5523 4 19V5Z" fill="#98A2B3" /> 5132 </svg> 5133 </a> 5134 <a href="https://www.youtube.com/channel/UCLIqCfSAHnkZ8PMjAUGIbdw" aria-label="YouTube"> 5135 <svg width="24" height="24" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 5136 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.14032 6.62102C3.98953 6.66917 3.85222 6.75238 3.73994 6.864C3.62327 6.97997 3.53744 7.12281 3.48999 7.27964C2.8307 10.3924 2.8307 13.6076 3.48999 16.7204C3.53744 16.8772 3.62327 17.02 3.73994 17.136C3.85222 17.2476 3.98953 17.3308 4.14032 17.379C9.34503 18.2288 14.6544 18.2288 19.8591 17.379C20.0099 17.3308 20.1472 17.2476 20.2594 17.136C20.3761 17.02 20.462 16.8771 20.5094 16.7203C21.1695 13.6072 21.1695 10.3928 20.5094 7.27973C20.462 7.12287 20.3761 6.98 20.2594 6.864C20.1472 6.75238 20.0099 6.66917 19.8591 6.62102C14.6544 5.77122 9.34503 5.77122 4.14032 6.62102ZM3.75489 4.67374C9.21428 3.77542 14.7851 3.77542 20.2445 4.67374C20.2785 4.67933 20.3121 4.68667 20.3454 4.69572C20.8464 4.83228 21.3031 5.09613 21.6705 5.46133C22.0379 5.82653 22.3033 6.28049 22.4407 6.77858C22.4458 6.79719 22.4504 6.81595 22.4544 6.83484C23.1819 10.2407 23.1819 13.7593 22.4544 17.1652C22.4504 17.184 22.4458 17.2028 22.4407 17.2214C22.3033 17.7195 22.0379 18.1735 21.6705 18.5387C21.3031 18.9039 20.8464 19.1677 20.3454 19.3043C20.3121 19.3133 20.2785 19.3207 20.2445 19.3263C14.7851 20.2246 9.21428 20.2246 3.75489 19.3263C3.7209 19.3207 3.68723 19.3133 3.65401 19.3043C3.15295 19.1677 2.69627 18.9039 2.32889 18.5387C1.96152 18.1735 1.69609 17.7195 1.55871 17.2214C1.55356 17.2027 1.54896 17.1839 1.54491 17.1649C0.818363 13.7595 0.818363 10.2405 1.54491 6.83505C1.54896 6.8161 1.55356 6.79726 1.55871 6.77858C1.69609 6.28049 1.96152 5.82653 2.32889 5.46133C2.69627 5.09613 3.15295 4.83228 3.65401 4.69572C3.68723 4.68667 3.7209 4.67933 3.75489 4.67374Z" fill="#98A2B3" /> 5137 <path fill-rule="evenodd" clip-rule="evenodd" d="M11.2774 9.58398C11.1239 9.48169 10.9266 9.47215 10.7641 9.55916C10.6015 9.64617 10.5 9.8156 10.5 10V14C10.5 14.1844 10.6015 14.3538 10.7641 14.4408C10.9266 14.5278 11.1239 14.5183 11.2774 14.416L14.2774 12.416C14.4164 12.3233 14.5 12.1672 14.5 12C14.5 11.8328 14.4164 11.6767 14.2774 11.584L11.2774 9.58398Z" fill="#98A2B3" /> 5138 </svg> 5139 </a> 5140 <a href="https://x.com/codescene" aria-label="X (Twitter)"> 5141 <svg width="24" height="24" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 5142 <path fill-rule="evenodd" clip-rule="evenodd" d="M18.9118 4.92014L14.2198 10.1748L20.8869 20H13.9699L10.2899 14.5768L5.07975 20.412L3.5879 19.0799L9.13214 12.8706L3.11279 4H10.0298L13.062 8.46857L17.42 3.58804L18.9118 4.92014ZM6.88692 6L15.0298 18H17.1128L8.96994 6H6.88692Z" fill="#98A2B3" /> 5143 </svg> 5144 </a> 5145 </div> 5146 </section> 5147 </div> 5148 </div> 5149 5150 <div class="cs-footer-bottom"> 5151 <div class="cs-footer-logo"> 5152 <svg width="1280" height="auto" viewbox="0 0 1280 197" fill="none" xmlns="http://www.w3.org/2000/svg"> 5153 <path d="M133.12 69.2777L133.521 71.1167L159.222 65.4497L158.822 63.619C151.422 29.8213 123.209 8.26085 84.8768 8.26085C63.1368 8.26085 41.9058 15.508 26.0931 30.3326C10.2549 45.1812 0 67.4946 0 97.3216C0 127.14 10.1973 149.452 26.0087 164.3C41.7951 179.125 63.0275 186.371 84.8768 186.371C122.531 186.371 149.988 165.51 158.802 132.487L159.313 130.57L133.358 125.175L132.914 126.911C129.986 138.359 124.338 147.275 116.295 153.338C108.248 159.406 97.6535 162.732 84.6434 162.732C67.8109 162.732 53.3828 156.997 43.1539 146.07C32.9168 135.134 26.7092 118.808 26.7092 97.3106C26.7092 75.9325 32.8597 59.6079 43.0697 48.6447C53.27 37.6919 67.6968 31.9003 84.6434 31.9003C97.6373 31.9003 108.456 35.3911 116.649 41.7423C124.836 48.0887 130.535 57.3956 133.12 69.2777Z" fill="white" /> 5154 <path fill-rule="evenodd" clip-rule="evenodd" d="M174.121 121.359C174.121 159.132 200.909 186.593 238.376 186.593C275.827 186.593 303.087 159.14 303.087 121.359C302.847 83.5883 275.827 56.1148 238.376 56.1148C200.67 56.1148 174.121 83.5911 174.121 121.359ZM238.376 164.334C226.584 164.334 216.777 159.908 209.905 152.4C203.022 144.877 198.975 134.136 198.975 121.348C198.975 108.566 203.021 97.8278 209.905 90.3062C216.777 82.7984 226.584 78.374 238.376 78.374C250.169 78.374 259.972 82.7983 266.842 90.3072C273.723 97.8299 277.766 108.571 277.766 121.359C277.766 134.142 273.723 144.88 266.842 152.401C259.972 159.909 250.169 164.334 238.376 164.334Z" fill="white" /> 5155 <path fill-rule="evenodd" clip-rule="evenodd" d="M418.043 72.0879C409.088 62.4804 394.478 56.0708 379.576 56.0708C360.079 56.0708 344.764 63.0841 334.341 74.8601C323.946 86.6068 318.566 102.925 318.566 121.315C318.566 139.706 323.95 156.022 334.377 167.767C344.83 179.54 360.205 186.548 379.809 186.548C395.529 186.548 410.166 180.248 418.044 171.063V184.705H442.43
51551V8.66938H418.033L418.043 72.0879ZM354.188 152.639C360.818 160.042 370.321 164.3 381.887 164.3C393.451 164.3 402.899 160.045 409.501 152.641C416.121 145.218 420.011 134.477 420.121 121.311C420.121 108.146 416.232 97.4087 409.587 89.9875C402.958 82.5848 393.454 78.33 381.887 78.33C370.206 78.33 360.706 82.5898 354.108 89.9888C347.49 97.4091 343.653 108.147 343.653 121.315C343.653 134.476 347.543 145.215 354.188 152.639Z" fill="white" /> 5156 <path fill-rule="evenodd" clip-rule="evenodd" d="M584.039 147.481L584.507 145.634L561.36 140.135L560.919 141.949C559.169 149.144 555.259 154.753 549.601 158.586C543.922 162.434 536.369 164.565 527.265 164.565C516.625 164.565 507.679 160.652 501.212 153.846C495.09 147.403 491.098 138.266 490.105 127.155H586.918L587.097 125.479C587.328 123.331 587.575 118.87 587.575 115.805C587.575 83.1339 564.278 56.1148 526.799 56.1148C507.74 56.1148 492.328 63.4383 481.696 75.3277C471.087 87.1942 465.332 103.501 465.332 121.359C465.332 157.132 489.193 186.593 527.265 186.593C556.207 186.593 577.748 172.314 584.039 147.481ZM503.601 85.4271C497.973 90.3114 493.794 97.2926 491.594 106.067H561.542C560.338 97.9719 556.859 91.024 551.434 85.9899C545.563 80.5414 537.285 77.2147 526.799 77.2147C517.591 77.2147 509.695 80.1389 503.601 85.4271Z" fill="white" /> 5157 <path d="M705.283 63.0682L704.865 60.8447C703.204 52.0057 698.909 44.8531 692.52 39.8982C686.123 34.9364 677.506 32.088 667.066 32.088C656.29 32.088 647.904 34.4101 642.266 38.3888C636.7 42.3179 633.698 47.9328 633.698 54.9443C633.698 59.3628 635.069 62.7889 637.449 65.6091C639.868 68.4751 643.404 70.8018 647.85 72.8264C654.293 75.7599 662.235 77.8978 670.788 80.1999L670.796 80.202L670.8 80.2032L670.805 80.2044C674.176 81.1121 677.643 82.0454 681.149 83.063C693.382 86.613 705.923 91.1591 715.401 99.2758C724.983 107.482 731.308 119.225 731.308 136.806C731.308 151.848 724.889 164.36 713.626 173.063C702.405 181.734 686.491 186.548 667.532 186.548C633.769 186.548 606.5 164.918 600.762 132.741L600.473 131.122L625.25 123.251L625.568 125.441C628.915 148.585 646.45 163.373 668.22 163.373C679.669 163.373 688.865 160.714 695.147 156.158C701.371 151.644 704.832 145.205 704.832 137.27C704.832 131.936 703.42 127.705 700.994 124.211C698.55 120.692 695.009 117.822 690.611 115.351C682.986 111.067 673.151 108.168 662.745 105.1C661.042 104.598 659.324 104.091 657.597 103.573C645.476 99.9366 633.017 95.752 623.603 88.5504C614.06 81.2494 607.689 70.8828 607.689 55.1761C607.689 41.2626 613.959 29.5696 624.562 21.4037C635.131 13.2642 649.935 8.66938 667.066 8.66938C698.98 8.66938 724.121 25.944 728.736 52.313L729.001 53.8272L705.283 63.0682Z" fill="white" /> 5158 <path d="M840.737 102.472L841.063 104.384L865.161 99.467L864.835 97.6605C860.241 72.3136 838.439 56.1148 808.965 56.1148C790.203 56.1148 774.449 62.5802 763.387 74.0635C752.331 85.5404 746.11 101.876 746.11 121.359C746.11 140.723 752.334 157.054 763.386 168.556C774.444 180.066 790.198 186.593 808.965 186.593C823.434 186.593 836.073 182.806 845.812 175.649C855.567 168.483 862.302 158.011 865.057 144.865L865.444 143.023L841.604 138.102L841.218 139.929C839.561 147.748 835.78 153.813 830.431 157.934C825.073 162.061 818.016 164.334 809.666 164.334C798.099 164.334 788.658 160.079 782.088 152.681C775.499 145.261 771.664 134.522 771.664 121.348C771.664 108.173 775.445 97.4368 782.003 90.0216C788.54 82.6303 797.979 78.374 809.666 78.374C826.246 78.374 838.352 88.4487 840.737 102.472Z" fill="white" /> 5159 <path fill-rule="evenodd" clip-rule="evenodd" d="M999.285 145.634L998.817 147.481C992.526 172.314 970.984 186.593 942.042 186.593C903.97 186.593 880.122 157.132 880.122 121.359C880.122 103.501 885.872 87.1944 896.479 75.3278C907.107 63.4384 922.518 56.1148 941.577 56.1148C979.078 56.1148 1002.35 83.1344 1002.35 115.805C1002.35 118.864 1002.12 123.33 1001.87 125.489L1001.69 127.155H904.882C905.876 138.266 909.868 147.403 915.989 153.846C922.457 160.652 931.403 164.565 942.042 164.565C951.147 164.565 958.698 162.434 964.379 158.586C970.037 154.753 973.947 149.144 975.697 141.949L976.138 140.135L999.285 145.634ZM906.372 106.067C908.572 97.2926 912.751 90.3114 918.379 85.4271C924.471 80.1389 932.369 77.2147 941.577 77.2147C952.063 77.2147 960.341 80.5414 966.212 85.9899C971.636 91.024 975.116 97.9719 976.321 106.06
51597H906.372Z" fill="white" /> 5160 <path d="M1135.66 184.505V101.258C1135.78 87.8475 1131.09 76.521 1122.92 68.5589C1114.76 60.6014 1103.26 56.1148 1089.96 56.1148C1072.78 56.1148 1058.79 64.5062 1049.64 76.7577V57.9697H1025.25V184.505H1049.64V128.745C1049.64 112.818 1053.24 100.245 1059.46 91.706C1065.63 83.2292 1074.46 78.6059 1085.33 78.6059C1093.57 78.6059 1100.01 81.4431 1104.4 86.0817C1108.8 90.7342 1111.28 97.3538 1111.28 105.161V184.505H1135.66Z" fill="white" /> 5161 <path fill-rule="evenodd" clip-rule="evenodd" d="M1276.93 147.71L1276.46 149.557C1270.18 174.391 1248.63 188.657 1219.69 188.657C1181.63 188.657 1157.77 159.196 1157.77 123.424C1157.77 105.571 1163.52 89.2673 1174.13 77.4022C1184.76 65.514 1200.17 58.1906 1219.23 58.1906C1237.9 58.1906 1253.12 64.8399 1263.67 75.6632C1274.22 86.4758 1280 101.352 1280 117.638C1280 120.487 1279.76 124.939 1279.52 127.527L1279.36 129.231H1182.53C1183.52 140.342 1187.51 149.48 1193.63 155.923C1200.1 162.728 1209.05 166.641 1219.69 166.641C1228.8 166.641 1236.35 164.51 1242.02 160.661C1247.68 156.826 1251.6 151.215 1253.34 144.015L1253.79 142.2L1276.93 147.71ZM1184.02 107.9H1253.97C1252.77 99.8101 1249.29 92.8624 1243.86 87.8269C1237.99 82.3768 1229.71 79.0476 1219.23 79.0476C1210.02 79.0476 1202.12 81.9717 1196.03 87.2602C1190.4 92.1447 1186.22 99.1259 1184.02 107.9Z" fill="white" /> 5162 </svg> 5163 </div> 5164 5165 <div class="cs-footer-info"> 5166 <div class="copyright-container"> 5167 <div class="copyright"> 5168 <span>Copyright</span> 5169 <span>
5169<script>document.write(new Date().getFullYear())</script>
5169</span> 5170 <span>© CodeScene AB</span> 5171 </div> 5172 </div> 5173 <div class="legal-links"> 5174 <a href="https://codescene.com/hubfs/web_docs/CodeScene-Mutual-Non-Disclosure-Agreement.pdf">Confidentiality</a> 5175 <a href="https://codescene.com/hubfs/web_docs/CodeScene_Terms-and-Conditions.pdf">Terms & Conditions</a> 5176 <a href="https://codescene.com/hubfs/web_docs/CodeScene_Privacy_Policy.pdf">Privacy Policy</a> 5177 </div> 5178 </div> 5179 </div> 5180 </div> 5181 </div> 5182 </div> 5183</footer></div> 5184 5185 </div> 5186 5187 5188 5189 5190<!-- HubSpot performance collection script -->
5191<script defer src="/hs/hsstatic/content-cwv-embed/static-1.1293/embed.js"></script>
vendor: 1 bytes, line 5191
5191
5192<script src="https://codescene.com/hubfs/hub_generated/template_assets/1/145633512075/1790689618699/template_main.min.js"></script>
vendor: 1 bytes, line 5192
5192
5193<script src="https://codescene.com/hubfs/hub_generated/template_assets/1/145628309940/1790689615634/template_child-script.min.js"></script>
vendor: 1 bytes, line 5193
5193
5194<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
vendor: 1 bytes, line 5194
5194
5195<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>
vendor: 1 bytes, line 5195
5195
5196<script> 5197var hsVars = hsVars || {}; hsVars['language'] = 'en'; 5198</script>
5198 5199
5200<script src="/hs/hsstatic/cos-i18n/static-1.53/bundles/project.js"></script>
vendor: 1 bytes, line 5200
5200
5201<script src="https://codescene.com/hubfs/hub_generated/module_assets/1/208977694528/1782833577074/module_CS-v2_Header.min.js"></script>
5201 5202
5203<script> 5204 document.addEventListener("DOMContentLoaded", function () { 5205 const overlay = document.querySelector(".csb-elements-overlay-search"); 5206 const showBtn = document.querySelector(".csb-showBtn"); 5207 5208 if (!overlay || !showBtn) return; 5209 5210 const searchInput = overlay.querySelector("input[name='term']"); 5211 const searchGroup = overlay.querySelector(".csb-elements-search-modal-group"); 5212 5213 // Open search overlay 5214 showBtn.addEventListener("click", function () { 5215 overlay.style.display = "block"; 5216 if (searchInput) searchInput.focus(); 5217 }); 5218 5219 // Close search overlay on outside click 5220 overlay.addEventListener("click", function (event) { 5221 // Close only if the click is *outside* the search group 5222 if (!searchGroup || !searchGroup.contains(event.target)) { 5223 overlay.style.display = "none"; 5224 } 5225 }); 5226 5227 // ESC key to close 5228 document.addEventListener("keydown", function (e) { 5229 if (e.key === "Escape") { 5230 overlay.style.display = "none"; 5231 } 5232 }); 5233 }); 5234</script>
5234 5235 5236
5237<script> 5238 document.addEventListener('DOMContentLoaded', function () { 5239 const LIST_ID = 'cs-more-news-list'; 5240 const BTN_ID = 'cs-more-news-btn'; 5241 const BATCH = 20; 5242 5243 const list = document.getElementById(LIST_ID); 5244 const btn = document.getElementById(BTN_ID); 5245 if (!list || !btn) return; 5246 5247 const items = Array.from(list.querySelectorAll('li.cs-blog-more-item')); 5248 if (!items.length) { btn.remove(); return; } 5249 5250 // Hide everything after the first batch 5251 let shown = Math.min(BATCH, items.length); 5252 for (let i = BATCH; i < items.length; i++) { 5253 items[i].classList.add('cs-hidden'); 5254 } 5255 if (shown >= items.length) btn.remove(); // nothing to load 5256 5257 btn.addEventListener('click', function () { 5258 const next = Math.min(shown + BATCH, items.length); 5259 for (let i = shown; i < next; i++) { 5260 items[i].classList.remove('cs-hidden'); 5261 } 5262 shown = next; 5263 5264 if (shown >= items.length) { 5265 btn.remove(); // all revealed 5266 } 5267 }); 5268 }); 5269</script>
5269 5270 5271 5272<!-- Start of HubSpot Analytics Code -->
5273<script type="text/javascript"> 5274var _hsq = _hsq || []; 5275_hsq.push(["setContentType", "listing-page"]); 5276_hsq.push(["setCanonicalUrl", "https:\/\/codescene.com\/blog"]); 5277_hsq.push(["setPageId", "57110285733"]); 5278_hsq.push(["setContentMetadata", { 5279 "contentPageId": 57110285733, 5280 "legacyPageId": "57110285733", 5281 "contentFolderId": null, 5282 "contentGroupId": 57110285732, 5283 "abTestId": null, 5284 "languageVariantId": 57110285733, 5285 "languageCode": "en", 5286 5287 5288}]); 5289</script>
5289 5290
5291<script type="text/javascript" id="hs-script-loader" async defer src="/hs/scriptloader/7007026.js"></script>
5291 5292<!-- End of HubSpot Analytics Code --> 5293 5294
5295<script type="text/javascript"> 5296var hsVars = { 5297 render_id: "7f5120e9-1ee1-4a5d-9b0a-d301d66955fa", 5298 ticks: 1790689938486, 5299 page_id: 57110285733, 5300 5301 content_group_id: 57110285732, 5302 portal_id: 7007026, 5303 app_hs_base_url: "https://app.hubspot.com", 5304 cp_hs_base_url: "https://cp.hubspot.com", 5305 language: "en", 5306 analytics_page_type: "listing-page", 5307 scp_content_type: "", 5308 5309 analytics_page_id: "57110285733", 5310 category_id: 7, 5311 folder_id: 0, 5312 is_hubspot_user: false 5313} 5314</script>
5314 5315 5316
5317<script defer src="/hs/hsstatic/HubspotToolsMenu/static-1.640/js/index.js"></script>
5317 5318 5319 5320<div id="fb-root"></div> 5321
5321<script>(function(d, s, id) { 5322 var js, fjs = d.getElementsByTagName(s)[0]; 5323 if (d.getElementById(id)) return; 5324 js = d.createElement(s); js.id = id; 5325 js.src = "//connect.facebook.net/en_GB/sdk.js#xfbml=1&version=v3.0"; 5326 fjs.parentNode.insertBefore(js, fjs); 5327 }(document, 'script', 'facebook-jssdk'));</script>
5327
5327<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
5327 5328 5329 5330 5331 5332 5333 5334
5334<script> 5335 var header = document.getElementById("header"); 5336 var sticky = header.offsetTop; 5337 if (window.matchMedia("(max-width: 768px)").matches) { 5338 window.onscroll = function() { addSticky() }; 5339 } else if (window.matchMedia("(min-width:769px) and (max-width: 1000px)").matches) { 5340 window.onscroll = function() { addSticky() }; 5341 } else if (window.matchMedia("(min-width: 1001px)").matches) { 5342 window.onscroll = function() { addSticky() }; 5343 } 5344 5345 function addSticky() { 5346 if (document.body.scrollTop > 1 || document.documentElement.scrollTop > 1) { 5347 header.classList.add("cs-sticky"); 5348 } else { 5349 header.classList.remove("cs-sticky"); 5350 } 5351 } 5352 </script>
5352 5353 5354
5354<script> 5355 (function () { 5356 var header = document.getElementById("header"); 5357 if (!header) return; 5358 5359 function onBlog() { 5360 var p = location.pathname; 5361 return p === "/blog" || p.indexOf("/blog/") === 0; 5362 } 5363 5364 // Force sticky immediately on blog pages 5365 if (onBlog()) { 5366 header.classList.add("cs-sticky"); 5367 } 5368 5369 // Keep original behavior for non-blog pages 5370 function addSticky() { 5371 if (onBlog()) { 5372 header.classList.add("cs-sticky"); 5373 return; 5374 } 5375 if (document.body.scrollTop > 1 || document.documentElement.scrollTop > 1) { 5376 header.classList.add("cs-sticky"); 5377 } else { 5378 header.classList.remove("cs-sticky"); 5379 } 5380 } 5381 5382 // Bind scroll + run once (covers non-blog initial state) 5383 window.addEventListener("scroll", addSticky, { passive: true }); 5384 document.addEventListener("DOMContentLoaded", addSticky); 5385 })(); 5386</script>
5386 5387 5388 5389 <!-- PRODUCTION GTM TRACKING CODE -->
vendor: 74 bytes, lines 5389-5390
5389 5390 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
5390GTM-P6FD3JJ5
vendor: 91 bytes, lines 5390-5392
5390" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 5391 5392
5393</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.