PageSourceSearch

https://www.smartcitiesdive.com/about/

html smartcitiesdive.com collected 2026-09-24 08:29:27 UTC 137,389 bytes, 3,052 lines download raw bytes

1
2
3
4
5
6
7
8
9
10
11<!DOCTYPE html>
12<html class="no-js" dir="ltr" lang="en" prefix="og: https://ogp.me/ns# fb: https://ogp.me/ns/fb#">
13    <head>
14        <meta charset="utf-8">
15        <meta http-equiv="x-ua-compatible" content="ie=edge">
16        <meta name="viewport" content="width=device-width, initial-scale=1.0">
17        
18        
19
20        
21
22        
23        
24        
25        
26            <title>About Us | Smart Cities Dive</title>
27        
28
29        
30            
31                <meta name="description" content="Smart Cities Dive provides in-depth journalism and insight into the most impactful news and trends shaping smart cities"/>
32            
33        
34
35        
36
37        
38
39        
40            <meta property="fb:pages" content="112707575438042">
41        
42
43        
44            
45            
45<script>
46                window.dataLayer = window.dataLayer || [];
47                function gtag(){dataLayer.push(arguments);}
48                gtag('consent','default',{
49                    'ad_storage':'denied',
50                    'analytics_storage':'denied',
51                    'ad_user_data':'denied',
52                    'ad_personalization':'denied',
53                    'personalization_storage':'denied',
54                    'functionality_storage':'granted',
55                    'security_storage':'granted',
56                    'wait_for_update': 500
57                });
58                gtag("set", "ads_data_redaction", true);
59            </script>
59
60            
61            
61<script src="https://cmp.osano.com/AzqdtLT8Mqkut2TZ/991974d1-3bca-4b6d-93e4-fc7f0c35945c/osano.js"></script>
61
62            <style>
63                .osano-cm-widget{display: none;}
64            </style>
65            
65<script>
66                // Notify GTM when analytics consent is granted
67                // This ensures page_view tag re-fires with proper attribution data (source/medium)
68                // if it's initially triggered before analytics consent has been granted
69                Osano.cm.addEventListener("osano-cm-analytics", () => {
70                    gtag('event', 'analytics_consent_granted');
71                });
72                
73                window.Osano.cm.addEventListener("osano-cm-script-blocked", function (item) {
74                    console.log("Script blocked: " + item);
75                });
76                window.Osano.cm.addEventListener("osano-cm-cookie-blocked", function (item) {
77                    console.log("Cookie blocked: " + item);
78                });
79            </script>
79
80        
81
82
83        
84
85
86
87<script type="module" src="/static/js/dist/darkModeFaviconToggle.bundle.js?281219230926" ></script>
87
88
89
90<!-- ====== FAVICONS ======= -->
91<link rel="icon" type="image/x-icon" sizes="any" href="/favicon.ico?v=3" />
92<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=3">
93<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?v=3">
94<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?v=3">
95<link rel="manifest" href="/site.webmanifest?v=3">
96<link rel="mask-icon" href="/safari-pinned-tab.svg?v=3" color="#5bbad5">
97<meta name="msapplication-TileImage" content="/mstile-150x150.png?v=3">
98<meta name="msapplication-TileColor" content="#603cba">
99<meta name="theme-color" content="#ffffff">
100
101        <link rel="alternate" type="application/rss+xml" title="Smart Cities Dive - Latest News Feed" href="https://www.smartcitiesdive.com/feeds/news/"/>
102        
103        
104            <meta property="og:title" content="About Us | Smart Cities Dive" />
105            <meta property="og:description" content="Smart Cities Dive provides in-depth journalism and insight into the most impactful news and trends shaping smart cities" />
106            <meta property="og:image" content="https://d12v9rtnomnebu.cloudfront.net/divesite/header_image_logos/smartcities_dive_feed_header.jpg" />
107        
108
109        
110
111        
112        
113
114        <link rel="stylesheet" href="/static/css/dive_app.css?191219230926">
115
116        
117
118<script type="text/javascript" src="/static/js/ad_blocker_recovery.js?520919230926" defer></script>
118
119
120<!-- These are the 2 necessary scripts for the ad recovery message to work -->
121    
121<script data-osano="MARKETING" async src="https://fundingchoicesmessages.google.com/i/pub-8553262192892817?ers=1" nonce="RORABhIXgMhQdZXbks8fZQ"></script>
vendor: 1 bytes, line 121
121
122<script nonce="RORABhIXgMhQdZXbks8fZQ">(function() {function signalGooglefcPresent() {if (!window.frames['googlefcPresent']) {if (document.body) {const iframe = document.createElement('iframe'); iframe.style = 'width: 0; height: 0; border: none; z-index: -1000; left: -1000px; top: -1000px;'; iframe.style.display = 'none'; iframe.name = 'googlefcPresent'; document.body.appendChild(iframe);} else {setTimeout(signalGooglefcPresent, 0);}}}signalGooglefcPresent();})();</script>
122
123
124<!-- If the ad recovery message is blocked, this script shows a backup error message asking users to allow ads -->
125<script>(function(){/*
126
127    Copyright The Closure Library Authors.
128    SPDX-License-Identifier: Apache-2.0
129   */
130   'use strict';var aa=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}},ba="function"==typeof Object.create?Object.create:function(a){var b=function(){};b.prototype=a;return new b},k;if("function"==typeof Object.setPrototypeOf)k=Object.setPrototypeOf;else{var m;a:{var ca={a:!0},n={};try{n.__proto__=ca;m=n.a;break a}catch(a){}m=!1}k=m?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null}
131   var p=k,q=function(a,b){a.prototype=ba(b.prototype);a.prototype.constructor=a;if(p)p(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.v=b.prototype},r=this||self,da=function(){},t=function(a){return a};var u;var w=function(a,b){this.g=b===v?a:""};w.prototype.toString=function(){return this.g+""};var v={},x=function(a){if(void 0===u){var b=null;var c=r.trustedTypes;if(c&&c.createPolicy){try{b=c.createPolicy("goog#html",{createHTML:t,createScript:t,createScriptURL:t})}catch(d){r.console&&r.console.error(d.message)}u=b}else u=b}a=(b=u)?b.createScriptURL(a):a;return new w(a,v)};var A=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)};var B={},C=null;var D="function"===typeof Uint8Array;function E(a,b,c){return"object"===typeof a?D&&!Array.isArray(a)&&a instanceof Uint8Array?c(a):F(a,b,c):b(a)}function F(a,b,c){if(Array.isArray(a)){for(var d=Array(a.length),e=0;e<a.length;e++){var f=a[e];null!=f&&(d[e]=E(f,b,c))}Array.isArray(a)&&a.s&&G(d);return d}d={};for(e in a)Object.prototype.hasOwnProperty.call(a,e)&&(f=a[e],null!=f&&(d[e]=E(f,b,c)));return d}
132   function ea(a){return F(a,function(b){return"number"===typeof b?isFinite(b)?b:String(b):b},function(b){var c;void 0===c&&(c=0);if(!C){C={};for(var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),e=["+/=","+/","-_=","-_.","-_"],f=0;5>f;f++){var h=d.concat(e[f].split(""));B[f]=h;for(var g=0;g<h.length;g++){var l=h[g];void 0===C[l]&&(C[l]=g)}}}c=B[c];d=Array(Math.floor(b.length/3));e=c[64]||"";for(f=h=0;h<b.length-2;h+=3){var y=b[h],z=b[h+1];l=b[h+2];g=c[y>>2];y=c[(y&3)<<
133   4|z>>4];z=c[(z&15)<<2|l>>6];l=c[l&63];d[f++]=""+g+y+z+l}g=0;l=e;switch(b.length-h){case 2:g=b[h+1],l=c[(g&15)<<2]||e;case 1:b=b[h],d[f]=""+c[b>>2]+c[(b&3)<<4|g>>4]+l+e}return d.join("")})}var fa={s:{value:!0,configurable:!0}},G=function(a){Array.isArray(a)&&!Object.isFrozen(a)&&Object.defineProperties(a,fa);return a};var H;var J=function(a,b,c){var d=H;H=null;a||(a=d);d=this.constructor.u;a||(a=d?[d]:[]);this.j=d?0:-1;this.h=null;this.g=a;a:{d=this.g.length;a=d-1;if(d&&(d=this.g[a],!(null===d||"object"!=typeof d||Array.isArray(d)||D&&d instanceof Uint8Array))){this.l=a-this.j;this.i=d;break a}void 0!==b&&-1<b?(this.l=Math.max(b,a+1-this.j),this.i=null):this.l=Number.MAX_VALUE}if(c)for(b=0;b<c.length;b++)a=c[b],a<this.l?(a+=this.j,(d=this.g[a])?G(d):this.g[a]=I):(d=this.l+this.j,this.g[d]||(this.i=this.g[d]={}),(d=this.i[a])?
134   G(d):this.i[a]=I)},I=Object.freeze(G([])),K=function(a,b){if(-1===b)return null;if(b<a.l){b+=a.j;var c=a.g[b];return c!==I?c:a.g[b]=G([])}if(a.i)return c=a.i[b],c!==I?c:a.i[b]=G([])},M=function(a,b){var c=L;if(-1===b)return null;a.h||(a.h={});if(!a.h[b]){var d=K(a,b);d&&(a.h[b]=new c(d))}return a.h[b]};J.prototype.toJSON=function(){var a=N(this,!1);return ea(a)};
135   var N=function(a,b){if(a.h)for(var c in a.h)if(Object.prototype.hasOwnProperty.call(a.h,c)){var d=a.h[c];if(Array.isArray(d))for(var e=0;e<d.length;e++)d[e]&&N(d[e],b);else d&&N(d,b)}return a.g},O=function(a,b){H=b=b?JSON.parse(b):null;a=new a(b);H=null;return a};J.prototype.toString=function(){return N(this,!1).toString()};var P=function(a){J.call(this,a)};q(P,J);function ha(a){var b,c=(a.ownerDocument&&a.ownerDocument.defaultView||window).document,d=null===(b=c.querySelector)||void 0===b?void 0:b.call(c,"script[n
135once]");(b=d?d.nonce||d.getAttribute("nonce")||"":"")&&a.setAttribute("nonce",b)};var Q=function(a,b){b=String(b);"application/xhtml+xml"===a.contentType&&(b=b.toLowerCase());return a.createElement(b)},R=function(a){this.g=a||r.document||document};R.prototype.appendChild=function(a,b){a.appendChild(b)};var S=function(a,b,c,d,e,f){try{var h=a.g,g=Q(a.g,"SCRIPT");g.async=!0;g.src=b instanceof w&&b.constructor===w?b.g:"type_error:TrustedResourceUrl";ha(g);h.head.appendChild(g);g.addEventListener("load",function(){e();d&&h.head.removeChild(g)});g.addEventListener("error",function(){0<c?S(a,b,c-1,d,e,f):(d&&h.head.removeChild(g),f())})}catch(l){f()}};var ia=r.atob("aHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2ljb25zL21hdGVyaWFsL3N5c3RlbS8xeC93YXJuaW5nX2FtYmVyXzI0ZHAucG5n"),ja=r.atob("WW91IGFyZSBzZWVpbmcgdGhpcyBtZXNzYWdlIGJlY2F1c2UgYWQgb3Igc2NyaXB0IGJsb2NraW5nIHNvZnR3YXJlIGlzIGludGVyZmVyaW5nIHdpdGggdGhpcyBwYWdlLg=="),ka=r.atob("RGlzYWJsZSBhbnkgYWQgb3Igc2NyaXB0IGJsb2NraW5nIHNvZnR3YXJlLCB0aGVuIHJlbG9hZCB0aGlzIHBhZ2Uu"),la=function(a,b,c){this.h=a;this.j=new R(this.h);this.g=null;this.i=[];this.l=!1;this.o=b;this.m=c},V=function(a){if(a.h.body&&!a.l){var b=
136   function(){T(a);r.setTimeout(function(){return U(a,3)},50)};S(a.j,a.o,2,!0,function(){r[a.m]||b()},b);a.l=!0}},T=function(a){for(var b=W(1,5),c=0;c<b;c++){var d=X(a);a.h.body.appendChild(d);a.i.push(d)}b=X(a);b.style.bottom="0";b.style.left="0";b.style.position="fixed";b.style.width=W(100,110).toString()+"%";b.style.zIndex=W(2147483544,2147483644).toString();b.style["background-color"]=ma(249,259,242,252,219,229);b.style["box-shadow"]="0 0 12px #888";b.style.color=ma(0,10,0,10,0,10);b.style.display=
137   "flex";b.style["justify-content"]="center";b.style["font-family"]="Roboto, Arial";c=X(a);c.style.width=W(80,85).toString()+"%";c.style.maxWidth=W(750,775).toString()+"px";c.style.margin="24px";c.style.display="flex";c.style["align-items"]="flex-start";c.style["justify-content"]="center";d=Q(a.j.g,"IMG");d.className=A();d.src=ia;d.style.height="24px";d.style.width="24px";d.style["padding-right"]="16px";var e=X(a),f=X(a);f.style["font-weight"]="bold";f.textContent=ja;var h=X(a);h.textContent=ka;Y(a,
138   e,f);Y(a,e,h);Y(a,c,d);Y(a,c,e);Y(a,b,c);a.g=b;a.h.body.appendChild(a.g);b=W(1,5);for(c=0;c<b;c++)d=X(a),a.h.body.appendChild(d),a.i.push(d)},Y=function(a,b,c){for(var d=W(1,5),e=0;e<d;e++){var f=X(a);b.appendChild(f)}b.appendChild(c);c=W(1,5);for(d=0;d<c;d++)e=X(a),b.appendChild(e)},W=function(a,b){return Math.floor(a+Math.random()*(b-a))},ma=function(a,b,c,d,e,f){return"rgb("+W(Math.max(a,0),Math.min(b,255)).toString()+","+W(Math.max(c,0),Math.min(d,255)).toString()+","+W(Math.max(e,0),Math.min(f,
139   255)).toString()+")"},X=function(a){a=Q(a.j.g,"DIV");a.className=A();return a},U=function(a,b){0>=b||null!=a.g&&0!=a.g.offsetHeight&&0!=a.g.offsetWidth||(na(a),T(a),r.setTimeout(function(){return U(a,b-1)},50))},na=function(a){var b=a.i;var c="undefined"!=typeof Symbol&&Symbol.iterator&&b[Symbol.iterator];b=c?c.call(b):{next:aa(b)};for(c=b.next();!c.done;c=b.next())(c=c.value)&&c.parentNode&&c.parentNode.removeChild(c);a.i=[];(b=a.g)&&b.parentNode&&b.parentNode.removeChild(b);a.g=null};var pa=function(a,b,c,d,e){var f=oa(c),h=function(l){l.appendChild(f);r.setTimeout(function(){f?(0!==f.offsetHeight&&0!==f.offsetWidth?b():a(),f.parentNode&&f.parentNode.removeChild(f)):a()},d)},g=function(l){document.body?h(document.body):0<l?r.setTimeout(function(){g(l-1)},e):b()};g(3)},oa=function(a){var b=document.createElement("div");b.className=a;b.style.width="1px";b.style.height="1px";b.style.position="absolute";b.style.left="-10000px";b.style.top="-10000px";b.style.zIndex="-10000";return b};var L=function(a){J.call(this,a)};q(L,J);var qa=function(a){J.call(this,a)};q(qa,J);var ra=function(a,b){this.l=a;this.m=new R(a.document);this.g=b;this.i=K(this.g,1);b=M(this.g,2);this.o=x(K(b,4)||"");this.h=!1;b=M(this.g,13);b=x(K(b,4)||"");this.j=new la(a.document,b,K(this.g,12))};ra.prototype.start=function(){sa(this)};
140   var sa=function(a){ta(a);S(a.m,a.o,3,!1,function(){a:{var b=a.i;var c=r.btoa(b);if(c=r[c]){try{var d=O(P,r.atob(c))}catch(e){b=!1;break a}b=b===K(d,1)}else b=!1}b?Z(a,K(a.g,14)):(Z(a,K(a.g,8)),V(a.j))},function(){pa(function(){Z(a,K(a.g,7));V(a.j)},function(){return Z(a,K(a.g,6))},K(a.g,9),K(a.g,10),K(a.g,11))})},Z=function(a,b){a.h||(a.h=!0,a=new a.l.XMLHttpRequest,a.open("GET",b,!0),a.send())},ta=function(a){var b=r.btoa(a.i);a.l[b]&&Z(a,K(a.g,5))};(function(a,b){r[a]=function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];r[a]=da;b.apply(null,d)}})("__h82AlnkH6D91__",function(a){"function"===typeof window.atob&&(new ra(window,O(qa,window.atob(a)))).start()});}).call(this);
141
142   window.__h82AlnkH6D91__("WyJwdWItODU1MzI2MjE5Mjg5MjgxNyIsW251bGwsbnVsbCxudWxsLCJodHRwczovL2Z1bmRpbmdjaG9pY2VzbWVzc2FnZXMuZ29vZ2xlLmNvbS9iL3B1Yi04NTUzMjYyMTkyODkyODE3Il0sbnVsbCxudWxsLCJodHRwczovL2Z1bmRpbmdjaG9pY2VzbWVzc2FnZXMuZ29vZ2xlLmNvbS9lbC9BR1NLV3hVc0lBMXlKVmRQQWNGaXJQX1lGUTdENkpIZVNZUGV6bWNOM216TmJmYWhldlNobXpBVHkzVzlPLU5LV3MyNkx5cWVXRUx3YnRhZzN1MnZEWHVkZnFFSkVRXHUwMDNkXHUwMDNkP3RlXHUwMDNkVE9LRU5fRVhQT1NFRCIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFVoRGZtbFAtR2RTZUhBa1lVY2VmWTFQYXh1cDNFdmhndlJDNVM4bms3S2t1TElaUXBFQ05VZTIySUNjcGx4eF9oeVlveHJTdy1iU3FjUkhKZWwyWU1NalFcdTAwM2RcdTAwM2Q/YWJcdTAwM2QxXHUwMDI2c2JmXHUwMDNkMSIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFgzMm02dWJvVVVwaXJ1b1VQMmhkY2R1S2U5S0pzaDlGRDloMDlWOTlYTkpyZkVTRW5HNzh4Vm0yUDZXdjBDNmkwMXZ4Ui11V25ZVVdlWEI3dmNCd1c5cFFcdTAwM2RcdTAwM2Q/YWJcdTAwM2QyXHUwMDI2c2JmXHUwMDNkMSIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFh0cXRhOEVpaV9LUVI4VHNLaDFVUGJ5TFlnNU1ocDFqdVNFemltQVFFeDFjRDJxalJhTjNDM21hSkt1VkVqdGZ5bTZjSXg5emVaLU5IazZMbTE5QjB1ZGdcdTAwM2RcdTAwM2Q/c2JmXHUwMDNkMiIsImRpdi1ncHQtYWQiLDIwLDEwMCwiY0hWaUxUZzFOVE15TmpJeE9USTRPVEk0TVRjXHUwMDNkIixbbnVsbCxudWxsLG51bGwsImh0dHBzOi8vd3d3LmdzdGF0aWMuY29tLzBlbW4vZi9wL3B1Yi04NTUzMjYyMTkyODkyODE3LmpzP3VzcXBcdTAwM2RDQUUiXSwiaHR0cHM6Ly9mdW5kaW5nY2hvaWNlc21lc3NhZ2VzLmdvb2dsZS5jb20vZWwvQUdTS1d4V0QtdnVGQVVZRE9STnItSmY2SnJGSGhYYU1QNlo5NG1CTjFyQ2g5M1FvdVNLSmtJcFBlLW1Uc2NpdHNWOEZ0aUdIdzBFZ1QtOEMzbHpFblJMczduZ0pQQVx1MDAzZFx1MDAzZCJd");
143</script>
143
144
145        
146
147<script src="/static/js/jquery_360.min.js?520919230926"></script>
147
148
149        
150
151<script>
152    
153    // waitForTriggerHandler() is library for queuing up javascript to be stored and then executed when a trigger
154    // function is called. You can push() any number of functions which will be stored unless and until trigger()
155    // is called. Once trigger() is called any future functions that you push() in will be executed immediately.
156    // It is safe to call .trigger() multiple times. Any arguments passed to .trigger() will also be passed along
157    // to the associated function
158
159    function waitForTriggerHandler() {
160        var function_queue = [];
161        var trigger_arguments = [];
162        this._triggered = false;
163
164        this.push = function(fn) {
165            if (this._triggered) {
166                // just run it immediately if handler has already been triggered
167                fn.apply(null, trigger_arguments);
168            }
169            else {
170                // otherwise add to the queue to run later
171                function_queue.push(fn);
172            }
173        };
174
175        this.trigger = function() {
176            // any arguments passed to trigger(foo, bar, baz) will also be passed along to functions in the queue
177
178            // first convert any arguments to an array
179            trigger_arguments = Array.prototype.slice.call(arguments);
180            while (function_queue.length){
181                // for each function in the queue, pop it off and then execute it while passing in any
182                // args that may have been passed to trigger().
183                function_queue.pop().apply(null, trigger_arguments);
184                // The "null" above is for the value of "this".
185                // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply#Parameters
186            }
187            this._triggered = true;
188        }
189
190    }
191    
192    // set up waitToLoadAds handler
193    window.waitToLoadAds = new waitForTriggerHandler();
194    // We set up the triggers for this below, they depend on whether we're loading lytics on the page
195</script>
195
196
197
198
199    
199<script type="text/javascript">
200        
201        window.googletag = window.googletag || {};
202        googletag.cmd = googletag.cmd || [];
203
204        // initialize callback (source: https://learn.lytics.com/product-docs/lytics-javascript-tag/receiving-data-from-lytics)
205        !function(){"use strict";var o=window.jstag||(window.jstag={}),r=[];function n(e){o[e]=function(){for(var n=arguments.length,t=new Array(n),i=0;i<n;i++)t[i]=arguments[i];r.push([e,t])}}n("send"),n("mock"),n("identify"),n("pageView"),n("unblock"),n("getid"),n("setid"),n("loadEntity"),n("getEntity"),n("on"),n("once"),n("call"),o.loadScript=function(n,t,i){var e=document.createElement("script");e.async=!0,e.src=n,e.onload=t,e.onerror=i;var o=document.getElementsByTagName("script")[0],r=o&&o.parentNode||document.head||document.body,c=o||r.lastChild;return null!=c?r.insertBefore(e,c):r.appendChild(e),this},o.init=function n(t){return this.config=t,this.loadScript(t.src,function(){if(o.init===n)throw new Error("Load error!");o.init(o.config),function(){for(var n=0;n<r.length;n++){var t=r[n][0],i=r[n][1];o[t].apply(o,i)}r=void 0}()}),this}}();
206
207
208        // custom init + lytics default install tag from https://activate.getlytics.com/connect?aid=2751
209        // see https://learn.lytics.com/understanding/product-docs/lytics-javascript-tag/configuration#configuration-options
210        
211            var lyticsCid = '44fda7674f94228540d8fba6786f9770';
212            console.log('You are using the Lytics Prod account');
213        
214
215        
216
217        jstag.init({
218            src: `https://c.lytics.io/api/tag/${lyticsCid}/latest.min.js`,
219            pageAnalysis: {
220                dataLayerPull: {
221                    disabled: true
222                }
223            }
224        });
225        jstag.pageView();
226
227        
228        (function(){
229            var sailthru_cookie, sailthru_user_id;
230            function read_cookie(cookieName) {
231              var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)');
232              var sMatch = (' '+document.cookie).match(re);
233              if (cookieName && sMatch) return unescape(sMatch[1]);
234              return '';
235            }
236            sailthru_cookie = read_cookie('sailthru_hid');
237            if (sailthru_cookie.length > 56) {
238              sailthru_user_id = sailthru_cookie.slice(32,56);
239              jstag.send({ st_profile_id: sailthru_user_id });
240            }
241        })();
242
243        
244        
245        
246        
247        jstag.call('entityReady', () => waitToLoadAds.trigger());
248        setTimeout(() => waitToLoadAds.trigger(), 1000);  // also trigger lytics if it's taking too long
249
250        
251        
252        waitToLoadAds.push(function (lytics_data) {
253            // lytics_data won't be defined if lytics failed to load correctly. In that case
254            // we don't need to set any segments.
255            if (lytics_data && lytics_data.segments) {
256                googletag.cmd.push(function() {
257                    googletag.pubads().setTargeting("LyticsSegments", lytics_data.segments);
258                });
259            }
260        });
261
262        function getUID(id) {
263            window.dataLayer.push({'user_id': id});
264        };
265        jstag.getid(getUID);
266
267
268    </script>
268
269
270
271
272        
273        
273<script src="/jsi18n/"></script>
273
274
275        
276
277        
278            
279
280
281<script>
282    // Initialize dataLayer empty array for GTM events
283    window.dataLayer = window.dataLayer || [];
284    window.dataLayer.push({
285        'site': 'Smart Cities Dive',
286    });
287    // wrapper function to push GTM events to dataLayer
288    pushGTMEvent = (eventObject) => {
289        // if window.datalayer is not defined, then set to an empty array
290        window.dataLayer.push(eventObject);
291    };
292</script>
292
293<!-- Google Tag Manager -->
294<script>
vendor: 327 bytes, lines 294-298
294(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
295new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
296j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
297'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
298})(window,document,'script','dataLayer','
298GTM-55G8WRR
vendor: 3 bytes, line 298
298');
298</script>
298
299<!-- End Google Tag Manager -->
300
301<script>
302    let eventParams = {};
303    
304    
305    const gtmEventObject  = {
306        event: 'page.content',
307        'page.content': {
308            v:11, // seer version
309            ...eventParams
310        }
311    };
312    window.pushGTMEvent(gtmEventObject);
313    window.lyticsLookup = {"any_agriculture_dive_subs": "aa", "any_automotive_dive_subs": "ab", "any_banking_dive_subs": "ac", "any_biopharma_dive_subs": "ad", "any_cstore_dive_subs": "ae", "any_cfo_dive_subs": "af", "cfo_dive_tech_valid_subs": "ag", "any_cfo_balance_subs": "ah", "any_cio_dive_subs": "ai", "any_construction_dive_subs": "aj", "any_cybersecurity_dive_subs": "ak", "any_higher_ed_dive_subs": "al", "any_k12_dive_subs": "am", "any_facilities_dive_subs": "an", "any_fashion_dive_subs": "ao", "any_food_dive_subs": "ap", "any_grocery_dive_subs": "aq", "any_healthcare_dive_subs": "ar", "any_hotel_dive_subs": "as", "any_hr_dive_subs": "at", "any_legal_dive_subs": "au", "any_manufacturing_dive_subs": "av", "any_marketing_dive_subs": "aw", "any_medtech_dive_subs": "ax", "any_mobile_marketer_subs": "ay", "any_multifamily_dive_subs": "az", "any_packaging_dive_subs": "a0", "any_payments_dive_subs": "a1", "any_pharmavoice_subs": "a2", "any_restaurant_dive_subs": "a3", "any_retail_dive_subs": "a4", "any_smart_cities_dive_subs": "a5", "any_social_media_today_subs": "a6", "any_supplychain_dive_subs": "a7", "any_transport_dive_subs": "a8", "any_utility_dive_subs": "a9", "any_waste_dive_subs": "ba", "lt_15_million_company_revenue": "bb", "lt_20_million_company_revenue": "bc", "gt_100m_company_revenue": "bd", "gt_500m_company_revenue": "be", "250k_to_at_least_5m_company_revenue": "bf", "5m_to_20m_company_revenue": "bg", "20m_5000m_company_revenue": "bh", "all_cfos": "bi", "retail_holiday_edition_valid_subscribers": "bj", "banking_dive_valid_subscribers": "bk", "biopharma_dive_valid_subscribers": "bl", "cfo_dive_valid_subscribers": "bm", "cio_dive_valid_subscribers": "bn", "construction_dive_valid_subscribers": "bo", "education_dive_higher_ed_valid_subscribers": "bp", "education_dive_k12_valid_subscribers": "bq", "food_dive_valid_subscribers": "br", "grocery_dive_valid_subscribers": "bs", "healthcare_dive_valid_subscribers": "bt", "hr_dive_valid_subscribers": "bu", "hr_dive_talent_valid_subscribers": "bv", "marketing_dive_valid_subscribers": "bw", "medtech_dive_valid_subscribers": "bx", "mobile_marketer_valid_subscribers": "by", "restaurant_dive_valid_subscribers": "bz", "retail_dive_valid_subscribers": "b0", "retail_dive_dtc_valid_subscribers": "b1", "smart_cities_dive_valid_subscribers": "b2", "social_media_today_valid_subscribers": "b3", "supply_chain_dive_valid_subscribers": "b4", "transport_dive_valid_subscribers": "b5", "utility_dive_valid_subscribers": "b6", "waste_dive_valid_subscribers": "b7", "all_target_readers": "b8", "automotive_dive_high_quality_target_readers": "b9", "banking_dive_high_quality_target_readers": "ca", "biopharma_dive_target_readers": "cb", "cstore_dive_high_quality_target_readers": "cc", "cfo_dive_high_quality_target_readers_": "cd", "cio_dive_high_quality_target_readers": "ce", "construction_dive_high_quality_target_readers": "cf", "cybersecurity_dive_high_quality_target_readers": "cg", "facilities_dive_high_quality_target_readers": "ch", "fashion_dive_high_quality_target_readers": "ci", "food_dive_high_quality_target_readers": "cj", "grocery_dive_high_quality_target_readers": "ck", "healthcare_dive_target_readers": "cl", "higher_ed_high_quality_target_readers": "cm", "hotel_dive_high_quality_target_readers": "cn", "hr_dive_high_quality_target_readers": "co", "hr_dive_learning_high_quality_target_readers": "cp", "hr_dive_talent_high_quality_target_readers": "cq", "k12_high_quality_target_readers": "cr", "legal_dive_high_quality_target_readers": "cs", "manufacturing_dive_high_quality_target_readers": "ct", "marekting_dive_high_quality_target_readers": "cu", "medtech_high_quality_target_readers": "cv", "mobile_marketer_high_quality_target_readers": "cw", "multifamily_dive_high_quality_target_readers": "cx", "packaging_dive_high_quality_target_readers": "cy", "payments_dive_high_quality_target_readers": "cz", "pharmavoice_high_quality_target_readers": "c0", "restaurant_dive_high_quality_target_readers": "c1", "retail_dive_high_quality_target_readers": "c2", "smart_cities_dive_high_quality_target_readers": "c3", "socialmediatoday_target_readers": "c4", "supply_chain_dive_high_quality_target_readers": "c5", "transport_dive_high_quality_target_readers": "c6", "utility_dive_high_quality_target_readers": "c7", "waste_dive_high_quality_target_readers": "c8", "banking_dive_fintech_valid_subscribers": "c9", "biopharma_dive_emerging_biotech_valid_subscribers": "da", "biopharma_dive_manufacturing_valid_subscribers": "db", "biopharma_dive_marketing_valid_subscribers": "dc", "construction_dive_tech_valid_subscribers": "dd", "education_dive_k12_curriculum_valid_subscribers": "de", "food_dive_ingredients_valid_subscribers": "df", "healthcare_dive_it_valid_subscribers": "dg", "healthcare_dive_payer_valid_subscribers": "dh", "hr_dive_compensation_benefits_valid_subscribers": "di", "hr_dive_compliance_valid_subscribers": "dj", "hr_dive_diversity_inclusion_valid_subscribers": "dk", "hr_dive_learning_valid_subscribers": "dl", "hr_dive_recruiting_valid_subscribers": "dm", "marketing_dive_agencies_valid_subscribers": "dn", "marketing_dive_mobile_val
313id_subscribers": "do", "retail_dive_marketing_valid_subscribers": "dp", "retail_dive_mobile_commerce_valid_subscribers": "dq", "retail_dive_operations_valid_subscribers": "dr", "retail_dive_tech_valid_subscribers": "ds", "supply_chain_dive_operations_valid_subscribers": "dt", "supply_chain_dive_procurement_valid_subscribers": "du", "utility_dive_demand_response_valid_subscribers": "dv", "utility_dive_solar_valid_subscribers": "dw", "utility_dive_storage_valid_subscribers": "dx", "waste_dive_recycling_valid_subscribers": "dy", "all_cio_job_level": "dz", "all_cso_ciso_job_level": "d0", "all_cto_job_level": "d1", "all_users_on_a_primary_list_in_sailthru": "d2", "any_administration_job_function": "d3", "any_analyst_job_level": "d4", "any_associate_job_level": "d5", "any_bank_finance_company_type": "d6", "any_biz_dev_sales_job_function": "d7", "any_clevel_job_level": "d8", "any_construction_company_type": "d9", "any_customer_relations_job_function": "ea", "any_cx_job_function": "eb", "any_director_vp_job_level": "ec", "any_education_company_type": "ed", "any_finance_job_function": "ee", "any_food_and_bev_company_type": "ef", "any_food_service_company_type": "eg", "any_hr_job_function": "eh", "any_manager_job_level": "ei", "any_manufacturing_company_type": "ej", "any_marketing_job_function": "ek", "any_media_company_type": "el", "any_operations_analysis_job_function": "em", "any_operations_job_function": "en", "any_product_job_function": "eo", "any_retail_company_type": "ep", "any_supply_chain_job_function": "eq", "any_tech_company_type": "er", "any_telecom_company_type": "es", "any_transportation_company_type": "et", "any_transportation_job_function": "eu", "any_utility_company_type": "ev", "any_ux_job_function": "ew", "any_waste_recycling_company_type": "ex", "company_size_1_249": "ey", "company_size_1000_4999": "ez", "company_size_1000_plus": "e0", "company_size_250_499": "e1", "company_size_5000_9999": "e2", "seh_k12_at_risk_users_in_2023_churn_campaign": "e3", "seh_k12_at_risk_users_who_clicked_2023_churn_campagin": "e4", "square_food_bev_audience": "e5", "square_restaurant_audience": "e6", "square_retail_audience": "e7", "any_cx_dive_subs": "e8", "any_esg_dive_subs": "e9", "cfo_balance_high_quality_target_readers": "fa", "cx_dive_high_quality_target_readers": "fb", "esg_dive_high_quality_target_readers": "fc", "informauploadsnov2022": "fd", "ladders_uploads_2021": "fe", "ladders_utm_campaign_tracking": "ff", "agriculture_dive_high_quality_target_readers": "fg", "all_marketing_related_audience": "fh", "tech_job_function": "fi", "construction_dive_infrastru
313cture_valid_subscribers": "fj", "construction_dive_labor_safety_valid_subscribers": "fk", "supply_chain_dive_logistics_valid_subscribers": "fl", "payers_on_healthcare": "fm", "providers_on_healthcare": "fn", "wardsauto_valid_subscribers": "fo", "wardsauto_dealer_valid_subscribers": "fp", "any_wardsauto_subs": "fq", "wardsauto_high_quality_target_readers": "fr", "wardsauto_high_quality_target_readers_automakers": "fs", "wardsauto_high_quality_target_readers_dealers": "ft", "wardsauto_high_quality_target_readers_suppliers": "fu", "channel_dive_valid_subscribers": "fv", "any_channel_dive_subs": "fw", "channel_dive_high_quality_target_readers": "fx", "cstore_retail_subs": "fy", "cstore_grocery_subs": "fz", "healthcare_dive_high_quality_target_readers_providers": "f0", "healthcare_dive_high_quality_target_readers_payers": "f1", "healthcare_dive_high_quality_target_readers_health_it": "f2", "2026_outlooks_autorecommended_content_audience": "f3"}
314</script>
314
315
316
317
318<script type="module" src="/static/js/dist/lyticsHelper.bundle.js?281219230926" ></script>
318
319
320
321        
322
323        <!-- HTMX for dynamic content loading -->
324        
325
326<script src="/static/js/htmx_204.min.js?520919230926"></script>
326
327
328
329        
330        
331        
332
333        
334            
335
336<script type="text/javascript" src="/static/js/mailcheck.min.js?520919230926" defer></script>
vendor: 1 bytes, line 336
336
337<script type="text/javascript" src="/static/js/dive_mailcheck.js?520919230926" defer></script>
337
338
339        
340
341        
342        
342<script src="/static/js/app.js?520919230926" defer></script>
342
343
344        
345            
345<script type="text/javascript">
346                var divecounter_settings = {};
347                
348                    divecounter_settings.showSignupAd = true;
349                
350                
351                
352            </script>
352
353        
354        
354<script type="text/javascript" src="/static/js/divecounter.js?520919230926"></script>
354
355
356        
357            
357<script type="text/javascript">
358            // Special unbounce signup thing for google traffic. Test with ?test_unbounce in the URL
359            // Note: divecounter must already be loaded. Only enabled on pages that would normally have signup ads
360            // Note: showSignupAd is always off if prestitial is enabled!
361            if ((typeof divecounter !== "undefined") && ($(window).width() > 640)) {
362            var test_unbounce = (window.location.href.indexOf("?test_unbounce")>=0);
363            var force_unbounce = (window.location.href.indexOf("signupbounce=1")>=0) ||
364                                    (window.location.href.indexOf("utm_campaign=Linked-HR")>=0) ||
365                                    (window.location.href.indexOf("utm_source=outbrain")>=0);
366            if (test_unbounce ||
367                force_unbounce ||
368                (document.referrer.match(/^https?:\/\/(www\.google\.|news\.google\.|t\.co|twitter\.com|www\.facebook\.com)/i) &&
369                divecounter.getOption('showSignupAd') && divecounter.canShow(1,1)) ) {
370                // dyanmically load ouibounce.js only on pages where its needed
371                $.getScript("/static/js/ouibounce.min.js?520919230926", function(){
372                    // Once ouibounce.js loads, call the script
373                    // We're reusing divecounter's modal instead of OuiBounce's modal code (that's why we pass it 'false')
374                    var _ouibounce = ouibounce(false, {
375                    aggressive: test_unbounce, // ignore cookie in test mode
376                    cookieName: '_viewedOuiBounce', // underscored cookies should be ignored by Varnish
377                    callback: function() {
378                        divecounter_open_ad();
379                    }
380                    });
381                });
382            } // end should show unbounce
383            } // end divecounter defined
384            </script>
384
385        
386
387        
388            
389<script type="text/javascript">
390    function read_cookie(cookieName) {
391        var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)');
392        var sMatch = (' '+document.cookie).match(re);
393        if (cookieName && sMatch) return unescape(sMatch[1]);
394        return '';
395    }
396
397    var script = document.createElement('script');
398    script.type = 'text/javascript';
399    script.async = true;
400    script.addEventListener('load', function(e) {
401        // we only pass the template this context variable on newsposts
402        let informaData = false;
403        
404        if (window.IIRISTracker) {
405            var sailthru_id = read_cookie('sailthru_hid');
406            if (sailthru_id.length > 56) {
407              sailthru_id = sailthru_id.slice(32,56);
408            }
409
410            var notProduction = 'False' === 'True';
411            var domain = 'www.smartcitiesdive.com'.split('.')[1];
412            // on non-prod environment, there is specific collector domain to send the data to.
413            var cDomain = notProduction ? 'com-informa-prod1.mini.snplow.net' : 'c.' + domain + '.com' // removed .com previous line
414            var cfg = {
415                config: {
416                    td: {},
417                    snowplow: {
418                        context: {}
419                    }
420                }
421            };
422            cfg.config.idsource = 'sailthruid';
423            cfg.config.snowplow.appId = domain;
424            cfg.config.snowplow.cDomain = cDomain;
425            cfg.config.td.lob = 'it';
426            cfg.config.td.domain = domain;
427            cfg.config.snowplow.contentTagEnabled = !!informaData
428            cfg.config.snowplow.context = informaData
429            window.IIRISTracker.initConfig(cfg);
430            window.IIRISTracker.setTrackingUID(sailthru_id);
431            var irisEvt = new Event('trackerLoaded');
432            window.dispatchEvent(irisEvt);
433        } else {
434            window.addEventListener('trackerLoaded', function(evt) {
435                if(window.IIRISTracker) {
436                    window.IIRISTracker.setTrackingUID(sailthru_id);
437                }
438            });
439        }
440    });
441    script.src = 'https://static.iris.informa.com/widgets/v3.0/iris-t.js';
442    document.getElementsByTagName('head')[0].appendChild(script);
443</script>
443
444
445        
446
447        
448        
449
450        
451
452        
453        
453<script type="text/javascript">
454            jQuery.browser = {};
455            (function () {
456                jQuery.browser.msie = false;
457                jQuery.browser.version = 0;
458                if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
459                    jQuery.browser.msie = true;
460                    jQuery.browser.version = RegExp.$1;
461                }
462            })();
463        </script>
463
464        <!-- for modal signup form -->
465
466        
466<script type="text/javascript" src="/static/js/jquery.simplemodal.divefork.min.js?520919230926" defer></script>
466
467
468        
469
470        <style>
471
472            /* dynamic style overrides based on DB go here*/
473            
474        </style>
475
476        
477
478        
479
480<script type="module" src="/static/js/dist/signupReferrer.bundle.js?281219230926" ></script>
480
481
482
483        
484            
485
486<script type="module" src="/static/js/dist/searchTracking.bundle.js?281219230926" ></script>
486
487
488            
489
490<script type="module" src="/static/js/dist/navRelatedQuestionsTracking.bundle.js?281219230926" ></script>
490
491
492        
493
494        
495        
496
497        
498        
499            
500
501
502
503
504
505
506    
506<script type="text/javascript" src="/static/js/prestitial.js?520919230926"></script>
506
507
508
509
510
511
512    
512<script data-osano="MARKETING" async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
512
513
514
515
516
517
518
519
520
521
522
523    <!-- DoubleVerify Page Tag - START -->
524    
524<script data-osano="MARKETING" async src="https://pub.doubleverify.com/dvtag/19913272/DV424940/pub.js"></script>
524
525    
525<script>
526        window.onDvtagReady = function(callback, timeout = 750) {
527            window.dvtag = window.dvtag || {};
528            dvtag.cmd = dvtag.cmd || [];
529            dvtag.queueAdRequest = dvtag.queueAdRequest || function() {};
530            const opt = {
531                callback,
532                timeout,
533                timestamp: new Date().getTime()
534            };
535            dvtag.cmd.push(function() {
536                dvtag.queueAdRequest(opt);
537            });
538            setTimeout(function() {
539                const cb = opt.callback;
540                opt.callback = null;
541                if (cb) cb();
542            }, timeout);
543        };
544    </script>
544
545    <!-- DoubleVerify Page Tag - END -->
546
547
548
549<script type="text/javascript" src="/static/js/dist/adTemplates.bundle.js?281219230926" defer></script>
vendor: 1 bytes, line 549
549
550<script>
551    const desktopWidth = 1024;
552    
553    window.dfp_visibility = window.innerWidth >= desktopWidth ? 'desktop' : 'mobile';
554
555    const dfpDisplayConfiguration = {
556        "prestitialEnabled": true,
557        "leaderboardEnabled": true,
558        "sidebarAdsEnabled": true,
559        "visibility": window.dfp_visibility
560    };
561
562    
563    var googletag = googletag || {};
564    googletag.cmd = googletag.cmd || [];
565    googletag.cmd.push(function () {
566        
567
568        
569        
570
571        
572
573        if ((typeof divecounter !== "undefined") && (divecounter.getMarketingData().is_subscriber)) {
574            googletag.pubads().setTargeting("is_subscriber", "yes");
575        }
576
577        const site = window.location.host
578        googletag.pubads().setTargeting("site", site);
579
580        const first_path = window.location.pathname.split( '/' )[1];
581        googletag.pubads().setTargeting("first_path", first_path);
582
583        
584        
585
586        // Set ad targeting on the trendline to show the ads designated for it
587        
588        
589        const isTopicPage = window.location.pathname.indexOf('/topic/') !== -1;
590        if(isTopicPage) {
591            googletag.pubads().setTargeting('is_topics_page', 'true');
592        }
593
594        
595        const cookies = document.cookie.split("; ");
596        const utmMedium = cookies.find(cookie => cookie.startsWith("utmMedium="));
597        const utmMediumValue = utmMedium ? utmMedium.split("=")[1] : null;
598        const ppc = utmMediumValue && utmMediumValue.toUpperCase() === "CPC" ? "1" : "0";
599        googletag.pubads().setTargeting("ppc", ppc);
600
601    });
602
603    googletag.cmd.push(function () {
604        googletag.pubads().setCentering(true);
605        googletag.pubads().collapseEmptyDivs(false); // Whether to collapse the slots even before the ads are fetched.
606        googletag.setConfig({ singleRequest: true });
607        window.onDvtagReady?.(); // Notify DoubleVerify page tag that slots are defined.
608        googletag.enableServices();
609    });
610</script>
610
611
612
613
614
615<script>window.fallbackAds = '[]'</script>
615
616
617
618<script type="module" src="/static/js/dist/onBoardDiagnostics.bundle.js?281219230926" ></script>
618
619
620
621
622
623
624
625        
626
627        
628        <!-- NEW RELIC SYNTHETICS CANARY -->
629    </head>
630
631
632    <body class="about-page">
633        <!-- Accessibility skip-nav link -->
634        <a href="#skip-link-target" class="button button--loud skip-nav-link" tabindex="1">Skip to main content</a>
635
636        
637            <!-- Google Tag Manager (noscript) -->
638                <noscript><iframe data-osano="ESSENTIAL" src="https://www.googletagmanager.com/ns.html?id=GTM-55G8WRR" height="0" width="0" style="display:none;visibility:hidden">
639                </iframe></noscript>
640            <!-- End Google Tag Manager (noscript) -->
641        
642
643        
644            
645
646
647    
648        
649        <div id="prestitial-init" style="display: none;" class="prestitial-init"></div>
650        <div id="prestitial-oop" style="display: none;"></div>
651        <div id="prestitial-outer" style="display: none;" class="prestitial content-overlay">
652            <section class="site-menu" aria-label="Site menu">
653                <div class="site-menu-inner">
654                    
655                        <img src="https://d12v9rtnomnebu.cloudfront.net/logo/publications/smartcities_black.svg" alt="Smart Cities Dive" class="pub-logo">
656                    
657                </div>
658            </section>
659            <section class="paychek-page-wrapper row">
660                <div class="paychek-button large-4 large-push-8 columns">
661                    <div>
662                        CONTINUE TO SITE ➞
663                    </div>
664                </div>
665                <div class="paychek large-8 large-pull-4 columns">
666                    
667                    <div id="paychekgoeshere"></div>
668                    
668<script type="text/javascript">
669                      if (typeof prestitialAds !== 'undefined' && prestitialAds.pageIsPrestitialEligible()) {
670                        
671                          prestitialAds.showOverlay();
672                        
673                      }
674                    </script>
674
675                    
675<script type="text/javascript">
676                        
677                        if (typeof prestitialAds !== 'undefined' && prestitialAds.pageIsPrestitialEligible()) {
678                          // Initialize but don't show yet - wait to see if OOP loads
679                          prestitialAds.initialize(7);
680                          
681                          prestitialAds.setPrestitialPossibleCookie();
682                          const prestitial_ad_unit_path = '/3618/smartcitiesdive/smartcitiesdiveprestitial';
683
684                          
685                          let oopStatus = 'pending';
686                          let standardStatus = 'pending';
687                          let resolved = false;
688
689                          function resolvePrestitial() {
690                            if (resolved) return;
691
692                            if (oopStatus === 'loaded') {
693                              resolved = true;
694                              prestitialAds.showOOPPrestitial();
695                              // Wait for OOP ad content to exist before hiding overlay
696                              prestitialAds.waitForOOPAdContent(function() {
697                                $('div#prestitial-init').hide(); // hide the all white overlay
698                                // Wait for Airtory to close (either by user or timeout)
699                                // before closing OOP wrapper and restoring the page scroll.
700                                prestitialAds.watchForOOPAdClose(function() {
701                                  prestitialAds.closePrestitial();
702                                });
703                              });
704                            } else if (oopStatus === 'empty' && standardStatus === 'loaded') {
705                              resolved = true;
706                              prestitialAds.showStandardPrestitial();
707                              $.modal.close();
708                              $('div#prestitial-init').hide(); // hide the all white overlay
709                            } else if (oopStatus === 'empty' && standardStatus === 'empty') {
710                              resolved = true;
711                              prestitialAds.closePrestitial();
712                            }
713                            // else: one or both slots are still pending, wait for the other to report.
714                          }
715
716                          googletag.cmd.push(function () {
717                            googletag.pubads().addEventListener('slotRenderEnded', function (event) {
718                              
719                              if (event.slot.getAdUnitPath() == prestitial_ad_unit_path) {
720                                const slotElementId = event.slot.getSlotElementId();
721
722                                if (slotElementId === 'prestitial-oop') {
723                                  oopStatus = event.isEmpty ? 'empty' : 'loaded';
724                                  resolvePrestitial();
725                                } else if (slotElementId === 'paychekgoeshere') {
726                                  standardStatus = (event.isEmpty || prestitialAds.testingNoAd()) ? 'empty' : 'loaded';
727                                  resolvePrestitial();
728                                }
729                              }
730                            });
731
732                            // Set the _prestitialViewed cookie after there has been a prestitial impression
733                            googletag.pubads().addEventListener('impressionViewable', function (event) {
734                              if (event.slot.getAdUnitPath() == prestitial_ad_unit_path) {
735                                prestitialAds.setCookie(
736                                  "_prestitialViewed",
737                                  (new Date()).getTime(),
738                                  prestitialAds.daysBetweenPrestitial
739                                );
740                              }
741                            });
742                          });
743
744                          
745                          if (prestitialAds.testingNoAd()) {
746                            
747                          } else {
748                            
749                            
750                            if (prestitialAds.screenMeetsSizeReqs()) {
751                                googletag.cmd.push(function() {
752                                  googletag.defineSlot(
753                                    prestitial_ad_unit_path,
754                                    [[500, 300], [640, 480]],
755                                    'paychekgoeshere'
756                                  ).addService(googletag.pubads());
757
758                                  googletag.defineOutOfPageSlot(
759                                    prestitial_ad_unit_path,
760                                    'prestitial-oop'
761                                  ).addService(googletag.pubads());
762                                });
763                            }
764                            
765                            waitToLoadAds.push(function() {
766                              
767                              googletag.cmd.push(function () {
768                                
769                                // Both slots must be displayed (requested) so GAM has a chance to
770                                // fill either one; resolvePrestitial() needs both slotRenderEnded
771                                // events to decide which ad (if any) to actually show.
772                                window.onDvtagReady?.(() => googletag.display('paychekgoeshere'));
773                                window.onDvtagReady?.(() => googletag.display('prestitial-oop'));
774                              });
775                            });
776                          }
777
778                          
779                          setTimeout(
780                            function () {
781                              if (prestitialAds.overrideTimeout()) {
782                                
783                                return;
784                              }
785
786                              if (!resolved && standardStatus === 'loaded') {
787                                
788                                oopStatus = 'empty';
789                                resolvePrestitial();
790                              }
791
792                              if (!resolved) {
793                                
794                                resolved = true;
795                                if (!prestitialAds.prestitialAdIsClosed()) {
796                                  prestitialAds.closePrestitial();
797                                }
798                                return;
799                              }
800
801                              if (standardStatus === 'loaded' && oopStatus !== 'loaded') {
802                                
803                                setTimeout(
804                                  function () {
805                                    // if the prestitial is already hidden, then don't hide it again.
806                                    if (!prestitialAds.prestitialAdIsClosed()) {
807                                      prestitialAds.closePrestitial();
808                                    }
809                                  },
810                                  prestitialAds.timeoutSeconds()
811                                );
812                              }
813                              
814                            },
815                            
816                            2900
817                          );
818                          prestitialAds.sentPrestitialEligibleEvent();
819                        } else if (typeof prestitialAds !== 'undefined' && !prestitialAds.pageIsPrestitialEligible()){
820                          
821                          prestitialAds.closePrestitial();
822                        }
823                    </script>
823
824                </div>
825            </section>
826        </div>
827    
828
829
830        
831
832        
833            
834                
835
836<div id="signup-inter" class="modal_dialog" style="display:none;">
837    
838        
839        <form id="signup-inter-form"
840              class="form-basic"
841              name="signup-inter-form"
842              action="/signup/"
843              method="POST">
844            
845            <input type="hidden" name="signup_box_location" value="interstitial">
846            <input type="hidden" name="signup_initial_url_path" value="">
847            <h1>
848                
849                    
850                        Don't miss tomorrow's smart cities industry news
851                    
852                
853            </h1>
854            <p class="interstitial-text">
855                
856                    
857                        Let Smart Cities Dive's free newsletter keep you informed, straight from your inbox.
858                    
859                
860            </p>
861            <p class="form-error__message" id="interstitial-error"></p>
862            <div id="form-interstitial">
863                <input type="email" name="email" placeholder="Work email address" class="email" maxlength="320" required id="id_2ca305_email">
864                
865                <div id="newsletter-list-section">
866                    
867                    
868                </div>
869                <div id="interstitial-consent-container">
870                    <input name="user_consent" value="1" id="id_user_consent" type="checkbox">
871                    <span>
872    By signing up to receive our newsletter, you agree to our
873    <a href="https://www.informatechtarget.com/terms-of-use/" target="_blank">Terms of Use</a> and
874    <a href="https://www.informatechtarget.com/privacy-policy/" target="_blank">Privacy Policy</a>. You can unsubscribe at anytime.
875</span>
876
877                </div>
878            </div>
879            <span class="captcha-container">
880                <div class="g-recaptcha" data-sitekey="6LfnFggUAAAAAKaDTgN6vqjZtnNENIqa--TCG9F4"></div>
881            </span>
882            <input id="signup-inter-submit"
883                   class="email_submit submit button"
884                   type="submit"
885                   data-role="none"
886                   value="Subscribe today">
887        </form>
888    
889</div>
890
891            
892        
893
894        
895        
896
897        
898            
899        
900
901        <!-- leaderboard -->
902        
903            
904            
905                
906                <div class="leaderboard-wrap">
907                    
908    <div class="hide-small show-large">
909
910
911<div id='dfp-leaderboard-desktop' style="min-height: 90px">
912    
912<script>
913        if (window.dfp_visibility === 'desktop') {
914            googletag.cmd.push(function() {
915                googletag.defineSlot(
916                    '/3618/smartcitiesdive/smartcitiesdiveleaderboard',
917                    [[970, 180], [728, 90], [970, 90]],
918                    'dfp-leaderboard-desktop'
919                ).addService(googletag.pubads());
920            });
921        }
922        waitToLoadAds.push(function() {
923            googletag.cmd.push(function() {
924                if (window.dfp_visibility === 'desktop') {
925                    window.onDvtagReady?.(() => googletag.display('dfp-leaderboard-desktop'));
926                }
927            })
928        });
929    </script>
929
930</div>
931</div>
932
933                </div>
934                
934<script>
935                    googletag.cmd.push(function() {
936                        googletag.pubads().addEventListener('slotRenderEnded', function (event) {
937                            
938                            if (event.slot.getAdUnitPath() === '/3618/smartcitiesdive/smartcitiesdiveleaderboard' && !event.isEmpty) {
939                                $(window).blur(function () {
940                                    if (document.activeElement === $('#dfp-leaderboard- iframe')[0]) {
941                                        try {
942                                            localStorage.setItem('leaderboard_signup_path', document.location.pathname);
943                                        } catch (e) {
944                                            // local storage could not be available due to privacy settings or something
945                                        }
946                                    }
947                                });
948                            }
949                        });
950                    })
951                </script>
951
952                
953            
954        
955
956        <!-- ITT cross pub nav -->
957        
958
959
960<!-- Nav that lists the site's related publications including itt sites  -->
961
962<div class="itt-cross-nav">
963  <div class="itt-cross-nav-inner">
964    <div class="desktop-section-wrapper">
965      <a class="itt-brand analytics t-ittbanner-logo" href="https://www.informatechtarget.com/">
966        <img class="itt-logo" src="https://d12v9rtnomnebu.cloudfront.net/logo/ITechTarget-Orbit-W_rgb.png" alt="Informa Tech Target Logo" height="16">
967        <span class="itt-brand-name nav-item">Informa TechTarget</span>
968        <span class="nav-divider nav-item">|</span>
969      </a>
970      <ul class="itt-pubs list-no-bullets">
971        
972          <li>
973            <a href="https://www.facilitiesdive.com/"
974              class="nav-item-link analytics t-ittbanner-related-facilities-dive">Facilities Dive</a>
975          </li>
976        
977          <li>
978            <a href="https://www.utilitydive.com/"
979              class="nav-item-link analytics t-ittbanner-related-utility-dive">Utility Dive</a>
980          </li>
981        
982          <li>
983            <a href="https://www.wastedive.com/"
984              class="nav-item-link analytics t-ittbanner-related-waste-dive">Waste Dive</a>
985          </li>
986        
987      </ul>
988    </div>
989    <div>
990      <a href="https://www.informatechtarget.com/our-brands/" class="desktop-cta nav-item-link analytics t-ittbanner-brands">
991        <span>Explore our brands</span>
992        <img class="external-link-logo" src="https://d12v9rtnomnebu.cloudfront.net/logo/link-external-wht.svg" alt="Informa TechTarget Brands" height="12">
993      </a>
994      <a href="https://www.informatechtarget.com/" class="mobile-cta nav-item-link analytics t-ittbanner-mobile">An Informa TechTarget Publication</a>
995    </div>
996  </div>
997</div>
998
999
1000
1001    
1002        <div class="page-container">
1003            
1004            
1005                
1006                    
1007
1008
1009
1010
1011
1012<header role="banner">
1013    <nav id="top" class="site-menu" aria-label="Site menu">
1014        <div class="site-menu-inner">
1015            <!-- logo -->
1016            <div class="pub-logo-wrapper">
1017                <a href="/" class="analytics t-dash-navigation">
1018                    
1019                        <img class="pub-logo" src="https://d12v9rtnomnebu.cloudfront.net/logo/publications/smartcities_black.svg" alt="Smart Cities Dive" height="28">
1020                    
1021                </a>
1022            </div>
1023            <!-- desktop menu, not visible on mobile/tablet -->
1024            <div class="menu-content-wrapper">
1025                <ul class="desktop-menu-main">
1026                    
1027                      <li>
1028                          <a href="/deep-dive/" class="nav-menu-item analytics t-deepdive-navigation">Deep Dive</a>
1029                      </li>
1030                    
1031                    
1032                        <li>
1033                            <a href="/opinion/" class="nav-menu-item analytics t-opinion-navigation">Opinion</a>
1034                        </li>
1035                    
1036                    
1037                    
1038                        <li>
1039                            <a href="/library/" class="nav-menu-item analytics t-library-navigation">Library</a>
1040                        </li>
1041                    
1042                    
1043                        <li>
1044                            <a href="/events/" class="nav-menu-item analytics t-events-navigation">Events</a>
1045                        </li>
1046                    
1047                    
1048                        <li>
1049                            <a href="/press-release/" class="nav-menu-item analytics t-press-releases-navigation">Press Releases</a>
1050                        </li>
1051                    
1052                    
1053                    
1054                    <li>
1055                        <a href="/news/2026-smart-cities-dive-public-service-awards-call-for-nominations/813743/" class="nav-menu-item analytics t-awards-navigation">Awards</a>
1056                    </li>
1057                    
1058                    
1059                    <li class="topics top-nav-dropdown-item">
1060                        <button class="nav-menu-item topics-dropdown-item">
1061                            Topics
1062                            <span class="dropdown-toggle-arrow"></span>
1063                        </button>
1064                    </li>
1065                </ul>
1066                <!-- mobile menu toggle icon, not visible on desktop -->
1067                <a href="/signup/?signup_location=header" rel="nofollow" class="nav-menu-item nav-signup-button mobile-nav-signup-button analytics t-signup-navigation button">
1068                    Sign up
1069                </a>
1070                <button class="mobile-menu-toggle">
1071                    
1072                    
1073                        <img src="/static/img/menu_icons/menu_search.svg?520919230926" alt="menu" loading="lazy">
1074                    
1075                </button>
1076                <!-- newsletter and search, only shown on desktop -->
1077                <ul class="desktop-menu-sub list-no-bullets">
1078                    <li>
1079                        <button class="search-toggle search-button-front analytics t-search-navigation-top">
1080                            
1081                            
1082                                <img src="/static/img/menu_icons/ai_search_black.svg?520919230926" alt="search" width="16" height="16" loading="lazy">
1083                            
1084                            
1085                                <span class="sub-link">Search</span>
1086                            
1087                        </button>
1088                    </li>
1089                    <li>
1090
1091                        <a href="/signup/?signup_location=header" rel="nofollow" class="nav-menu-item nav-signup-button desktop-nav-signup-button analytics t-signup-navigation button">
1092                            <img src="/static/img/email_icons/mail.svg?520919230926" width="16" height="11" loading="lazy" alt="">
1093                            Sign up
1094                        </a>
1095                    </li>
1096                </ul>
1097
1098            </div>
1099        </div>
1100    </nav>
1101</header>
1102
1103
1104
1105<div
1106    class="menu-search menu-search--semantic js-search-hide"
1107    data-related-questions-url="/search/related-questions/"
1108    data-search-url="/search/"
1109>
1110    <div class="menu-search-inner-wrapper menu-search-panel" role="region" aria-label="Search panel">
1111        <form action="/search/" method="GET" data-ajax="false" data-search-track data-search-tracking-url="/search/tracking/" class="menu-search-form">
1112            <label for="search-desktop">
1113                <span class="screen-reader-text search">Search</span>
1114            </label>
1115            <div class="menu-search-input-wrap">
1116                <input id="search-desktop" type="search" name="q" placeholder="Ask a question..." data-role="none" autocomplete="off">
1117                <button type="button" class="close menu-search-close" aria-label="Close search">
1118                    <img src="/static/img/menu_icons/close.svg?520919230926" width="16" height="16" alt="" loading="lazy">
1119                </button>
1120                <button type="submit" value="" data-role="none" class="search-button-front menu-search-submit analytics t-search-navigation-drawer" aria-label="Search">
1121                    <img src="/static/img/menu_icons/ai_search.svg?520919230926" alt="" height="16" width="16" loading="lazy">
1122                </button>
1123            </div>
1124        </form>
1125        <section class="menu-search-paa" aria-label="People also ask">
1126            <div class="menu-search-paa__header">
1127                <h2 class="dash-header">People also ask</h2>
1128            </div>
1129            <ul class="menu-search-paa__list js-menu-search-related-questions">
1130                <li class="menu-search-paa__item menu-search-paa__item--loading">Loading questions...</li>
1131            </ul>
1132        </section>
1133    </div>
1134</div>
1135
1136
1137
1138<nav class="topics menu-bar" aria-label="Menu bar">
1139    <ul class="list-no-bullets">
1140        
1141            
1142            <li>
1143                <a class="analytics t-topic-navigation-transportation" href="/topic/transportation/">Transportation</a>
1144            </li>
1145        
1146            
1147            <li>
1148                <a class="analytics t-topic-navigation-buildings-and-infrastructure" href="/topic/buildings-and-infrastru
1148cture/">Buildings &amp; Design</a>
1149            </li>
1150        
1151            
1152            <li>
1153                <a class="analytics t-topic-navigation-resilience" href="/topic/resilience/">Climate &amp; Resilience</a>
1154            </li>
1155        
1156            
1157            <li>
1158                <a class="analytics t-topic-navigation-utilities" href="/topic/utilities/">Utilities</a>
1159            </li>
1160        
1161            
1162            <li>
1163                <a class="analytics t-topic-navigation-housing" href="/topic/housing/">Housing</a>
1164            </li>
1165        
1166            
1167            <li>
1168                <a class="analytics t-topic-navigation-tech-and-data" href="/topic/tech-and-data/">Tech &amp; Data</a>
1169            </li>
1170        
1171            
1172            <li>
1173                <a class="analytics t-topic-navigation-governance-finance" href="/topic/governance-finance/">Governance &amp; Finance</a>
1174            </li>
1175        
1176            
1177            <li>
1178                <a class="analytics t-topic-navigation-equity" href="/topic/equity/">Equity</a>
1179            </li>
1180        
1181            
1182            <li>
1183                <a class="analytics t-topic-navigation-public-safety" href="/topic/public-safety/">Public Safety</a>
1184            </li>
1185        
1186    </ul>
1187</nav>
1188
1189
1190
1191<script type="module" src="/static/js/dist/navSignupHelper.bundle.js?281219230926" ></script>
1191
1192
1193
1194<script>
1195    window.siteName = 'Smart Cities Dive';
1196</script>
1196
1197
1198                
1199            
1200
1201            
1202            
1203            <div class="search-overlay"></div>
1204            <div class="page-wrapper ">
1205
1206                <div class="page-inner-wrapper" id="skip-link-target">
1207
1208                
1209                
1210                
1211
1212                
1213
1214                    <div class="row">
1215                        <div class="medium-10 medium-centered large-12">
1216                            <section id="main-content" class="main-content large-8 columns">
1217                                
1218                                
1219
1220                                
1221    <h1 class="display-heading-03">About Smart Cities Dive </h1>
1222
1223
1224                                
1225                                    
1226                                    
1227                                
1228
1229                                
1230    
1231        <section>
1232        <p>Smart Cities Dive provides in-depth journalism and insight into the most impactful news and trends shaping cities and municipalities. The newsletters and website cover topics such as transportation, building &amp; infrastructure, governance, tech &amp; data and more.</p>
1233
1234<p>Smart Cities Dive is a leading publication operated by Informa TechTarget. Our business journalists spark ideas and shape agendas for&nbsp;14&nbsp;million decision makers in competitive industries.</p>
1235        </section>
1236    
1237    <section>
1238        
1239            <div class="cta-block">
1240                <div class="cta-img">
1241                    <img src="/static/img/about_icons/about_editors.png?520919230926">
1242                </div>
1243                <div class="cta-content">
1244                    <h3>Meet our editors</h3>
1245                    <p>Learn about the people behind our journalism.</p>
1246                    <p><a class="call-out-link" href="/editors/">Learn more <span class="call-out-link__arrow">➔</span></a></p>
1247                </div>
1248            </div>
1249            
1250
1251
1252            <div class="cta-block">
1253                <div class="cta-img">
1254                    <img src="/static/img/about_icons/about_paychek.png?520919230926">
1255                </div>
1256                <div class="cta-content">
1257                    <h3>Advertise to our readers</h3>
1258                    <p>Put your brand in front of industry decision makers.</p>
1259                    <p><a class="call-out-link" href="/advertise/">Learn more <span class="call-out-link__arrow">➔</span></a></p>
1260                </div>
1261            </div>
1262
1263            
1264            <div class="cta-block">
1265                <div class="cta-img">
1266                    <img src="/static/img/about_icons/about_article.png?520919230926">
1267                </div>
1268                <div class="cta-content">
1269                    <h3>Reprint an article</h3>
1270                    <p>Interested in purchasing a copy of one of our articles?</p>
1271                    <p><a class="call-out-link" href="https://www.industrydive.com/article-reprints/">Learn more <span class="call-out-link__arrow">➔</span></a></p>
1272                </div>
1273            </div>
1274
1275            <div class="cta-block">
1276                <div class="cta-img">
1277                    <img src="/static/img/about_icons/about_logo.png?520919230926">
1278                </div>
1279                <div class="cta-content">
1280                    <h3>Brand resources</h3>
1281                    <p>Looking to download our logo?</p>
1282                    <p><a class="call-out-link" href="/brand-resources/">Download here <span class="call-out-link__arrow">➔</span></a></p>
1283                </div>
1284            </div>
1285        
1286    </section>
1287    <section class="publication-sites">
1288        <h2 class="heading-01">Our other sites</h2>
1289        <p>
1289The team at <a href="https://www.industrydive.com">Industry Dive</a> delivers news and exclusive insights to decision-makers across the most competitive industries.</p>
1290        <p>Explore our publications:</p>
1291        <ul>
1292            
1293                
1294                <li>
1295                    <a href="https://www.bankingdive.com">Banking Dive</a>
1296                </li>
1297            
1298                
1299                <li>
1300                    <a href="https://www.biopharmadive.com">BioPharma Dive</a>
1301                </li>
1302            
1303                
1304                <li>
1305                    <a href="https://www.cfo.com">CFO.com</a>
1306                </li>
1307            
1308                
1309                <li>
1310                    <a href="https://www.cfodive.com">CFO Dive</a>
1311                </li>
1312            
1313                
1314                <li>
1315                    <a href="https://www.channeldive.com">Channel Dive</a>
1316                </li>
1317            
1318                
1319                <li>
1320                    <a href="https://www.ciodive.com">CIO Dive</a>
1321                </li>
1322            
1323                
1324                <li>
1325                    <a href="https://www.constructiondive.com">Construction Dive</a>
1326                </li>
1327            
1328                
1329                <li>
1330                    <a href="https://www.cstoredive.com">C-Store Dive</a>
1331                </li>
1332            
1333                
1334                <li>
1335                    <a href="https://www.customerexperiencedive.com">CX Dive</a>
1336                </li>
1337            
1338                
1339                <li>
1340                    <a href="https://www.cybersecuritydive.com">Cybersecurity Dive</a>
1341                </li>
1342            
1343                
1344                <li>
1345                    <a href="https://www.esgdive.com">ESG Dive</a>
1346                </li>
1347            
1348                
1349                <li>
1350                    <a href="https://www.facilitiesdive.com">Facilities Dive</a>
1351                </li>
1352            
1353                
1354                <li>
1355                    <a href="https://www.fooddive.com">Food Dive</a>
1356                </li>
1357            
1358                
1359                <li>
1360                    <a href="https://www.grocerydive.com">Grocery Dive</a>
1361                </li>
1362            
1363                
1364                <li>
1365                    <a href="https://www.healthcaredive.com">Healthcare Dive</a>
1366                </li>
1367            
1368                
1369                <li>
1370                    <a href="https://www.highereddive.com">Higher Ed Dive</a>
1371                </li>
1372            
1373                
1374                <li>
1375                    <a href="https://www.hoteldive.com">Hotel Dive</a>
1376                </li>
1377            
1378                
1379                <li>
1380                    <a href="https://www.hrdive.com">HR Dive</a>
1381                </li>
1382            
1383                
1384                <li>
1385                    <a href="https://www.k12dive.com">K-12 Dive</a>
1386                </li>
1387            
1388                
1389                <li>
1390                    <a href="https://www.lightreadingdive.com">Light Reading</a>
1391                </li>
1392            
1393                
1394                <li>
1395                    <a href="https://www.manufacturingdive.com">Manufacturing Dive</a>
1396                </li>
1397            
1398                
1399                <li>
1400                    <a href="https://www.marketingdive.com">Marketing Dive</a>
1401                </li>
1402            
1403                
1404                <li>
1405                    <a href="https://www.medtechdive.com">MedTech Dive</a>
1406                </li>
1407            
1408                
1409                <li>
1410                    <a href="https://www.multifamilydive.com">Multifamily Dive</a>
1411                </li>
1412            
1413                
1414                <li>
1415                    <a href="https://www.packagingdive.com">Packaging Dive</a>
1416                </li>
1417            
1418                
1419                <li>
1420                    <a href="https://www.paymentsdive.com">Payments Dive</a>
1421                </li>
1422            
1423                
1424                <li>
1425                    <a href="https://www.pharmavoice.com">PharmaVoice</a>
1426                </li>
1427            
1428                
1429                <li>
1430                    <a href="https://www.restaurantdive.com">Restaurant Dive</a>
1431                </li>
1432            
1433                
1434                <li>
1435                    <a href="https://www.retaildive.com">Retail Dive</a>
1436                </li>
1437            
1438                
1439                <li>
1440                    <a href="https://www.socialmediatoday.com">Social Media Today</a>
1441                </li>
1442            
1443                
1444                <li>
1445                    <a href="https://www.supplychaindive.com">Supply Chain Dive</a>
1446                </li>
1447            
1448                
1449                <li>
1450                    <a href="https://www.techtargetdive.com">TechTarget</a>
1451                </li>
1452            
1453                
1454                <li>
1455                    <a href="https://www.truckingdive.com">Trucking Dive</a>
1456                </li>
1457            
1458                
1459                <li>
1460                    <a href="https://www.utilitydive.com">Utility Dive</a>
1461                </li>
1462            
1463                
1464                <li>
1465                    <a href="https://www.wardsauto.com">WardsAuto</a>
1466                </li>
1467            
1468                
1469                <li>
1470                    <a href="https://www.wastedive.com">Waste Dive</a>
1471                </li>
1472            
1473        </ul>
1474    </section>
1475
1476                            </section>
1477                            <aside class="sidebar large-4 columns">
1478                                
1479                                
1480                                    
1481                                    
1482                                        
1483
1484
1485
1486    
1487<div class="hybrid-ad-wrapper hide-small show-large">
1488    <div class="hybrid-ad-inner-wrapper">
1489        
1490            <div class="hide-small show-large">
1491        
1492        
1493            <div id='dfp-hybrid1-desktop'>
1494                
1494<script>
1495                    if (window.dfp_visibility === 'desktop' ) {
1496                        googletag.cmd.push(function() {
1497                            googletag.defineSlot(
1498                                '/3618/smartcitiesdive/smartcitiesdivehybrid1',
1499                                [[300, 250], 'fluid', [160, 600]],
1500                                'dfp-hybrid1-desktop'
1501                            ).addService(googletag.pubads());
1502                        });
1503                    }
1504                    waitToLoadAds.push(function() {
1505                        googletag.cmd.push(function() {
1506                            if (window.dfp_visibility === 'desktop' ) {
1507                                window.onDvtagReady?.(() => googletag.display('dfp-hybrid1-desktop'));
1508                                googletag.pubads().addEventListener('slotRenderEnded', function (event) {
1509                                    var adUnitPath = '/3618/smartcitiesdive/smartcitiesdivehybrid1';
1510                                    var onProformative = false;
1511                                    if (onProformative && event.slot.getAdUnitPath() === adUnitPath && !event.isEmpty ) {
1512                                        var adUnitPathWithVisibility = adUnitPath + '-desktop';
1513                                        var selector = '.pf-comments__ad-wrapper #dfp-hybrid1-desktop';
1514                                        if (!$(selector).closest('.pf-comments__ad-wrapper').hasClass('borders')) {
1515                                            $(selector).closest('.pf-comments__ad-wrapper').addClass('borders')
1516                                        }
1517                                    }
1518                                });
1519                            }
1520                        });
1521                    });
1522                </script>
1522
1523            </div>
1524        
1525        </div>
1526    </div>
1527</div>
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540 
1541    
1542    
1543        
1544            <div class="signup sidebar-signup-box hide-small show-large" data-box-priority="0">
1545                
1546                    <h3 class="sidebar-signup-box__header">Get the free newsletter</h3>
1547                    <p class="sidebar-signup-box__description">Subscribe to Smart Cities Dive for top news, trends & analysis</p>
1548                
1549        
1550            <form class="form js-form-email-validate" name="signup" action="/signup/" method="POST">
1551                
1552
1553                <label for="id_a8026f_email" class="email-input js-email-input">
1554                    <span class="screen-reader-text">Email:</span>
1555                    <input type="email" name="email" placeholder="Work email address" class="email" maxlength="320" required id="id_a8026f_email">
1556                </label>
1557
1558                <span class="captcha-container">
1559                    <div class="g-recaptcha"  data-sitekey="6LfnFggUAAAAAKaDTgN6vqjZtnNENIqa--TCG9F4" ></div>
1560                </span>
1561
1562                <input type="hidden" name="signup_box_location" value="sidebar">
1563                <input type="hidden" name="signup_initial_url_path" value="/about/">
1564                <input type="hidden" name="signup_internal_referrer">
1565                <input type="hidden" name="signup_external_referrer">
1566                <input type="hidden" name="referral_url">
1567
1568                
1569                    <input type="hidden" name="js_enabled" value="0" id="id_a8026f_js_enabled">
1570                
1571
1572                
1573                <ul class="signup-list list-no-bullets">
1574                
1575                    <li>
1576                        <label><span class="screen-reader-text">Select user consent:</span></label>
1577                        <input type="checkbox" name="user_consent" id="id_user_consent-sidebar" value="1" class="checkbox"/>
1578                        <label for="id_user_consent-sidebar">
1579                            <span class="signup-user-consent_box">
1580                                <span>
1581    By signing up to receive our newsletter, you agree to our
1582    <a href="https://www.informatechtarget.com/terms-of-use/" target="_blank">Terms of Use</a> and
1583    <a href="https://www.informatechtarget.com/privacy-policy/" target="_blank">Privacy Policy</a>. You can unsubscribe at anytime.
1584</span>
1585
1586                            </span>
1587                        </label>
1588                    </li>
1589                </ul>
1590                
1591                    <button class="button button--medium signup-button" type="submit" value="Sign up">Sign up</button>
1592                
1593                
1594
1595<script type="module" src="/static/js/dist/sendEmailToLytics.bundle.js?281219230926" ></script>
1595
1596
1597                
1598                <label class="error email_error" style="display:none;">A valid email address is required.</label>
1599                <label class="error newsletter-error" style="display:none;">Please select at least one newsletter.</label>
1600            </form>
1601        </div>
1602        
1603
1604        
1605        
1606            
1607
1608            
1609                <div class="sidebar-signup-box-it-pub hide-small show-large" data-box-priority="0">
1610    <div class="sidebar-signup-box-it-pub__sign-up-form">
1611        <h3 class="sidebar-signup-box-it-pub__header">Take your <span class="it_signup_headline_industry"></span> knowledge further with <span class="it_signup_site_name"></span></h3>
1612        <p class="sidebar-signup-box-it-pub__description free-signup-text">Sign up for the free <span class="it_signup_site_name"></span> newsletter. <span class="it_signup_copy"></span></p>
1613        <div class="sidebar-signup-box-it-pub__related-publication">
1614            <img class="sidebar-signup-box-it-pub__related-publication__logo" src="" alt="" />
1615            <p class="sidebar-signup-box-it-pub__description">
1616                Interested? Explore more of what <a class='it_signup_pub_link' href=""><span class="it_signup_site_name"></span></a> has to offer.
1617            </p>
1618            <div>
1619                <button class="button button-medium signup-button button-spinner" id="it_media_signup_button" type="button" data-sailthru-list-name="">
1620                    One-click newsletter signup
1621                    <div class="lds-ring sidebar-signup-box-spinner">
1622                        <div></div>
1623                        <div></div>
1624                        <div></div>
1625                        <div></div>
1626                    </div>
1627                </button>
1628            </div>
1629        </div>
1630    </div>
1631    <div class="sidebar-signup-box-it-pub__success-message">
1632        <h3 class="sidebar-signup-box__header">
1633            <svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">
1634                <path d="M15.6251 25L21.8751 31.25L34.3751 18.75M45.8334 25C45.8334 36.5058 36.5059 45.8333 25.0001 45.8333C13.4941 45.8333 4.16675 36.5058 4.16675 25C4.16675 13.4941 13.4941 4.16667 25.0001 4.16667C36.5059 4.16667 45.8334 13.4941 45.8334 25Z" stroke="#414192" stroke-linecap="round" stroke-linejoin="round"/>
1635            </svg>
1636            <div>You're all set</div>
1637        </h3>
1638        <p class="sidebar-signup-box__description">
1639            Thanks for signing up!
1640            Please keep an eye out for a confirmation email from
1641            <a href="/cdn-cgi/l/email-protection#ed83889a9e81889999889fad84999983889a9e81889999889fc38e8280"><span class="__cf_email__" data-cfemail="f59b908286999081819087b59c81819b908286999081819087db969a98">[email&#160;protected]</span></a>
1642            To ensure we make it into your inbox regularly,
1643            add us to your allow list, mark us as a safe sender, or add us to your address book.
1644            Check out more from
1645            <a class='it_signup_pub_link' href=""><span class="it_signup_pub_link"></span></a>
1646        </p>
1647    </div>
1648</div>
1649
1650            
1651
1652            <div class="subscriber-demographics demographics-form" id="demographics-box-sidebar"></div>
vendor: 121 bytes, lines 1652-1653
1652
1653            <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1653<script src="/static/js/subscriberDemographicsForm.js?520919230926"></script>
1653
1654            
1654<script>
1655                var siteName = 'Smart Cities Dive' || null;
1656                if (siteName) {
1657                    setupFormCallbackAndCreateFormIfSub(siteName, 'sidebar');
1658                }
1659            </script>
1659
1660        
1661    
1662
1663
1664
1665
1666
1667    
1668
1669
1670
1671
1672
1673    <div class="sidebar-box" data-box-priority="2">
1674        <h3 class="sidebar-box__header sidebar-box__header--loud">
1675            Most Popular
1676        </h3>
1677        <ol class="sidebar-box-list sidebar-box-list--ordered">
1678            
1679                <li class="sidebar-box-list__item sidebar-box-list__item--ordered flex">
1680                    <!-- image -->
1681                    <div class="sidebar-box-list__image-container">
1682                        <a class="analytics t-most-popular-sidebar-item-1 hide-small show-large"
1683                           href="/news/robotaxi-wars-uber-waymo-zoox-tesla/830930/">
1684                            
1685                            
1686
1687    
1688        <img
1689        class="sidebar-box-list__image"
1690        src="https://imgproxy.divecdn.com/Xv9RlFd82tWccd5YnUymMjOiYVs_mRZlZQKQeABzI1k/g:nowe:0:0/c:3200:1807/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0yMjY1ODEzMjgwLmpwZw==.webp"
1691        width="600" height="338"
1692        srcset="https://imgproxy.divecdn.com/_VxUyaF0zPbETz3iZgxqFKn5Hnx8_UrOVEtdLQO9G7k/g:nowe:0:0/c:3200:1807/rs:fill:300:169:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0yMjY1ODEzMjgwLmpwZw==.webp 300w, https://imgproxy.divecdn.com/Xv9RlFd82tWccd5YnUymMjOiYVs_mRZlZQKQeABzI1k/g:nowe:0:0/c:3200:1807/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0yMjY1ODEzMjgwLmpwZw==.webp 600w"
1693        sizes="25vw"
1694        alt="Uber customer gets into a car at Los Angeles International Airport on March 10, 2026"
1695        
1696            loading="lazy"
1697        
1698        >
1699    
1700
1701                        </a>
1702                    </div>
1703                    <div class="sidebar-box-title-container">
1704                        
1705
1706
1707
1708
1709
1710
1711                        <a class="analytics t-most-popular-sidebar-item-1 sidebar-box-list__item-title"
1712                           href="/news/robotaxi-wars-uber-waymo-zoox-tesla/830930/">Robotaxi competition revs up as Uber makes $10B investment in autonomous vehicles
1713                        </a> <!--Article Title-->
1714                    </div>
1715                </li>
1716            
1717                <li class="sidebar-box-list__item sidebar-box-list__item--ordered flex">
1718                    <!-- image -->
1719                    <div class="sidebar-box-list__image-container">
1720                        <a class="analytics t-most-popular-sidebar-item-2 hide-small show-large"
1721                           href="/news/epa-unlawfully-canceled-7b-solar-for-all-program-judge-rules/830904/">
1722                            
1723                            
1724
1725    
1726        <img
1727        class="sidebar-box-list__image"
1728        src="https://imgproxy.divecdn.com/tzp9AvkUQlFOPF7QLauxttPtxrHlqzksmqR4mSitdkk/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0yMTQ4MDE1MjU2LmpwZw==.webp"
1729        width="600" height="338"
1730        srcset="https://imgproxy.divecdn.com/jYI_rxSKsVBivv-74lfm6fumHum1Bt5oyTAiz5cojek/g:ce/rs:fill:300:169:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0yMTQ4MDE1MjU2LmpwZw==.webp 300w, https://imgproxy.divecdn.com/tzp9AvkUQlFOPF7QLauxttPtxrHlqzksmqR4mSitdkk/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0yMTQ4MDE1MjU2LmpwZw==.webp 600w"
1731        sizes="25vw"
1732        alt="A person wearing a blue suit points and talks into a microphone."
1733        
1734            loading="lazy"
1735        
1736        >
1737    
1738
1739                        </a>
1740                    </div>
1741                    <div class="sidebar-box-title-container">
1742                        
1743
1744
1745
1746
1747
1748    
1749    
1750        
1751    
1752
1753
1754                        <a class="analytics t-most-popular-sidebar-item-2 sidebar-box-list__item-title"
1755                           href="/news/epa-unlawfully-canceled-7b-solar-for-all-program-judge-rules/830904/">EPA unlawfully canceled $7B Solar for All program, judge rules
1756                        </a> <!--Article Title-->
1757                    </div>
1758                </li>
1759            
1760                <li class="sidebar-box-list__item sidebar-box-list__item--ordered flex">
1761                    <!-- image -->
1762                    <div class="sidebar-box-list__image-container">
1763                        <a class="analytics t-most-popular-sidebar-item-3 hide-small show-large"
1764                           href="/news/housing-density-california-cities-bill-newsom/831022/">
1765                            
1766                            
1767
1768    
1769        <img
1770        class="sidebar-box-list__image"
1771        src="https://imgproxy.divecdn.com/Jya6TPeRae25RdAFJEMk8PZZttRStYrQzVqJ4B4MZsk/g:ce/rs:fill:600:338:1/Z3M6Ly9kaX
1771Zlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0xNDU1MzYzOTAxLmpwZw==.webp"
1772        width="600" height="338"
1773        srcset="https://imgproxy.divecdn.com/7oQY8UbhHxhqubLsdFW7FSyPyixxOnLPeOK307x8o-o/g:ce/rs:fill:300:169:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0xNDU1MzYzOTAxLmpwZw==.webp 300w, https://imgproxy.divecdn.com/Jya6TPeRae25RdAFJEMk8PZZttRStYrQzVqJ4B4MZsk/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0xNDU1MzYzOTAxLmpwZw==.webp 600w"
1774        sizes="25vw"
1775        alt="Downtown San Diego skyline"
1776        
1777            loading="lazy"
1778        
1779        >
1780    
1781
1782                        </a>
1783                    </div>
1784                    <div class="sidebar-box-title-container">
1785                        
1786
1787
1788
1789
1790
1791    
1792    
1793        
1794    
1795
1796
1797                        <a class="analytics t-most-popular-sidebar-item-3 sidebar-box-list__item-title"
1798                           href="/news/housing-density-california-cities-bill-newsom/831022/">More high-rises could be coming to 7 California cities under housing density bill
1799                        </a> <!--Article Title-->
1800                    </div>
1801                </li>
1802            
1803                <li class="sidebar-box-list__item sidebar-box-list__item--ordered flex">
1804                    <!-- image -->
1805                    <div class="sidebar-box-list__image-container">
1806                        <a class="analytics t-most-popular-sidebar-item-4 hide-small show-large"
1807                           href="/news/ai-threats-state-guardrails-newsom-pritzker-hochul/831145/">
1808                            
1809                            
1810
1811    
1812        <img
1813        class="sidebar-box-list__image"
1814        src="https://imgproxy.divecdn.com/erBpPE9rRugT1ozPv8KL1F47fgcCDm_0mxW0KamcaZM/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9Qcml0emtlci5qcGc=.webp"
1815        width="600" height="338"
1816        srcset="https://imgproxy.divecdn.com/suCO46POsR_DeOvt5u8u1KbpHOTW5zpVK1RnGcvOeac/g:ce/rs:fill:300:169:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9Qcml0emtlci5qcGc=.webp 300w, https://imgproxy.divecdn.com/erBpPE9rRugT1ozPv8KL1F47fgcCDm_0mxW0KamcaZM/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9Qcml0emtlci5qcGc=.webp 600w"
1817        sizes="25vw"
1818        alt="A person holding a microphone while gesturing"
1819        
1820            loading="lazy"
1821        
1822        >
1823    
1824
1825                        </a>
1826                    </div>
1827                    <div class="sidebar-box-title-container">
1828                        
1829
1830
1831
1832
1833
1834    
1835    
1836        
1837    
1838
1839
1840                        <a class="analytics t-most-popular-sidebar-item-4 sidebar-box-list__item-title"
1841                           href="/news/ai-threats-state-guardrails-newsom-pritzker-hochul/831145/">As AI threats grow, governors propose more guardrails — including a ‘kill switch’
1842                        </a> <!--Article Title-->
1843                    </div>
1844                </li>
1845            
1846        </ol>
1847    </div>
1848
1849
1850
1851
1852
1853
1854    
1855
1856
1857
1858
1859
1860
1861    <div class="sidebar-box hide-small show-large" data-box-priority="4">
1862        <h3 class="sidebar-box__header">Library resources</h3>
1863        <ul class="sidebar-box-list">
1864            
1865                <li class="sidebar-box-list__item flex">
1866                    
1867                        <div class='sidebar-box-list__icon sidebar-box-list__icon--soft'>
1868                            
1869                                <img src="/static/img/lib_icons/playbook-black.svg?520919230926" height="25" width="25" alt="Studio resource icon" loading="lazy">
1870                            
1871                        </div>
1872                    
1873                    <div>
1874                        
1875                            <div class="label label--soft">Playbook</div>
1876                        
1877                        <a class="analytics t-library-sidebar-item-1 sidebar-box-list__item-title"
1878                           target="_blank"
1879                           href="https://smartcitiesdive.tradepub.com/c/pubRD.mpl?secure=1&amp;sr=pp&amp;_t=pp%3A&amp;qf=w_defa11582&amp;ch=Library&amp;utm_source=SMCD&amp;utm_medium=Library&amp;utm_campaign=Camber">
1880                            How To Build Municipal EV Fleet Infrastru
1880cture
1881                        </a>
1882                        
1883
1884
1885    <span class="sponsor-label__leading-text  secondary-label">Custom content for </span>
1886    <span class="sponsor-label__name  secondary-label">Camber</span>
1887
1888
1889                    </div>
1890                </li>
1891            
1892                <li class="sidebar-box-list__item flex">
1893                    
1894                        <div class='sidebar-box-list__icon sidebar-box-list__icon--soft'>
1895                            
1896                                <img src="/static/img/lib_icons/whitepaper-black.svg?520919230926" height="25" width="25" alt="Studio resource icon" loading="lazy">
1897                            
1898                        </div>
1899                    
1900                    <div>
1901                        
1902                            <div class="label label--soft">Infographic</div>
1903                        
1904                        <a class="analytics t-library-sidebar-item-2 sidebar-box-list__item-title"
1905                           target="_blank"
1906                           href="https://smartcitiesdive.tradepub.com/c/pubRD.mpl?secure=1&amp;sr=pp&amp;_t=pp%3A&amp;qf=w_defa10528&amp;ch=Library&amp;utm_source=SMCD&amp;utm_medium=Library&amp;utm_campaign=Samsara">
1907                            A Disaster Preparedness Checklist for Public Agencies
1908                        </a>
1909                        
1910
1911
1912    <span class="sponsor-label__leading-text  secondary-label">Custom content for </span>
1913    <span class="sponsor-label__name  secondary-label">Samsara</span>
1914
1915
1916                    </div>
1917                </li>
1918            
1919                <li class="sidebar-box-list__item flex">
1920                    
1921                        <div class='sidebar-box-list__icon sidebar-box-list__icon--soft'>
1922                            
1923                                <img src="/static/img/lib_icons/playbook-black.svg?520919230926" height="25" width="25" alt="Studio resource icon" loading="lazy">
1924                            
1925                        </div>
1926                    
1927                    <div>
1928                        
1929                            <div class="label label--soft">Playbook</div>
1930                        
1931                        <a class="analytics t-library-sidebar-item-3 sidebar-box-list__item-title"
1932                           target="_blank"
1933                           href="https://smartcitiesdive.tradepub.com/c/pubRD.mpl?secure=1&amp;sr=pp&amp;_t=pp:&amp;qf=w_defa10431&amp;ch=Library&amp;utm_source=SMCD&amp;utm_medium=Library&amp;utm_campaign=Samsara">
1934                            How Local Leaders Can Build Trust Through Technology
1935                        </a>
1936                        
1937
1938
1939    <span class="sponsor-label__leading-text  secondary-label">Custom content for </span>
1940    <span class="sponsor-label__name  secondary-label">Samsara</span>
1941
1942
1943                    </div>
1944                </li>
1945            
1946        </ul>
1947        <a class="analytics t-library-sidebar-all sidebar-box__cta"
1948           aria-label="View all library items"
1949           href="/library/">View all</a>
1950    </div>
1951
1952
1953
1954
1955
1956
1957    
1958
1959<div class="sidebar-box js-pressrelease-sidebar-box" data-box-priority=" 6 ">
1960    <h3 class="sidebar-box__header">Company Announcements</h3>
1961    <div class="press-release-placeholder">
1962        <ul class="sidebar-box-list"
1963         hx-get="/api/v3/htmx/boxes/pressrelease-sidebar-box/"
1964         hx-trigger="load"
1965         hx-swap="outerHTML">
1966            
1967            
1968            <li class="sidebar-box-list__item flex pr-box-skeleton-item">
1969                <div class="sidebar-box-list__thumbnail-container pr-box-skeleton-image"></div>
1970                <div class="sidebar-box-title-container">
1971                    <div class="pr-box-skeleton-text-line"></div>
1972                    <div class="pr-box-skeleton-text-line"></div>
1973                    <div class="pr-box-skeleton-text-line"></div>
1974                    <div class="pr-box-skeleton-text-line"></div>
1975                    <div class="pr-box-skeleton-text-line pr-box-skeleton-company-name"></div>
1976                </div>
1977            </li>
1978            
1979            <li class="sidebar-box-list__item flex pr-box-skeleton-item">
1980                <div class="sidebar-box-list__thumbnail-container pr-box-skeleton-image"></div>
1981                <div class="sidebar-box-title-container">
1982                    <div class="pr-box-skeleton-text-line"></div>
1983                    <div class="pr-box-skeleton-text-line"></div>
1984                    <div class="pr-box-skeleton-text-line"></div>
1985                    <div class="pr-box-skeleton-text-line"></div>
1986                    <div class="pr-box-skeleton-text-line pr-box-skeleton-company-name"></div>
1987                </div>
1988            </li>
1989            
1990            <li class="sidebar-box-list__item flex pr-box-skeleton-item">
1991                <div class="sidebar-box-list__thumbnail-container pr-box-skeleton-image"></div>
1992                <div class="sidebar-box-title-container">
1993                    <div class="pr-box-skeleton-text-line"></div>
1994                    <div class="pr-box-skeleton-text-line"></div>
1995                    <div class="pr-box-skeleton-text-line"></div>
1996                    <div class="pr-box-skeleton-text-line"></div>
1997                    <div class="pr-box-skeleton-text-line pr-box-skeleton-company-name"></div>
1998                </div>
1999            </li>
2000            
2001            <li class="sidebar-box-list__item flex pr-box-skeleton-item">
2002                <div class="sidebar-box-list__thumbnail-container pr-box-skeleton-image"></div>
2003                <div class="sidebar-box-title-container">
2004                    <div class="pr-box-skeleton-text-line"></div>
2005                    <div class="pr-box-skeleton-text-line"></div>
2006                    <div class="pr-box-skeleton-text-line"></div>
2007                    <div class="pr-box-skeleton-text-line"></div>
2008                    <div class="pr-box-skeleton-text-line pr-box-skeleton-company-name"></div>
2009                </div>
2010            </li>
2011            
2012        </ul>
2013        <span class="sidebar-box__cta">
2014            <a class="analytics t-pr-sidebar-all"
2015               aria-label="View all press release items"
2016               href="/press-release/">View all</a>
2017            
2018                | <a class="analytics t-pr-sidebar-start" href="/press-release/get-started/">Post a press release</a>
2019            
2020        </span>
2021    </div>
2022</div>
2023
2024
2025
2026
2027    
2028
2029
2030
2031
2032
2033
2034    
2035        
2036            <div class="sidebar-box hide-small show-large" data-box-priority="8">
2037                <h3 class="sidebar-box__header">What We're Reading</h3>
2038                    <ul class="sidebar-box-list">
2039                        
2040                        
2041                            <li class="sidebar-box-list__item">
2042                                <img src="https://www.google.com/s2/favicons?sz=32&domain=https%3A//www.bloomberg.com/graphics/2026-ai-data-center-heat-pollution-cities/"
2043                                     srcset="https://www.google.com/s2/favicons?sz=32&domain=https%3A//www.bloomberg.com/graphics/2026-ai-data-center-heat-pollution-cities/ 1x, https://www.google.com/s2/favicons?sz=64&domain=https%3A//www.bloomberg.com/graphics/2026-ai-data-center-heat-pollution-cities/ 2x" height="16" width="16" alt="" loading="lazy">
2044                                <span class="label label--soft">Bloomberg</span>
2045                                <a class="analytics t-wwr-sidebar-item sidebar-box-list__item-title" href="https://www.bloomberg.com/graphics/2026-ai-data-center-heat-pollution-cities/" target="_blank">
2046                                    Data Center Clusters Spread Hot Air, Pollution Across Cities
2047                                    <img src="/static/img/offsite.svg?520919230926" class="off-site-link" alt="offsite link" height="12" width="12" loading="lazy">
2048                                </a>
2049                            </li>
2050                        
2051                            <li class="sidebar-box-list__item">
2052                                <img src="https://www.google.com/s2/favicons?sz=32&domain=https%3A//www.npr.org/2026/09/21/nx-s1-5973179/equinox-henge-sunrise-sunset"
2053                                     srcset="https://www.google.com/s2/favicons?sz=32&domain=https%3A//www.npr.org/2026/09/21/nx-s1-5973179/equinox-henge-sunrise-sunset 1x, https://www.google.com/s2/favicons?sz=64&domain=https%3A//www.npr.org/2026/09/21/nx-s1-5973179/equinox-henge-sunrise-sunset 2x" height="16" width="16" alt="" loading="lazy">
2054                                <span class="label label--soft">NPR</span>
2055                                <a class="analytics t-wwr-sidebar-item sidebar-box-list__item-title" href="https://www.npr.org/2026/09/21/nx-s1-5973179/equinox-henge-sunrise-sunset" target="_blank">
2056                                    Equinox brings ‘henge’ effect to cities laid out on a grid
2057                                    <img src="/static/img/offsite.svg?520919230926" class="off-site-link" alt="offsite link" height="12" width="12" loading="lazy">
2058                                </a>
2059                            </li>
2060                        
2061                            <li class="sidebar-box-list__item">
2062                                <img src="https://www.google.com/s2/favicons?sz=32&domain=https%3A//arstechnica.com/tech-policy/2026/09/cities-across-us-oppose-trump-fcc-plan-to-preempt-local-broadband-rules/"
2063                                     srcset="https://www.google.com/s2/favicons?sz=32&domain=https%3A//arstechnica.com/tech-policy/2026/09/cities-across-us-oppose-trump-fcc-plan-to-preempt-local-broadband-rules/ 1x, https://www.google.com/s2/favicons?sz=64&domain=https%3A//arstechnica.com/tech-policy/2026/09/cities-across-us-oppose-trump-fcc-plan-to-preempt-local-broadband-rules/ 2x" height="16" width="16" alt="" loading="lazy">
2064                                <span class="label label--soft">Ars Technica</span>
2065                                <a class="analytics t-wwr-sidebar-item sidebar-box-list__item-title" href="https://arstechnica.com/tech-policy/2026/09/cities-across-us-oppose-trump-fcc-plan-to-preempt-local-broadband-rules/" target="_blank">
2066                                    Cities across US oppose Trump FCC plan to preempt local broadband rules
2067                                    <img src="/static/img/offsite.svg?520919230926" class="off-site-link" alt="offsite link" height="12" width="12" loading="lazy">
2068                                </a>
2069                            </li>
2070                        
2071                    </ul>
2072                <a class="analytics t-wwr-sidebar-all sidebar-box__cta"
2073                    aria-label="View all what we are reading items"
2074                    href="/what-we-are-reading">View all</a>
2075            </div>
2076        
2077    
2078
2079
2080
2081
2082
2083    
2084
2085
2086
2087
2088<div class="sidebar-box hide-small show-large" data-box-priority="10">
2089    <h3 class="sidebar-box__header">Events</h3>
2090    <div class="events-placeholder">
2091        <ul class="sidebar-box-list"
2092         hx-get="/api/v3/htmx/boxes/events-sidebar-box/"
2093         hx-trigger="load"
2094         hx-swap="outerHTML">
2095            
2096            
2097            <li class="sidebar-box-list__item flex events-box-skeleton-item">
2098                <div class="sidebar-box-list__events-date events-box-skeleton-date">
2099                    <span class="events-box-skeleton-day"></span>
2100                    <span class="events-box-skeleton-month"></span>
2101                </div>
2102                <div class="sidebar-box-title-container__events">
2103                    <div class="events-box-skeleton-text-line"></div>
2104                    <div class="events-box-skeleton-text-line"></div>
2105                    <div class="events-box-skeleton-text-line events-box-skeleton-location"></div>
2106                </div>
2107            </li>
2108            
2109            <li class="sidebar-box-list__item flex events-box-skeleton-item">
2110                <div class="sidebar-box-list__events-date events-box-skeleton-date">
2111                    <span class="events-box-skeleton-day"></span>
2112                    <span class="events-box-skeleton-month"></span>
2113                </div>
2114                <div class="sidebar-box-title-container__events">
2115                    <div class="events-box-skeleton-text-line"></div>
2116                    <div class="events-box-skeleton-text-line"></div>
2117                    <div class="events-box-skeleton-text-line events-box-skeleton-location"></div>
2118                </div>
2119            </li>
2120            
2121        </ul>
2122        <div class="sidebar-box__cta">
2123            <a class="analytics t-events-sidebar-all" href="/events/">View all</a>
2124            
2125                | <a class="analytics t-events-sidebar-start" href="/selfservice/event-listings/contact">Promote an event</a>
2126            
2127        </div>
2128    </div>
2129</div>
2130
2131
2132
2133
2134    
2135
2136
2137
2138
2139
2140    <div class="sidebar-box hide-small show-large" data-box-priority="8">
2141        <h3 class="sidebar-box__header">Industry Intel</h3>
2142        <ul class="sidebar-box-list">
2143            
2144                <li class="sidebar-box-list__item">
2145                    <a class="analytics t-intel-sidebar-item sidebar-box-list__item-title"
2146                       target="_blank"
2147                       href="http://resources.industrydive.com/Get-ready-for-a-hands-on-look-at-the-future-of-road-safety">
2148                        Get ready for a hands-on look at the future of road safety
2149                    </a>
2150                    
2151                        <span class="secondary-label secondary-label--all-caps">Webinar - on demand</span>
2152                    
2153                    
2154                        
2155                            <span class="secondary-label">&bull;</span>
2156                        
2157                            <span class="secondary-label">Provided by Samsara</span>
2158                    
2159                </li>
2160            
2161        </ul>
2162    </div>
2163
2164
2165
2166
2167
2168
2169
2170    
2171<div class="hybrid-ad-wrapper hide-small show-large">
2172    <div class="hybrid-ad-inner-wrapper">
2173        
2174            <div class="hide-small show-large">
2175        
2176        
2177            <div id='dfp-hybrid2-desktop'>
2178                
2178<script>
2179                    if (window.dfp_visibility === 'desktop' ) {
2180                        googletag.cmd.push(function() {
2181                            googletag.defineSlot(
2182                                '/3618/smartcitiesdive/smartcitiesdivehybrid2',
2183                                [[300, 250], 'fluid', [160, 600]],
2184                                'dfp-hybrid2-desktop'
2185                            ).addService(googletag.pubads());
2186                        });
2187                    }
2188                    waitToLoadAds.push(function() {
2189                        googletag.cmd.push(function() {
2190                            if (window.dfp_visibility === 'desktop' ) {
2191                                window.onDvtagReady?.(() => googletag.display('dfp-hybrid2-desktop'));
2192                                googletag.pubads().addEventListener('slotRenderEnded', function (event) {
2193                                    var adUnitPath = '/3618/smartcitiesdive/smartcitiesdivehybrid2';
2194                                    var onProformative = false;
2195                                    if (onProformative && event.slot.getAdUnitPath() === adUnitPath && !event.isEmpty ) {
2196                                        var adUnitPathWithVisibility = adUnitPath + '-desktop';
2197                                        var selector = '.pf-comments__ad-wrapper #dfp-hybrid2-desktop';
2198                                        if (!$(selector).closest('.pf-comments__ad-wrapper').hasClass('borders')) {
2199                                            $(selector).closest('.pf-comments__ad-wrapper').addClass('borders')
2200                                        }
2201                                    }
2202                                });
2203                            }
2204                        });
2205                    });
2206                </script>
2206
2207            </div>
2208        
2209        </div>
2210    </div>
2211</div>
2212
2213
2214
2215
2216
2217                                    
2218                            </aside>
2219                        </div>
2220                    </div>
2221
2222                
2223
2224                </div> <!-- ends page-inner-wrapper -->
2225
2226                <section class="pre-footer">
2227                    
2228                </section>
2229
2230                
2231                    
2232
2233
2234
2235
2236
2237<hr class="footer-hr">
2238<footer>
2239    <div class="custom-article-footer">
2240        <div class="row columns">
2241            <div class="footer-grid">
2242                <div class="footer-links">
2243                    <img class="pub-logo-footer" src="https://d12v9rtnomnebu.cloudfront.net/logo/publications/smartcities_black.svg" alt="Smart Cities Dive Logo" height="28" loading="lazy"/>
2244                    
2245                    
2246
2247
2248<ul class="social-icon-list social-icon-list__footer">
2249    
2250        <li>
2251            <a href="https://www.linkedin.com/company/smart-cities-dive"
2252               aria-label="Industry Dive LinkedIn"
2253               class="social-icon-footer analytics t-sitefooter-linkedin">
2254                <img src="/static/img/social_icons/article_page/linkedin.svg?520919230926" alt="">
2255            </a>
2256        </li>
2257    
2258    
2259        <li>
2260            <a href="https://www.facebook.com/SmartCitiesDive"
2261               aria-label="Industry Dive Facebook"
2262               class="social-icon-footer analytics t-sitefooter-facebook">
2263                <img src="/static/img/social_icons/article_page/facebook.svg?520919230926"  alt="">
2264            </a>
2265        </li>
2266    
2267    
2268        <li>
2269            <a href="https://twitter.com/smartcitiesdive"
2270               aria-label="Industry Dive X/Twitter"
2271               class="social-icon-footer analytics t-sitefooter-twitter">
2272                <img src="/static/img/social_icons/article_page/x.svg?520919230926" alt="">
2273            </a>
2274        </li>
2275    
2276    
2277    
2278    <li>
2279        <a href="https://www.smartcitiesdive.com/feeds/news/"
2280           aria-label="Industry Dive RSS feed"
2281           class="social-icon-footer analytics t-sitefooter-rss">
2282            <img src="/static/img/social_icons/article_page/rss.svg?520919230926" alt="">
2283        </a>
2284    </li>
2285</ul>
2286
2287                </div>
2288                <div class="link-wrapper">
2289                    <div class="footer-links">
2290                        <h4 class="uppercase-heading-01">Explore</h4>
2291                        <ul class="list-no-bullets">
2292                            <li>
2293                                <a href="/about/" class="analytics t-about-sitefooter">About</a>
2294                            </li>
2295                            
2296                                <li>
2297                                    <a href="/editors/" class="analytics t-editors-sitefooter">Editorial Team</a>
2298                                </li>
2299                            
2300                            <li>
2301                                <a href="/contact/" class="analytics t-feedback-sitefooter">Contact Us</a>
2302                            </li>
2303                            
2304                                <li>
2305                                    <a href="/signup/?signup_location=footer-list&amp;signup_path=/about/"
2306                                       rel="nofollow" class="analytics t-signup-sitefooter">Newsletter</a>
2307                                </li>
2308                                
2309                                    <li>
2310                                        <a href="/selfservice/article-licensing/submit/"
2311                                           rel="nofollow" class="analytics t-licensing-sitefooter">Purchase Licensing Rights</a>
2312                                    </li>
2313                                
2314                            
2315                            
2316                            <li>
2317                                <a class="analytics t-pr-sitefooter-all" href="/press-release/">Press Releases</a>
2318                            </li>
2319                            
2320                            
2321                            
2322                            
2323                            
2324                            <li>
2325                                <a href="/what-we-are-reading/" class="analytics t-wwr-sitefooter">What We're Reading</a>
2326                            </li>
2327                            
2328                            
2329                            
2330                            
2331                        </ul>
2332                    </div>
2333                    <div class="second-column">
2334                        <div class="footer-links">
2335                            <h4 class="uppercase-heading-01">Reach our audience</h4>
2336                            <ul class="list-no-bullets">
2337                                
2338                                    <li>
2339                                        <a href="/advertise/"
2340                                           class="analytics t-advertising-sitefooter">Advertising</a>
2341                                    </li>
2342                                
2343                                
2344                                    <li>
2345                                        <a class="analytics t-pr-sitefooter-all"
2346                                           href="/press-release/get-started/">Post a press release</a>
2347                                    </li>
2348                                
2349                                
2350                                <li>
2351                                    <a class="analytics t-pr-sitefooter-all" href="/opinion/submit-opinion/">Submit an opinion piece</a>
2352                                </li>
2353                                
2354                                
2355                                    <li>
2356                                        <a class="analytics t-events-sitefooter-start" href="/selfservice/event-listings/contact">Promote an event</a>
2357                                    </li>
2358                                
2359                                
2360                            </ul>
2361                        </div>
2362                        <div class="footer-links">
2363                            
2364                                
2365                                    <h4 class="uppercase-heading-01">Related Publications</h4>
2366                                    <ul class="list-no-bullets">
2367                                        
2368                                            <li>
2369                                                <a href="https://www.facilitiesdive.com/"
2370                                                   class="analytics t-sitefooter-related-facilities-dive">Facilities Dive</a>
2371                                            </li>
2372                                        
2373                                            <li>
2374                                                <a href="https://www.utilitydive.com/"
2375                                                   class="analytics t-sitefooter-related-utility-dive">Utility Dive</a>
2376                                            </li>
2377                                        
2378                                            <li>
2379                                                <a href="https://www.wastedive.com/"
2380                                                   class="analytics t-sitefooter-related-waste-dive">Waste Dive</a>
2381                                            </li>
2382                                        
2383                                    </ul>
2384                                
2385                            
2386                        </div>
2387                    </div>
2388                </div>
2389            </div>
2390        </div>
2391    </div>
2392</footer>
2393<hr class="footer-hr">
2394<div class="baseline-footer-wrapper">
2395    <div class="baseline-footer-logo">
2396        <a href="https://www.informatechtarget.com">
2397            <img src="/static/img/ITechTarget-Logo.png?520919230926" alt="Informa TechTarget" loading="lazy" />
2398        </a>
2399    </div>
2400    <div class="baseline-footer-content">
2401        <div>
2402            
2403            This website is owned and operated by
2404            <a href="https://www.informatechtarget.com/" rel="noopener noreferrer">Informa TechTarget</a>,
2405            a global network that informs, influences and connects the world's technology buyers and sellers.
2406            
2407        </div>
2408        <br>
2409        <div class="informa-legal-notice">
2410            
2411
2412<div class="baseline-footer">
2413    &copy; 2025 TechTarget, Inc. or its subsidiaries. All rights reserved. An Informa PLC company.
2414    <br>
2415    <a href="https://www.informatechtarget.com/privacy-policy/">Privacy policy</a>
2416    | <a href="https://www.informatechtarget.com/terms-of-use/">Terms of use</a>
2417    | <a href="https://www.industrydive.com/takedown-policy/">Take down policy</a>
2418    | <a href="#" onclick="Osano.cm.showDrawer('osano-cm-dom-info-dialog-open')">Cookie Preferences / Do Not Sell</a>
2419</div>
2420
2421        </div>
2422    </div>
2423</div>
2424
2425                
2426
2427            </div>
2428        </div>
2429
2430        
2431
2432        <!-- mobile menu, not visible on desktop, must go AFTER footer -->
2433        
2434            
2435
2436
2437 <nav class="mobile-menu">
2438    <div class="mm-top-bar">
2439        <div class="mm-search">
2440            <form class="mm-search__form" action="/search/" method="GET" data-ajax="false" data-search-track data-search-tracking-url="/search/tracking/">
2441                <label for="search-mobile" class="screen-reader-text">Search</label>
2442                <input
2443                    id="search-mobile"
2444                    class="mm-search__input"
2445                    type="search"
2446                    name="q"
2447                    placeholder="Ask a question..."
2448                    data-role="none"
2449                    autocomplete="off"
2450                >
2451                <button
2452                    type="button"
2453                    class="mm-search__clear js-mm-search-clear"
2454                    aria-label="Clear search"
2455                    hidden
2456                >
2457                    <img src="/static/img/components/forms/x-circle.svg?520919230926" width="16" height="16" alt="">
2458                </button>
2459            </form>
2460        </div>
2461        
2462        
2463            <button type="button" class="mm-top-bar__close js-mm-close" aria-label="Close menu">
2464                <img src="/static/img/menu_icons/close.svg?520919230926" width="16" height="16" alt="">
2465            </button>
2466        
2467    </div>
2468    
2469        
2470
2471
2472
2473
2474<ul class="mm-list list-no-bullets">
2475    <li>
2476        <a href="/" class="analytics t-dash-navigation-mobile">
2477            <span>Home</span>
2478        </a>
2479    </li>
2480    <li class="mm-accordion">
2481        <button>
2482            <span>Topics</span>
2483            <span class="accordion-toggle-arrow">
2484                <img src="/static/img/menu_icons/chevron_down.svg?520919230926" width="16" height="9" alt="down arrow" loading="lazy">
2485            </span>
2486        </button>
2487        <ul class="list-no-bullets">
2488            
2489                
2490                <li>
2491                    <a class="analytics t-topic-navigation-mobile-transportation" href="/topic/transportation/">Transportation</a>
2492                </li>
2493            
2494                
2495                <li>
2496                    <a class="analytics t-topic-navigation-mobile-buildings-and-infrastructure" href="/topic/buildings-and-infrastructure/">Buildings &amp; Design</a>
2497                </li>
2498            
2499                
2500                <li>
2501                    <a class="analytics t-topic-navigation-mobile-resilience" href="/topic/resilience/">Climate &amp; Resilience</a>
2502                </li>
2503            
2504                
2505                <li>
2506                    <a class="analytics t-topic-navigation-mobile-utilities" href="/topic/utilities/">Utilities</a>
2507                </li>
2508            
2509                
2510                <li>
2511                    <a class="analytics t-topic-navigation-mobile-housing" href="/topic/housing/">Housing</a>
2512                </li>
2513            
2514                
2515                <li>
2516                    <a class="analytics t-topic-navigation-mobile-tech-and-data" href="/topic/tech-and-data/">Tech &amp; Data</a>
2517                </li>
2518            
2519                
2520                <li>
2521                    <a class="analytics t-topic-navigation-mobile-governance-finance" href="/topic/governance-finance/">Governance &amp; Finance</a>
2522                </li>
2523            
2524                
2525                <li>
2526                    <a class="analytics t-topic-navigation-mobile-equity" href="/topic/equity/">Equity</a>
2527                </li>
2528            
2529                
2530                <li>
2531                    <a class="analytics t-topic-navigation-mobile-public-safety" href="/topic/public-safety/">Public Safety</a>
2532                </li>
2533            
2534        </ul>
2535    </li>
2536
2537    <li>
2538        <a href="/deep-dive/" class="analytics t-deepdive-navigation-mobile">
2539            <span>Deep Dive</span>
2540        </a>
2541    </li>
2542
2543
2544    <li>
2545        <a href="/opinion/" class="analytics t-opinion-navigation-mobile">
2546            <span>Opinion</span>
2547        </a>
2548    </li>
2549
2550
2551
2552    <li>
2553        <a href="/library/" class="analytics t-library-navigation-mobile">
2554            <span>Library</span>
2555        </a>
2556    </li>
2557
2558
2559    <li>
2560        <a href="/events/" class="analytics t-events-navigation-mobile">
2561            <span>Events</span>
2562        </a>
2563    </li>
2564
2565
2566    <li>
2567        <a href="/press-release/" class="analytics t-press-releases-navigation-mobile">
2568            <span>Press Releases</span>
2569        </a>
2570    </li>
2571
2572
2573
2574    <li>
2575        <a href="/news/2026-smart-cities-dive-public-service-awards-call-for-nominations/813743/" class="analytics t-awards-navigation-mobile">Awards</a>
2576    </li>
2577
2578
2579</ul>
2580
2581
2582    
2583    
2584        
2585        <section class="signup mm-signup">
2586            <div class="row">
2587                
2588
2589
2590
2591
2592
2593
2594 
2595    
2596    
2597        
2598            <div class="large-9 medium-10 medium-centered columns">
2599                <h3 class="display-heading-03 display-heading-03--loud">Get Smart Cities Dive in your inbox</h3>
2600                <p class="subhead">The free newsletter covering the top industry headlines</p>
2601        
2602            <form class="form js-form-email-validate" name="signup" action="/signup/" method="POST">
2603                
2604
2605                <label for="id_5fe397_email" class="email-input js-email-input">
2606                    <span class="screen-reader-text">Email:</span>
2607                    <input type="email" name="email" placeholder="Work email address" class="email" maxlength="320" required id="id_5fe397_email">
2608                </label>
2609
2610                <span class="captcha-container">
2611                    <div class="g-recaptcha"  data-sitekey="6LfnFggUAAAAAKaDTgN6vqjZtnNENIqa--TCG9F4" ></div>
2612                </span>
2613
2614                <input type="hidden" name="signup_box_location" value="integrated_menu">
2615                <input type="hidden" name="signup_initial_url_path" value="/about/">
2616                <input type="hidden" name="signup_internal_referrer">
2617                <input type="hidden" name="signup_external_referrer">
2618                <input type="hidden" name="referral_url">
2619
2620                
2621                    <input type="hidden" name="js_enabled" value="0" id="id_5fe397_js_enabled">
2622                
2623
2624                
2625                <ul class="signup-list list-no-bullets">
2626                
2627                    <li>
2628                        <label><span class="screen-reader-text">Select user consent:</span></label>
2629                        <input type="checkbox" name="user_consent" id="id_user_consent-integrated_menu" value="1" class="checkbox"/>
2630                        <label for="id_user_consent-integrated_menu">
2631                            <span class="signup-user-consent_box">
2632                                <span>
2633    By signing up to receive our newsletter, you agree to our
2634    <a href="https://www.informatechtarget.com/terms-of-use/" target="_blank">Terms of Use</a> and
2635    <a href="https://www.informatechtarget.com/privacy-policy/" target="_blank">Privacy Policy</a>. You can unsubscribe at anytime.
2636</span>
2637
2638                            </span>
2639                        </label>
2640                    </li>
2641                </ul>
2642                
2643                    <button class="button button--medium signup-button" type="submit" value="Sign up">Sign up</button>
2644                
2645                
2646
2647<script type="module" src="/static/js/dist/sendEmailToLytics.bundle.js?281219230926" ></script>
2647
2648
2649                
2650                <label class="error email_error" style="display:none;">A valid email address is required.</label>
2651                <label class="error newsletter-error" style="display:none;">Please select at least one newsletter.</label>
2652            </form>
2653        </div>
2654        
2655
2656        
2657        
2658    
2659
2660            </div>
2661        </section>
2662    
2663    
2664</nav>
2665
2666        
2667    
2668        
2669        
2670        
2671        
2672            
2673<style>
2674  /* Keep this hidden until we need to show the v2 challenge. */
2675  .captcha-container { display: none; }
2676</style>
2677<script>
2678  (function () {
2679    // v3-first, v2-fallback: score on submit via /signup/recaptcha-v3-score/; show checkbox challenge if score is low or v3 fails.
2680
2681    // Shared config: site keys and constants that are the same for every form on the page.
2682    // Set once; subsequent calls (e.g. from _signupform.html on landing pages) are no-ops.
2683    if (!window._signupRecaptchaSharedConfig) {
2684      window._signupRecaptchaSharedConfig = {
2685        v2ContainerSelector: '.captcha-container',
2686        v2ElementSelector: '.g-recaptcha',
2687        submitAction: 'signup_submit',
2688        scoreThreshold: 0.5,
2689        v2SiteKey: '6LfnFggUAAAAAKaDTgN6vqjZtnNENIqa\u002D\u002DTCG9F4',
2690        v3SiteKey: '6Lc\u002DlpYsAAAAAMhweO3XD1__w\u002DvHSSOVRRpARwEM'
2691      };
2692    }
2693
2694    // Register per-form unique configs (only the params that differ per form).
2695    window._signupRecaptchaConfigs = window._signupRecaptchaConfigs || [];
2696    
2697      // Multi-form mode: loop over the list supplied by the context processor.
2698      
2699      window._signupRecaptchaConfigs.push({
2700        key: 'generic_signup',
2701        formSelector: 'form.js\u002Dform\u002Demail\u002Dvalidate[name\u003D\u0022signup\u0022]'
2702      });
2703      
2704      window._signupRecaptchaConfigs.push({
2705        key: 'signup_interstitial',
2706        formSelector: '#signup\u002Dinter\u002Dform'
2707      });
2708      
2709    
2710
2711    // If we've already initialized once, skip doing it again.
2712    if (window._signupRecaptchaBootstrapped) {
2713      return;
2714    }
2715    window._signupRecaptchaBootstrapped = true;
2716
2717    // Strip odd characters so this is safe for dataset keys/callback names.
2718    function safeKey(str) {
2719      return String(str || 'default').replace(/[^a-zA-Z0-9_]/g, '');
2720    }
2721
2722    // Load only the v3 script — it covers both v3 scoring and v2 widget rendering.
2723    // Avoid the plain api.js, which auto-renders all .g-recaptcha elements on load.
2724    function loadRecaptchaScripts(v3SiteKey) {
2725      if (!document.getElementById('signup-recaptcha-v3-script')) {
2726        var v3Script = document.createElement('script');
2727        v3Script.id = 'signup-recaptcha-v3-script';
2728        v3Script.src = 'https://www.google.com/recaptcha/api.js?render=' + encodeURIComponent(v3SiteKey);
2729        document.head.appendChild(v3Script);
2730      }
2731    }
2732
2733    // Get a v3 token, then let our backend verify and score it.
2734    function runV3AndScore(v3SiteKey, actionName) {
2735      return grecaptcha.execute(v3SiteKey, { action: actionName })
2736        .then(function(token) {
2737          return fetch('/signup/recaptcha-v3-score/', {
2738            method: 'POST',
2739            headers: { 'Content-Type': 'application/json' },
2740            body: JSON.stringify({ token: token, action: actionName })
2741          });
2742        })
2743        .then(function(res) { return res.json(); });
2744    }
2745
2746    // Wire recaptcha behavior to each form, merging shared constants with the per-form unique config.
2747    function wireConfig(formConfig, configIndex) {
2748      var shared = window._signupRecaptchaSharedConfig;
2749      var config = {
2750        key: formConfig.key,
2751        formSelector: formConfig.formSelector,
2752        v2ContainerSelector: shared.v2ContainerSelector,
2753        v2ElementSelector: shared.v2ElementSelector,
2754        submitAction: shared.submitAction,
2755        scoreThreshold: shared.scoreThreshold,
2756        v2SiteKey: shared.v2SiteKey,
2757        v3SiteKey: shared.v3SiteKey
2758      };
2759      var forms = document.querySelectorAll(config.formSelector);
2760      forms.forEach(function(form, formIndex) {
2761        // Keep track of whether this form is wired/passed/already waiting on v2.
2762        var key = safeKey(config.key + '_' + configIndex + '_' + formIndex);
2763        var wiredFlag = 'recaptchaWired' + key;
2764        var passedFlag = 'recaptchaPassed' + key;
2765        var awaitingFlag = 'awaitingV2Challenge' + key;
2766
2767        if (form.dataset[wiredFlag] === 'true') {
2768          return;
2769        }
2770        form.dataset[wiredFlag] = 'true';
2771
2772        var recaptchaElement = form.querySelector(config.v2ElementSelector);
2773        var widgetId = null;
2774        var v2WatcherInterval = null;
2775
2776        // Read the v2 response via widgetId, falling back to this form's textarea.
2777        function getV2Response() {
2778          var response = '';
2779          try {
2780            response = widgetId !== null ? grecaptcha.getResponse(widgetId) : '';
2781          } catch (e) {
2782            response = '';
2783          }
2784          if (!response) {
2785            var textarea = form.querySelector('textarea[name="g-recaptcha-response"]');
2786            if (textarea && textarea.value) {
2787              response = textarea.value;
2788            }
2789          }
2790          return response;
2791        }
2792
2793        // Once verified, mark the form so the submit handler lets it pass.
2794        function submitVerifiedForm() {
2795          if (form.dataset[passedFlag] === 'true') {
2796            return;
2797          }
2798          form.dataset[passedFlag] = 'true';
2799          if (form.closest('.inline-signup')) {
2800            form.dispatchEvent(new CustomEvent('recaptcha:verified', { bubbles: false }));
2801            var inlineContainer = form.querySelector(config.v2ContainerSelector);
2802            if (inlineContainer) inlineContainer.style.display = 'none';
2803          }
2804          form.submit();
2805        }
2806
2807        // Show the v2 challenge and poll until we see a response token.
2808        function beginV2Challenge() {
2809          form.dataset[awaitingFlag] = 'true';
2810          var container = form.querySelector(config.v2ContainerSelector);
2811          if (container) container.style.display = 'block';
2812
2813          // Render the v2 widget on first challenge, not on page load.
2814          if (widgetId === null && recaptchaElement) {
2815            try {
2816              widgetId = grecaptcha.render(recaptchaElement, {
2817                sitekey: config.v2SiteKey,
2818                callback: submitVerifiedForm
2819              });
2820            } catch (e) {}
2821          }
2822
2823          if (v2WatcherInterval) {
2824            clearInterval(v2WatcherInterval);
2825          }
2826          v2WatcherInterval = setInterval(function() {
2827            if (form.dataset[passedFlag] === 'true') {
2828              clearInterval(v2WatcherInterval);
2829              return;
2830            }
2831            var response = getV2Response();
2832            if (response) {
2833              clearInterval(v2WatcherInterval);
2834              submitVerifiedForm();
2835            }
2836          }, 250);
2837        }
2838
2839        // Main flow: validation first, then v3 score check, then v2 fallback if needed.
2840        form.addEventListener('submit', function(event) {
2841          if (form.dataset[passedFlag] === 'true') {
2842            return;
2843          }
2844
2845          // If a prior handler (e.g. email/checkbox validation) already stopped submission, bail out.
2846          if (event.defaultPrevented) {
2847            return;
2848          }
2849
2850          event.preventDefault();
2851
2852          if (form.dataset[awaitingFlag] === 'true') {
2853            if (getV2Response()) {
2854              submitVerifiedForm();
2855            } else {
2856              beginV2Challenge();
2857            }
2858            return;
2859          }
2860
2861          grecaptcha.ready(function() {
2862            runV3AndScore(config.v3SiteKey, config.submitAction)
2863              .then(function(data) {
2864                var score = Number(data && data.score);
2865                var recaptchaSuccess = Boolean(data && (data.recaptcha_success || data.success));
2866                var scorePass = !Number.isNaN(score) && score > config.scoreThreshold;
2867
2868                if (recaptchaSuccess && scorePass) {
2869                  submitVerifiedForm();
2870                  return;
2871                }
2872                beginV2Challenge();
2873              })
2874              .catch(function() {
2875                // If v3 fails (network/API), still let real users complete v2.
2876                beginV2Challenge();
2877              });
2878          });
2879        });
2880      });
2881    }
2882
2883    // Wire everything once grecaptcha is available.
2884    function setupAllConfigs() {
2885      if (typeof grecaptcha === 'undefined') {
2886        return false;
2887      }
2888      window._signupRecaptchaConfigs.forEach(function(formConfig, index) {
2889        wireConfig(formConfig, index);
2890      });
2891      return true;
2892    }
2893
2894    document.addEventListener('DOMContentLoaded', function() {
2895      var v3SiteKey = window._signupRecaptchaSharedConfig.v3SiteKey;
2896      if (v3SiteKey) {
2897        loadRecaptchaScripts(v3SiteKey);
2898      }
2899
2900      if (setupAllConfigs()) {
2901        return;
2902      }
2903
2904      // Retry briefly while external recaptcha scripts finish loading.
2905      var attempts = 0;
2906      var interval = setInterval(function() {
2907        attempts += 1;
2908        if (typeof grecaptcha !== 'undefined') {
2909          clearInterval(interval);
2910          setupAllConfigs();
2911        } else if (attempts > 50) {
2912          clearInterval(interval);
2913        }
2914      }, 100);
2915    });
2916  })();
2917</script>
2917
2918
2919        
2920        
2921        <!-- Track signups for Facebook Conversions API -->
2922        
2923
2924<script type="module" src="/static/js/dist/signupValidation.bundle.js?281219230926" ></script>
2924
2925
2926        
2927
2928<script type="module" src="/static/js/dist/gtmEvents.bundle.js?281219230926" ></script>
2928
2929
2930        <!-- Convert straight quotes to curly -->
2931        
2932
2933<script type="module" src="/static/js/dist/smartQuotes.bundle.js?281219230926" ></script>
2933
2934
2935        <!-- HTMX press release analytics -->
2936        
2937            
2938
2939<script type="module" src="/static/js/dist/htmxPressReleaseAnalytics.bundle.js?281219230926" ></script>
2939
2940
2941        
2942
2943        
2944
2945        
2946
2947
2948        
2949
2950        
2950<script>
2951            // Set cookie if we're on mobile app. Expire if we're not. This affects
2952            // which template is used to display the site to the user.
2953            $(document).ready(function() {
2954                // Get integer value of mobileapp param from URL and default to 0 if it doesn't exist
2955                var mobileapp = '';
2956
2957                // Set cookie if mobileapp is 1 or 2 or expire cookie if mobileapp == 0
2958                if (mobileapp == '0') {
2959                    document.cookie = 'mobileapp=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
2960                } else if (mobileapp == '1' || mobileapp == '2') {
2961                    document.cookie = 'mobileapp=' + mobileapp + '; path=/;';
2962                }
2963
2964                // There's no need to immediately load or preload print.css since it's not needed on page
2965                // load. Therefore, load it when the document is ready
2966                var stylesheet=document.createElement("link");
2967                stylesheet.setAttribute("rel", "stylesheet");
2968                stylesheet.setAttribute("type", "text/css");
2969                stylesheet.setAttribute("media", "print");
2970                if (window.location.pathname.includes('trendline')) {
2971                    stylesheet.setAttribute("href", "/static/css/print_trendline.css?151219230926");
2972                }
2973                else {
2974                    stylesheet.setAttribute("href", "/static/css/print.css?151219230926");
2975                }
2976                document.getElementsByTagName("head")[0].appendChild(stylesheet);
2977            });
2978        </script>
2978
2979
2980
2981        
2982
2983        
2984            <!-- Sailthru Horizon -->
2985
2986
2987<!-- 
2987<script type="text/javascript" src="https://ak.sail-horizon.com/horizon/v1.js"></script>
2987 -->
2988
2989<script data-osano="MARKETING" src="https://ak.sail-horizon.com/spm/spm.v1.min.js"></script>
vendor: 1 bytes, line 2989
2989
2990<script type="text/javascript">
2991    $(function() {
2992        // Sailthru Personalization Engine Setup
2993        var sailthru_setup = {
2994            customerId: '12ab35a80530ffa5450add9c09f5de04',
2995            domain: 'horizon.smartcitiesdive.com',
2996            spider: false
2997        };
2998        
2999        if (window.Sailthru) {
3000            Sailthru.init(sailthru_setup);
3001        }
3002    });
3003</script>
3003
3004
3005
3006        
3007        
3008          
3009            
3010
3011
3012<script type="module" src="/static/js/dist/mobileFooterAd.bundle.js?281219230926" ></script>
3012
3013
3014<div class="mobile-footer-ad" id="mobile-footer-ad" role="complementary" aria-label="Advertisement">
3015    <div class="mobile-footer-ad__slot" id="dfp-mobilefooter-mobile"></div>
3016</div>
3017
3018<script data-osano="ESSENTIAL">
3019    window.googletag = window.googletag || { cmd: [] };
3020
3021    googletag.cmd.push(function () {
3022        // GPT serves the largest mapped size that fits, so 300x50 only
3023        // wins below 320px and nothing is requested at 768px and up.
3024        var mobileFooterMapping = googletag.sizeMapping()
3025            .addSize([768, 0], [])
3026            .addSize([320, 0], [[320, 50], [300, 50]])
3027            .addSize([0, 0], [[300, 50]])
3028            .build();
3029
3030        googletag.defineSlot(
3031            '/3618/smartcitiesdive/smartcitiesdivemobile_leaderboard',
3032            [[320, 50], [300, 50]],
3033            'dfp-mobilefooter-mobile'
3034        )
3035            .defineSizeMapping(mobileFooterMapping)
3036            .addService(googletag.pubads());
3037    });
3038
3039    waitToLoadAds.push(function () {
3040        googletag.cmd.push(function () {
3041            if (window.dfp_visibility === 'mobile') {
3042                window.onDvtagReady?.(() => googletag.display('dfp-mobilefooter-mobile'));
3043            }
3044        });
3045    });
3046</script>
3046
3047
3048          
3049        
3050    
3050<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"cdd58664feb845a3bfcf0e0b330064a7","spa":2}' crossorigin="anonymous"></script>
3050
3051</body>
3052</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.