PageSourceSearch

https://codescene.com/blog

html codescene.com collected 2026-10-02 05:25:46 UTC 307,880 bytes, 5,393 lines download raw bytes

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>&lt;img  src="https://secure.leadforensics.com/794635.png" style="display:none;"&gt;</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&amp;min-change-freq=0&amp;showHotspotsOnly=false&amp;min-coverage=0.00&amp;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="{&quot;codescene-team&quot;:&quot;CodeScene Team&quot;}">
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 -&nbsp;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™&nbsp;into Technical Assessments">
3656                  <span class="cs-blog-more-title-text">New Codility–CodeScene Partnership Brings CodeHealth™&nbsp;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 -&nbsp;Raising the Maintainability bar">
4112                  <span class="cs-blog-more-title-text">6X improvement over SonarQube -&nbsp;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&amp;__hssc=79299531.2.1747059653394&amp;__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 &amp; 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.