Files
nexus/sreweekly/articles/46/09-pokemon-go-how-the-cloud-saved-the-smash-hit-game-from-collapse.html
2026-09-12 17:23:01 +08:00

1643 lines
238 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="icon" type="image/x-icon" href="https://www.techrepublic.com/favicon.ico"><link rel="icon" type="image/png" sizes="16x16" href="https://www.techrepublic.com/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="https://www.techrepublic.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="96x96" href="https://www.techrepublic.com/favicon-96x96.png"><link rel="icon" type="image/png" sizes="192x192" href="https://www.techrepublic.com/favicon-192x192.png"><link rel="preconnect" href="https://capi.connatix.com" crossorigin=""><link rel="preconnect" href="https://cd.connatix.com" crossorigin=""><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""><link rel="preconnect" href="https://cmp.inmobi.com"><link rel="preconnect" href="https://7K2PtPeYG9QYuDfTo.ay.delivery"><link rel="preconnect" href="https://securepubads.g.doubleclick.net"><link rel="preconnect" href="https://cdn.id5-sync.com" crossorigin=""><link rel="preconnect" href="https://c.amazon-adsystem.com" crossorigin=""><link rel="preconnect" href="https://pbs-us-east.ay.delivery" crossorigin=""><link rel="preload" as="image" fetchpriority="high" href="https://www.techrepublic.com/astrostatic/b5fedccd/_image/?href=%2F_astro%2Ftechrepublic.BQceyIVv.png&w=500&h=119&f=webp"><link rel="preload" href="https://cmp.inmobi.com/choice/vPn77x7pBG57Y/www.techrepublic.com/choice.js?tag_version=V3" as="script" data-no-early-hint=""><link rel="preload" href="https://securepubads.g.doubleclick.net/tag/js/gpt.js" as="script" data-no-early-hint=""><link rel="preload" href="https://7K2PtPeYG9QYuDfTo.ay.delivery/manager/7K2PtPeYG9QYuDfTo" as="script" data-no-early-hint=""><script type="module">const o=new WeakMap,r=new Set,h=10,f=t=>{let e=0;for(const n of t.children)e=Math.max(e,n.offsetHeight);return e},w=t=>{const e=f(t);e<h||e>(o.get(t)??0)&&(o.set(t,e),t.style.setProperty("min-height",`${e}px`,"important"))},u=1e3,i=new WeakMap,c=t=>{clearTimeout(i.get(t)),i.set(t,window.setTimeout(()=>w(t),u))},m=new ResizeObserver(t=>{for(const e of t)c(e.target)}),d=t=>{r.has(t)||(r.add(t),m.observe(t))},a=t=>{for(const e of t.querySelectorAll("[data-ad-slot]"))d(e)};a(document);new MutationObserver(t=>{for(const e of t)for(const n of e.addedNodes)n instanceof HTMLElement&&(n.matches("[data-ad-slot]")&&d(n),a(n))}).observe(document.body,{childList:!0,subtree:!0});let s=window.innerWidth;window.addEventListener("resize",()=>{if(window.innerWidth!==s){s=window.innerWidth;for(const t of r)o.delete(t),t.style.removeProperty("min-height"),c(t)}});</script> <script>(function(){const domain = "techrepublic.com";
const targeting = {"env":"prod","stage":"prod","url":"www.techrepublic.com/topic/cloud/","hostname":"www.techrepublic.com","edge_country":"US","cid":"cloud","path":"sites,techrepublic.com,topic,cloud","category":"cloud","topic":"cloud","news":"no"};
window._vars = {
...(window?._vars ?? {}),
domain,
targeting,
}
})();</script> <script>
;(() => {
// The sweep runs once the AY manager loads — well after first paint,
// so yanking the boxes out of the layout right there registers as
// CLS. Blank each box immediately (visibility keeps its space), and
// drop the space on the next discrete input, when the shift falls in
// the CLS input-exclusion window. Below-viewport boxes could collapse
// immediately without penalty, but one code path is enough.
let lastInput = -Infinity
const noteInput = () => {
lastInput = performance.now()
}
document.addEventListener("pointerdown", noteInput, {
capture: true,
passive: true,
})
document.addEventListener("keydown", noteInput, { capture: true })
const pendingRelease = []
const releaseAll = () => {
for (const release of pendingRelease.splice(0)) release()
}
document.addEventListener(
"pointerdown",
() => requestAnimationFrame(releaseAll),
{ capture: true, passive: true },
)
document.addEventListener(
"keydown",
() => requestAnimationFrame(releaseAll),
{ capture: true },
)
const releaseOnInput = (release) => {
if (performance.now() - lastInput < 400) {
release()
} else {
pendingRelease.push(release)
}
}
// Same gate, published for the other code path that yanks a reserved
// box out of the layout: AssertiveYield's slotRenderEnded handler,
// which hides a slot the auction came back empty on. That collapse is
// worth as much CLS as the space the slot was holding, so it waits for
// an input too. Callers fall back to collapsing immediately if this is
// missing, which keeps packages/ads working without this script.
window.releaseAdSpaceOnInput = releaseOnInput
const collapse = () => {
const ay = window.ayManagerEnv
if (!ay?.settings?.placements || !ay.tools?.getEnabledPlacements) {
return
}
const enabled = ay.tools.getEnabledPlacements()
for (const entry of ay.settings.placements) {
// Only placements AY renders *inside* their target. For
// beforebegin/afterend the target is a sibling anchor — real
// content that must not be hidden.
if (!["afterbegin", "beforeend"].includes(entry.position)) {
continue
}
// Enabled: AY will request it and slotRenderEnded decides.
if (enabled.some(({ _id }) => _id === entry._id)) {
continue
}
for (const el of document.querySelectorAll(entry.placement)) {
// ...except when the wrapper _is_ the page
if (["body", "html"].includes(el.tagName.toLowerCase())) {
continue
}
if (el.hasAttribute("data-empty")) {
continue
}
el.style.visibility = "hidden"
releaseOnInput(() => {
el.style.display = "none"
el.setAttribute("data-empty", "")
// The AY selector can target a wrapper around the slot
// rather than the slot itself.
for (const slot of el.querySelectorAll(
"[data-ad-slot]",
)) {
slot.setAttribute("data-empty", "")
}
})
}
}
}
// Exposed so infinite scroll can re-sweep slots inserted after load.
window.collapseDisabledAdSlots = () =>
window.requestAnimationFrame(collapse)
window.ayManagerEnv = window.ayManagerEnv || { cmd: [] }
window.ayManagerEnv.cmd.push(() => window.collapseDisabledAdSlots())
})()
</script> <script src="https://7K2PtPeYG9QYuDfTo.ay.delivery/manager/7K2PtPeYG9QYuDfTo" type="text/javascript" referrerpolicy="no-referrer-when-downgrade" async>
</script><script>(function(){const targeting = {"env":"prod","stage":"prod","url":"www.techrepublic.com/topic/cloud/","hostname":"www.techrepublic.com","edge_country":"US","cid":"cloud","path":"sites,techrepublic.com,topic,cloud","category":"cloud","topic":"cloud","news":"no"};
const debug = false;
window.googletag = window.googletag || { cmd: [] };
// A wrapper can opt out of the global marking below with
// `data-ad-self-managed` when it owns its own fill lifecycle
// (e.g. a reserved band that must not collapse the instant GPT
// reports a render). Marking it here as well would fight that
// component and undo whatever it is holding.
const selfManaged = (wrapper) =>
wrapper.hasAttribute('data-ad-self-managed');
document.addEventListener('ay-ads-disabled', () => {
const allAdElements = Array.from(
document.querySelectorAll('[data-ad-slot]')
).filter((element) => !selfManaged(element));
allAdElements.forEach(element => {
element.setAttribute('data-empty', '');
});
if (debug) {
console.log('[AY] ay-ads-disabled event: Marked ads as empty', {
count: allAdElements.length,
elements: allAdElements.map(el => ({
selector: `[data-ad-slot="${el.getAttribute('data-ad-slot')}"]`,
element: el
}))
});
}
});
googletag.cmd.push(() => {
// Initialize googletag for targeting API (AY uses GPT API for targeting)
Object.entries(targeting).forEach(([key, value]) => {
window.googletag.pubads().setTargeting(key, value);
});
// Global slotRenderEnded listener:
// All ad wrappers (AdSlot, SkyboxAd, CurtainAd) use `data-ad-slot` attribute.
// AY/GPT fires slotRenderEnded with slotElementId pointing at an AY-generated inner div.
// We walk up to our wrapper and mark it loaded or empty,
// unless the wrapper is self-managed (see above).
window.googletag
.pubads()
.addEventListener("slotRenderEnded", (event) => {
const slotElementId = event.slot.getSlotElementId();
const ayDiv = document.getElementById(slotElementId);
if (!ayDiv) return;
const wrapper = ayDiv.closest("[data-ad-slot]");
if (!wrapper) return;
if (selfManaged(wrapper)) return;
if (event.isEmpty) {
// Pulling a reserved box out of the layout mid-page
// costs exactly as much CLS as the space it was
// holding, and slots that reserve their creative's
// real height (the article natives) hold a lot.
// Blank it now — visibility keeps the space — and
// drop the space on the next discrete input, where
// the shift lands in the CLS input-exclusion
// window. `data-empty` goes on with the space so
// nothing reads the slot as collapsed early.
const collapse = () => {
// A refresh may have filled the slot while this
// release sat in the queue waiting for input.
if (wrapper.hasAttribute("data-loaded")) return;
wrapper.style.visibility = "";
wrapper.style.display = "none";
wrapper.setAttribute("data-empty", "");
};
wrapper.style.visibility = "hidden";
wrapper.removeAttribute("data-loaded");
if (window.releaseAdSpaceOnInput) {
window.releaseAdSpaceOnInput(collapse);
} else {
collapse();
}
} else {
// A refresh can fill a slot that came back empty
// last time, so undo the blanking above as well as
// the collapse — a queued release would otherwise
// hide a slot that now has an ad in it.
wrapper.style.visibility = "";
wrapper.style.display = "";
wrapper.setAttribute("data-loaded", "");
wrapper.removeAttribute("data-empty");
}
if (debug) {
console.log("[AY] slotRenderEnded", {
slotElementId,
adSlot: wrapper.getAttribute("data-ad-slot"),
isEmpty: event.isEmpty,
});
}
});
});
})();</script><style is:global="">
@media (max-width: 767px) {
.cnx-pinned-wrapper {
margin-top: 10px;
}
}
@media (min-width: 768px) {
.cnx-float.cnx-float-position-bottom {
transform: translate(0, -100px) !important;
}
}
.cnx-main-container.cnx-in-desktop {
max-width: 640px;
max-height: 360px;
}
</style><script>
(() => {
window.ngt = window.ngt || { cmd:[] };
window.ngt.cmd.push(function(){
window.googletag.cmd.push(() => {
window.googletag
.pubads()
.setTargeting(
"user_agent",
navigator?.userAgent ?? "Unknown User Agent",
)
.setTargeting(
"ngt_company_size",
(window.ngt.me.company?.company_size_range ?? "").replaceAll(
",",
"",
),
);
const tags =
window.ngt.me?.body?.me.tags?.map((tag) =>
tag.toLowerCase().replaceAll("site.", ""),
) ?? [];
[
["is_datacenter", ["is-datacenter"]],
["is_suspected_bot", ["suspected-bad-bot", "bad-bot"]],
["is_ta_user", ["ta-user-ip"]],
["is_crawler", ["user-agent-blocked"]],
["is_ad_blocked", ["ad-blocked-ip"]],
]
.filter(([tag, flags]) =>
flags.some((flag) => tags.includes(flag)),
)
.reduce((acc, [tag, flags]) => [...acc, tag], [])
.forEach((tag) =>
window.googletag.pubads().setTargeting(tag, "true"),
);
})
})
})();
</script><script async type="text/javascript" src="https://cmp.inmobi.com/choice/vPn77x7pBG57Y/www.techrepublic.com/choice.js?tag_version=V3"></script><script>(function(){const url = "https://cmp.inmobi.com/choice/vPn77x7pBG57Y/www.techrepublic.com/choice.js?tag_version=V3";
const iabVendorsUrl = "https://cmp.inmobi.com/GVL-v3/vendor-list.json";
const googleAtpUrl = "https://cmp.inmobi.com/tcfv2/google-atp-list.json";
(function() {
var uspTries = 0;
var uspTriesLimit = 3;
function makeStub() {
var TCF_LOCATOR_NAME = '__tcfapiLocator';
var queue = [];
var win = window;
var cmpFrame;
function addFrame() {
var doc = win.document;
var otherCMP = !!(win.frames[TCF_LOCATOR_NAME]);
if (!otherCMP) {
if (doc.body) {
var iframe = doc.createElement('iframe');
iframe.style.cssText = 'display:none';
iframe.name = TCF_LOCATOR_NAME;
doc.body.appendChild(iframe);
} else {
setTimeout(addFrame, 5);
}
}
return !otherCMP;
}
function tcfAPIHandler() {
var gdprApplies;
var args = arguments;
if (!args.length) {
return queue;
} else if (args[0] === 'setGdprApplies') {
if (
args.length > 3 &&
args[2] === 2 &&
typeof args[3] === 'boolean'
) {
gdprApplies = args[3];
if (typeof args[2] === 'function') {
args[2]('set', true);
}
}
} else if (args[0] === 'ping') {
var retr = {
gdprApplies: gdprApplies,
cmpLoaded: false,
cmpStatus: 'stub'
};
if (typeof args[2] === 'function') {
args[2](retr);
}
} else {
if(args[0] === 'init' && typeof args[3] === 'object') {
args[3] = Object.assign(args[3], { tag_version: 'V3' });
}
queue.push(args);
}
}
function postMessageEventHandler(event) {
var msgIsString = typeof event.data === 'string';
var json = {};
try {
if (msgIsString) {
json = JSON.parse(event.data);
} else {
json = event.data;
}
} catch (ignore) {}
var payload = json.__tcfapiCall;
if (payload) {
window.__tcfapi(
payload.command,
payload.version,
function(retValue, success) {
var returnMsg = {
__tcfapiReturn: {
returnValue: retValue,
success: success,
callId: payload.callId
}
};
if (msgIsString) {
returnMsg = JSON.stringify(returnMsg);
}
if (event && event.source && event.source.postMessage) {
event.source.postMessage(returnMsg, '*');
}
},
payload.parameter
);
}
}
while (win) {
try {
if (win.frames[TCF_LOCATOR_NAME]) {
cmpFrame = win;
break;
}
} catch (ignore) {}
if (win === window.top) {
break;
}
win = win.parent;
}
if (!cmpFrame) {
addFrame();
win.__tcfapi = tcfAPIHandler;
win.addEventListener('message', postMessageEventHandler, false);
}
};
makeStub();
function makeGppStub() {
const CMP_ID = 10;
const SUPPORTED_APIS = [
'2:tcfeuv2',
'6:uspv1',
'7:usnatv1',
'8:usca',
'9:usvav1',
'10:uscov1',
'11:usutv1',
'12:usctv1'
];
window.__gpp_addFrame = function (n) {
if (!window.frames[n]) {
if (document.body) {
var i = document.createElement("iframe");
i.style.cssText = "display:none";
i.name = n;
document.body.appendChild(i);
} else {
window.setTimeout(window.__gpp_addFrame, 10, n);
}
}
};
window.__gpp_stub = function () {
var b = arguments;
__gpp.queue = __gpp.queue || [];
__gpp.events = __gpp.events || [];
if (!b.length || (b.length == 1 && b[0] == "queue")) {
return __gpp.queue;
}
if (b.length == 1 && b[0] == "events") {
return __gpp.events;
}
var cmd = b[0];
var clb = b.length > 1 ? b[1] : null;
var par = b.length > 2 ? b[2] : null;
if (cmd === "ping") {
clb(
{
gppVersion: "1.1", // must be “Version.Subversion”, current: “1.1”
cmpStatus: "stub", // possible values: stub, loading, loaded, error
cmpDisplayStatus: "hidden", // possible values: hidden, visible, disabled
signalStatus: "not ready", // possible values: not ready, ready
supportedAPIs: SUPPORTED_APIS, // list of supported APIs
cmpId: CMP_ID, // IAB assigned CMP ID, may be 0 during stub/loading
sectionList: [],
applicableSections: [-1],
gppString: "",
parsedSections: {},
},
true
);
} else if (cmd === "addEventListener") {
if (!("lastId" in __gpp)) {
__gpp.lastId = 0;
}
__gpp.lastId++;
var lnr = __gpp.lastId;
__gpp.events.push({
id: lnr,
callback: clb,
parameter: par,
});
clb(
{
eventName: "listenerRegistered",
listenerId: lnr, // Registered ID of the listener
data: true, // positive signal
pingData: {
gppVersion: "1.1", // must be “Version.Subversion”, current: “1.1”
cmpStatus: "stub", // possible values: stub, loading, loaded, error
cmpDisplayStatus: "hidden", // possible values: hidden, visible, disabled
signalStatus: "not ready", // possible values: not ready, ready
supportedAPIs: SUPPORTED_APIS, // list of supported APIs
cmpId: CMP_ID, // list of supported APIs
sectionList: [],
applicableSections: [-1],
gppString: "",
parsedSections: {},
},
},
true
);
} else if (cmd === "removeEventListener") {
var success = false;
for (var i = 0; i < __gpp.events.length; i++) {
if (__gpp.events[i].id == par) {
__gpp.events.splice(i, 1);
success = true;
break;
}
}
clb(
{
eventName: "listenerRemoved",
listenerId: par, // Registered ID of the listener
data: success, // status info
pingData: {
gppVersion: "1.1", // must be “Version.Subversion”, current: “1.1”
cmpStatus: "stub", // possible values: stub, loading, loaded, error
cmpDisplayStatus: "hidden", // possible values: hidden, visible, disabled
signalStatus: "not ready", // possible values: not ready, ready
supportedAPIs: SUPPORTED_APIS, // list of supported APIs
cmpId: CMP_ID, // CMP ID
sectionList: [],
applicableSections: [-1],
gppString: "",
parsedSections: {},
},
},
true
);
} else if (cmd === "hasSection") {
clb(false, true);
} else if (cmd === "getSection" || cmd === "getField") {
clb(null, true);
}
//queue all other commands
else {
__gpp.queue.push([].slice.apply(b));
}
};
window.__gpp_msghandler = function (event) {
var msgIsString = typeof event.data === "string";
try {
var json = msgIsString ? JSON.parse(event.data) : event.data;
} catch (e) {
var json = null;
}
if (typeof json === "object" && json !== null && "__gppCall" in json) {
var i = json.__gppCall;
window.__gpp(
i.command,
function (retValue, success) {
var returnMsg = {
__gppReturn: {
returnValue: retValue,
success: success,
callId: i.callId,
},
};
event.source.postMessage(msgIsString ? JSON.stringify(returnMsg) : returnMsg, "*");
},
"parameter" in i ? i.parameter : null,
"version" in i ? i.version : "1.1"
);
}
};
if (!("__gpp" in window) || typeof window.__gpp !== "function") {
window.__gpp = window.__gpp_stub;
window.addEventListener("message", window.__gpp_msghandler, false);
window.__gpp_addFrame("__gppLocator");
}
};
makeGppStub();
var uspStubFunction = function() {
var arg = arguments;
if (typeof window.__uspapi !== uspStubFunction) {
setTimeout(function() {
if (typeof window.__uspapi !== 'undefined') {
window.__uspapi.apply(window.__uspapi, arg);
}
}, 500);
}
};
var checkIfUspIsReady = function() {
uspTries++;
if (window.__uspapi === uspStubFunction && uspTries < uspTriesLimit) {
console.warn('USP is not accessible');
} else {
clearInterval(uspInterval);
}
};
if (typeof window.__uspapi === 'undefined') {
window.__uspapi = uspStubFunction;
var uspInterval = setInterval(checkIfUspIsReady, 6000);
}
/**
* DataLayer Push & CCPA Support
*
* Version 2.0.7
*/
(async function () {
//URLs need to be externalized based on environments, during build update.
var get_iab_vendors_url = iabVendorsUrl;
var get_google_atp_url = googleAtpUrl;
var iab_vendors, iab_vendor_ids, iab_vendor_names;
var google_vendors, google_vendor_ids, google_vendor_names;
var google_vendors_arr = [],
google_vendor_ids_arr = [],
google_vendor_names_arr = [];
var iab_vendors_arr = [],
iab_vendor_ids_arr = [],
iab_vendor_names_arr = [];
var non_iab_vendors, non_iab_vendor_ids, non_iab_vendor_names;
var non_iab_vendors_arr = [],
non_iab_vendor_ids_arr = [],
non_iab_vendor_names_arr = [];
var publisher_consents, publisher_legitimate_interests;
var purpose_consents, purpose_legitimate_interests;
function resultToList(a) {
var b = ",";
if (a && typeof a === 'object') {
for (var i in a) {
if (a[i]) {
b += i + ",";
}
}
}
return b;
}
/**
* Get a full list of Non-IAB Vendors, specific to the Quantcast Universal Tag ID, using tcfapi
*/
function vendors_getNonIABVendorList() {
window.__tcfapi("getConfig", 2, function (retObj) {
if (retObj && retObj.hasOwnProperty("nonIabVendorsInfo")) {
if (
retObj.nonIabVendorsInfo && retObj.nonIabVendorsInfo.hasOwnProperty(
"nonIabVendorList",
)
) {
non_iab_vendors =
retObj.nonIabVendorsInfo.nonIabVendorList;
// Dont assume array key = vendor id, set key as vendor id with iab_vendors[i].id
Object.keys(non_iab_vendors).forEach(function (i) {
non_iab_vendors_arr[non_iab_vendors[i].vendorId] =
non_iab_vendors[i].name;
});
}
}
});
}
/**
* Get a full list of IAB Vendors.
*/
function vendors_getIABVendorList() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
var res = JSON.parse(this.responseText);
if (res && res.hasOwnProperty("vendors")) {
iab_vendors = res.vendors;
// Dont assume array key = vendor id, set key as vendor id with iab_vendors[i].id
Object.keys(iab_vendors).forEach(function (i) {
iab_vendors_arr[iab_vendors[i].id] =
iab_vendors[i].name;
});
}
}
};
xhttp.open("GET", get_iab_vendors_url, true);
xhttp.send();
}
/**
* Get a full list of google atp list
*/
function vendors_getGoogleVendorList() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
google_vendors = JSON.parse(this.responseText);
google_vendors.forEach(function (vendor) {
google_vendors_arr[vendor.provider_id] =
vendor.provider_name;
});
}
};
xhttp.open("GET", get_google_atp_url, true);
xhttp.send();
}
/**
* CMP Loaded.
*
* Push __cmpLoaded event to the data layer.
*/
function dlSend_tcLoaded(tcData) {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "__cmpLoaded",
__cmpLoaded: true,
gdpr: tcData ? tcData.gdprApplies : false,
});
}
/**
* IAB Vendors.
*
* Push __cmpIABConsents event to the datalayer, along with iab vendor consent ids.
*/
function dlSend_consentData(tcData) {
window.dataLayer = window.dataLayer || [];
iab_vendor_names_arr = [];
iab_vendor_ids_arr = [];
non_iab_vendor_names_arr = [];
non_iab_vendor_ids_arr = [];
google_vendor_names_arr = [];
google_vendor_ids_arr = [];
if (tcData && tcData.hasOwnProperty("publisher")) {
if (tcData.publisher && tcData.publisher.hasOwnProperty("consents")) {
publisher_consents = resultToList(
tcData.publisher ? tcData.publisher.consents : null,
);
}
publisher_legitimate_interests = resultToList(
tcData.publisher ? tcData.publisher.legitimateInterests : null,
);
}
if (tcData && tcData.hasOwnProperty("purpose")) {
if (tcData.purpose && tcData.purpose.hasOwnProperty("consents")) {
purpose_consents = resultToList(tcData.purpose ? tcData.purpose.consents : null);
}
purpose_legitimate_interests = resultToList(
tcData.purpose ? tcData.purpose.legitimateInterests : null,
);
}
// Run this in an interval (every 0.1s) just in case we are still waiting
// on the return with our iab_vendors list calls, bail after 10 seconds
var cnt = 0;
var interval = setInterval(function () {
cnt += 1;
if (cnt === 100) {
clearInterval(interval);
}
if (iab_vendors) {
clearInterval(interval);
if (tcData ? tcData.gdprApplies : false) {
// Create name & id arrays of iab vendors with consent.
if (tcData && tcData.hasOwnProperty("vendor") && tcData.vendor && tcData.vendor.consents) {
Object.keys(tcData.vendor.consents).forEach(
function (vendorId) {
if (
(tcData.vendor && tcData.vendor.consents ? tcData.vendor.consents[vendorId] : false) ||
!tcData.gdprApplies
) {
iab_vendor_names_arr[vendorId] =
iab_vendors_arr[vendorId];
iab_vendor_ids_arr[vendorId] = vendorId;
}
},
);
}
} else {
// GDPR does not apply, add all vendor names/ids
iab_vendor_names_arr = iab_vendors_arr;
iab_vendors_arr.forEach(
function (vendorName, vendorId) {
iab_vendor_ids_arr[vendorId] = vendorId;
},
);
}
if (tcData && tcData.addtlConsent && google_vendors_arr) {
// Create name and id arrays of google vendors with consent.
// addtlConsent: "1~39.43.46.55.61.
// 1~ is the version and the rest are the decoded ids
var addtlConsentParts = (tcData.addtlConsent || "").split("1~");
if (addtlConsentParts.length > 1) {
google_vendor_ids_arr = addtlConsentParts[1].split(".");
}
google_vendor_ids_arr &&
google_vendor_ids_arr.forEach(function (google_id) {
google_vendor_names_arr.push(
google_vendors_arr[google_id],
);
});
}
// Non IAB Vendors
window.__tcfapi(
"getNonIABVendorConsents",
2,
function (nonIabConsent, nonIabSuccess) {
if (nonIabSuccess) {
if (nonIabConsent.gdprApplies) {
// Create name & id arrays of non iab vendors with consent.
nonIabConsent.nonIabVendorConsents &&
Object.keys(
nonIabConsent.nonIabVendorConsents,
).forEach(function (vendorId) {
if (
nonIabConsent
.nonIabVendorConsents[
vendorId
] ||
!nonIabConsent.gdprApplies
) {
non_iab_vendor_names_arr[
vendorId
] =
non_iab_vendors_arr[
vendorId
];
non_iab_vendor_ids_arr[
vendorId
] = vendorId;
}
});
} else {
// GDPR does not apply, add all non iab vendor names/ids
non_iab_vendor_names_arr =
non_iab_vendors_arr;
non_iab_vendors_arr.forEach(
function (vendorName, vendorId) {
non_iab_vendor_ids_arr[vendorId] =
vendorId;
},
);
}
}
// Join our array values, skipping empty items and joing them with a delimiter
iab_vendor_names = iab_vendor_names_arr
.filter(Boolean)
.join("|");
iab_vendor_ids = iab_vendor_ids_arr
.filter(Boolean)
.join(",");
google_vendor_names = google_vendor_names_arr
.filter(Boolean)
.join("|");
google_vendor_ids = google_vendor_ids_arr
.filter(Boolean)
.join("|");
non_iab_vendor_names = non_iab_vendor_names_arr
.filter(Boolean)
.join("|");
non_iab_vendor_ids = non_iab_vendor_ids_arr
.filter(Boolean)
.join(",");
// Push __cmpIABConsents signals to the data layer.
window.dataLayer.push({
event: "__cmpConsents",
__cmpConsents: {
iabVendorConsentIds: iab_vendor_ids,
iabVendorsWithConsent: iab_vendor_names,
nonIABVendorConsentIds: non_iab_vendor_ids,
nonIABVendorsWithConsent:
non_iab_vendor_names,
googleVendorConsentIds: google_vendor_ids,
googleVendorsWithConsent:
google_vendor_names,
gdpr: tcData ? tcData.gdprApplies : false,
publisherConsents: publisher_consents,
publisherLegitimateInterests:
publisher_legitimate_interests,
purposeConsents: purpose_consents,
purposeLegitimateInterests:
purpose_legitimate_interests,
},
});
},
);
}
}, 100);
}
/**
* CCPA footer message.
*/
function ccpa_footerMsg(tcData) {
window.__uspapi("uspPing", 1, function (obj, status) {
var footer_msg = document.getElementById("choice-footer-msg"); // get the footer container for our CCPA message
if (status && obj.mode.includes("USP") && footer_msg !== null) {
footer_msg.innerHTML =
footer_msg.innerHTML +
"We use cookies" +
" and other data collection technologies" +
" to provide the best experience for our customers. You may request" +
" that your data not be shared with third parties here: " +
'<a href="#" onclick="window.__uspapi(\'displayUspUi\');"' +
">Do Not Sell My Data</a>" +
".";
// Add the 'ccpa-msg-added' class to the container for post message add styling.
footer_msg.classList.add("ccpa-msg-added");
window.__uspapi("setUspDftData", 1, function (obj, status) {
if (!status) {
console.log("Error: USP string not updated!");
}
});
}
});
}
// Only get the IAB and Non-IAB vendor lists if the the Data layer push functionality
// is enabled, otherwise we do not need the vendor lists.
window.__tcfapi(
"addEventListener",
2,
function (getConfig, listenerSuccess) {
vendors_getIABVendorList(); // Get global IAB vendor list
vendors_getGoogleVendorList(); // Get google vendor list
vendors_getNonIABVendorList(); // Get UTID specific Non-IAB vendors
},
);
// CCPA
ccpa_footerMsg();
// Add our main listener.
window.__tcfapi(
"addEventListener",
2,
function (tcData, listenerSuccess) {
if (listenerSuccess) {
/**
* User Visits:
* 1st visit/no cookie = 'cmpuishown' called and then 'useractioncomplete' after user make their selection
* Repeat visit/has cookie = only 'tcloaded' is called as the UI does not show unless the user clicks to show
*/
switch (tcData ? tcData.eventStatus : null) {
case "cmpuishown":
// Data Layer
dlSend_tcLoaded(tcData);
break;
case "tcloaded":
// Data Layer
if (tcData ? tcData.gdprApplies : false) {
dlSend_tcLoaded(tcData);
dlSend_consentData(tcData);
}
break;
case "useractioncomplete":
// Data Layer
dlSend_consentData(tcData);
break;
}
}
},
);
})();
})();
})();</script> <link rel="apple-touch-icon" sizes="180x180" href="https://www.techrepublic.com/apple-touch-icon.png"> <link rel="manifest" href="https://www.techrepublic.com/site.webmanifest"> <link rel="alternate" type="application/rss+xml" title="TechRepublic » Feed" href="https://www.techrepublic.com/feed/"><link rel="alternate" type="application/rss+xml" title="TechRepublic » Comments Feed" href="https://www.techrepublic.com/comments/feed/"><style>:root {
--theme-primary: #086bdb;
--theme-secondary: #044997;
--theme-tertiary: #f54d16;
--theme-quaternary: #ffffff;
--theme-primary-foreground: #ffffff;
--theme-secondary-foreground: #ffffff;
--theme-tertiary-foreground: #ffffff;
--theme-quaternary-foreground: #044997;
--theme-foreground: black;
}</style> <script>window.__authProviders={"facebook":false,"linkedin":false}</script> <script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://www.techrepublic.com/#website","url":"https://www.techrepublic.com/","name":"TechRepublic","description":"Providing IT professionals with a unique blend of original content, peer-to-peer advice from the largest community of IT leaders on the Web.","publisher":{"@id":"https://www.techrepublic.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.techrepublic.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://www.techrepublic.com/#organization","name":"TechRepublic","url":"https://www.techrepublic.com/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.techrepublic.com/#/schema/logo/image/","url":"https://assets.techrepublic.com/uploads/2026/01/techrepublic.png","contentUrl":"https://assets.techrepublic.com/uploads/2026/01/techrepublic.png","width":512,"height":119,"caption":"TechRepublic"},"image":{"@id":"https://www.techrepublic.com/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/TechRepublic","https://x.com/techrepublic","https://www.linkedin.com/company/techrepublic","https://www.youtube.com/techrepublic","https://www.pinterest.com/techrepublic/","/rssfeeds/"],"parentOrganization":{"@type":"Organization","name":"TechnologyAdvice","url":"https://technologyadvice.com/"}}]}</script><script>(function(){const targeting = {"env":"prod","stage":"prod","url":"www.techrepublic.com/topic/cloud/","hostname":"www.techrepublic.com","edge_country":"US","cid":"cloud","path":"sites,techrepublic.com,topic,cloud","category":"cloud","topic":"cloud","news":"no"};
window.dataLayer = window.dataLayer || []
window.dataLayer.push(
Object.fromEntries(
Object.entries(targeting).map(([k, v]) => [`ad_${k}`, v]),
),
)
})();</script><script>
;(() => {
const campaign = new URLSearchParams(window.location.search).get(
"adTargeting_campaign",
)
if (!campaign) return
window.googletag = window.googletag || { cmd: [] }
window.googletag.cmd.push(() => {
window.googletag.setConfig({ targeting: { campaign } })
})
})()
</script><script>(function(){const sampleRate = 1;
const debug = false;
const targeting = {"env":"prod","stage":"prod","url":"www.techrepublic.com/topic/cloud/","hostname":"www.techrepublic.com","edge_country":"US","cid":"cloud","path":"sites,techrepublic.com,topic,cloud","category":"cloud","topic":"cloud","news":"no"};
(() => {
// Same-origin, site-aware base (mirrors getSiteAwarePath): dev/preview
// serve sites under /sites/{domain}/…; prod serves each on its own host.
let base = "/api/ado";
if (location.pathname.startsWith("/sites/")) {
const p = location.pathname.split("/");
if (p.length >= 3) base = "/sites/" + p[2] + base;
}
const uuid = () =>
(crypto.randomUUID && crypto.randomUUID()) ||
String(Date.now()) + Math.random().toString(16).slice(2);
const pageviewId = uuid();
let sessionId;
try {
sessionId = sessionStorage.getItem("ado_sid");
if (!sessionId) {
sessionId = uuid();
sessionStorage.setItem("ado_sid", sessionId);
}
} catch (_) {
sessionId = "";
}
// --- Unified transport: buffer typed events, flush one batch. ---
// Trailing debounce: each event (re)arms a short idle timer, so a
// burst of N events coalesces into ONE sendBeacon fired shortly after
// the burst ends (e.g. 10 events over 5s → 1 request). A max-age cap
// guarantees a continuous stream still flushes at least every
// FLUSH_MAX_MS, a size cap guards the sendBeacon payload limit, and
// the buffer is always flushed on tab-hide/unload so nothing is lost.
const FLUSH_IDLE_MS = 1000; // flush this long after the last event
const FLUSH_MAX_MS = 5000; // never hold a buffered event longer
const MAX_BATCH = 20;
let buffer = [];
let timer = null;
let firstAt = 0;
const flush = () => {
if (timer) {
clearTimeout(timer);
timer = null;
}
firstAt = 0;
if (!buffer.length) return;
const events = buffer;
buffer = [];
try {
const body = new Blob([JSON.stringify({ events })], {
type: "text/plain",
});
navigator.sendBeacon(base + "/collect/", body);
if (debug) console.log("[ado] flush", events);
} catch (e) {
if (debug) console.warn("[ado] flush failed", e);
}
};
const push = (event) => {
buffer.push(event);
if (buffer.length >= MAX_BATCH) {
flush();
return;
}
const now = Date.now();
if (!firstAt) firstAt = now;
// Idle debounce, clamped so total hold never exceeds FLUSH_MAX_MS.
const delay = Math.max(
0,
Math.min(FLUSH_IDLE_MS, FLUSH_MAX_MS - (now - firstAt)),
);
if (timer) clearTimeout(timer);
timer = setTimeout(flush, delay);
};
window._ado = {
pageview_id: pageviewId,
session_id: sessionId,
push,
flush,
};
addEventListener("visibilitychange", () => {
if (document.visibilityState === "hidden") flush();
});
addEventListener("pagehide", flush);
const canonical =
document.querySelector('link[rel="canonical"]')?.href ||
location.href;
// --- Framing detection -------------------------------------------
// Who, if anyone, has this page in an iframe — used to spot third
// parties embedding our content.
//
// `location.ancestorOrigins` is the browser's own list of ancestor
// frame origins (parent first, outermost last; Chromium + Safari).
// Unlike `document.referrer` it can't be blanked by the framer's
// Referrer-Policy and it does NOT drift to our own previous URL when
// the framed page navigates inside the frame. The referrer is only
// used to add path detail on top of an origin the ancestor list has
// already confirmed, or as the sole signal on Firefox, which has no
// ancestorOrigins. Sandboxed/opaque ancestors report "null".
let iframeReferrer = "";
try {
if (window.top !== window.self) {
const ancestors = location.ancestorOrigins;
const outermost =
ancestors && ancestors.length
? ancestors[ancestors.length - 1]
: "";
const referrerOrigin = document.referrer
? new URL(document.referrer).origin
: "";
if (outermost && outermost !== "null") {
iframeReferrer =
referrerOrigin === outermost
? document.referrer
: outermost;
} else if (
referrerOrigin &&
referrerOrigin !== location.origin
) {
// A same-origin referrer inside a frame is our own
// previous page, not an embedder — never report it.
iframeReferrer = document.referrer;
}
// Our own frames (self-embeds, previews) aren't embedding.
if (iframeReferrer.indexOf(location.origin) === 0) {
iframeReferrer = "";
}
}
} catch (_) {
iframeReferrer = "";
}
// Same edge country the astro-proxy injected into the GPT
// `edge_country` targeting → keeps the event stream aligned with GAM.
let adoCountry = String(targeting.edge_country || "");
if (adoCountry.indexOf("{{") === 0) adoCountry = "";
const ctx = {
site: (window._vars && window._vars.domain) || location.hostname,
hostname: location.hostname,
path: location.pathname,
canonical_url: canonical,
post_id: String(targeting.post_id || ""),
category: String(targeting.category || ""),
country: adoCountry,
};
// Pageview (always sent).
push({
type: "pageview",
client_event_ts: Date.now(),
pageview_id: pageviewId,
session_id: sessionId,
page_type: String(targeting.ptype || ""),
referrer: document.referrer || "",
iframe_referrer: iframeReferrer,
...ctx,
});
// Per-slot refresh counter.
const refreshCount = Object.create(null);
const adEvent = (eventType, event) => {
if (sampleRate < 1 && Math.random() >= sampleRate) return;
const slot = event.slot;
const elId = slot.getSlotElementId();
const size = Array.isArray(event.size)
? event.size.join("x")
: event.size != null
? String(event.size)
: "";
const resp = slot.getResponseInformation
? slot.getResponseInformation()
: null;
const idx =
eventType === "slot_render_ended"
? (refreshCount[elId] = (refreshCount[elId] || 0) + 1) - 1
: refreshCount[elId]
? refreshCount[elId] - 1
: 0;
push({
type: "ad_event",
event_type: eventType,
client_event_ts: Date.now(),
pageview_id: pageviewId,
session_id: sessionId,
ad_unit_path: slot.getAdUnitPath(),
slot_element_id: elId,
slot_size: size,
is_empty: !!event.isEmpty,
refresh_index: idx,
line_item_id: resp ? String(resp.lineItemId ?? "") : "",
creative_id: resp ? String(resp.creativeId ?? "") : "",
advertiser_id: resp ? String(resp.advertiserId ?? "") : "",
campaign_id: resp ? String(resp.campaignId ?? "") : "",
...ctx,
});
};
window.googletag = window.googletag || { cmd: [] };
window.googletag.cmd.push(() => {
window.googletag
.pubads()
.addEventListener("slotRenderEnded", (e) =>
adEvent("slot_render_ended", e),
);
window.googletag
.pubads()
.addEventListener("impressionViewable", (e) =>
adEvent("impression_viewable", e),
);
});
})();
})();</script> <script>(function(){const heartbeatMs = 5000;
const idleMs = 30000;
const snapshotMs = 20000;
const targeting = {"env":"prod","stage":"prod","url":"www.techrepublic.com/topic/cloud/","hostname":"www.techrepublic.com","edge_country":"US","cid":"cloud","path":"sites,techrepublic.com,topic,cloud","category":"cloud","topic":"cloud","news":"no"};
const debug = false;
(() => {
// Don't instrument headless/automation traffic.
if (navigator.webdriver) return;
// Requires the beacon's transport (same observability gate).
const ado = window._ado;
if (!ado || typeof ado.push !== "function") return;
const pageviewId = ado.pageview_id;
const sessionId = ado.session_id;
const uuid = () =>
(crypto.randomUUID && crypto.randomUUID()) ||
String(Date.now()) + Math.random().toString(16).slice(2);
const str = (v) => (v == null ? "" : String(v));
// --- Page context (stable for the pageview; per-segment path/post_id
// are tracked separately since they swap on infinite-scroll). ---
const canonical =
document.querySelector('link[rel="canonical"]')?.href ||
location.href;
let country = str(targeting.edge_country);
if (country.indexOf("{{") === 0) country = "";
const ctx = {
site: (window._vars && window._vars.domain) || location.hostname,
hostname: location.hostname,
canonical_url: canonical,
category: str(targeting.category),
country,
};
const referrer = document.referrer || "";
// --- Loyalty: durable, consent-gated visitor id. Respect Global
// Privacy Control; fall back to session-only when storage is blocked.
// (Wire to the site CMP here for finer-grained consent.) ---
let visitorId = "";
let isNewVisitor = 0;
try {
if (navigator.globalPrivacyControl !== true) {
visitorId = localStorage.getItem("ado_vid") || "";
if (!visitorId) {
visitorId = uuid();
localStorage.setItem("ado_vid", visitorId);
isNewVisitor = 1;
}
}
} catch (_) {
visitorId = "";
}
// --- Per-post segments. segment_id = `${pageview_id}:${post_id}`, so
// scrolling back into an earlier article RESUMES its segment. ---
const segments = new Map();
let activeSeg = null;
let activeSince = null; // ms timestamp while accruing, else null
let lastActivity = Date.now();
let sinceSnapshot = 0;
const accruing = () =>
document.visibilityState === "visible" &&
Date.now() - lastActivity < idleMs;
function flushAccrual() {
if (activeSince !== null && activeSeg) {
const now = Date.now();
activeSeg.engagedSeconds += (now - activeSince) / 1000;
activeSince = now;
}
}
function setAccruing(on) {
flushAccrual();
activeSince = on ? Date.now() : null;
}
function segFor(pid, category, path) {
let seg = segments.get(pid);
if (!seg) {
seg = {
post_id: pid,
segment_id: pageviewId + ":" + pid,
category: str(category) || ctx.category,
path: str(path) || location.pathname,
engagedSeconds: 0,
maxScrollPct: 0,
reachedEnd: 0,
seq: 0,
};
segments.set(pid, seg);
} else {
if (category != null && str(category)) seg.category = str(category);
if (path != null && str(path)) seg.path = str(path);
}
return seg;
}
// Deepest scroll into the active article + end detection, reusing the
// h1[infiniscroll-id] / [data-type='infiniscroll-break'] geometry.
function measureActive() {
if (!activeSeg) return;
const headers = Array.prototype.slice.call(
document.querySelectorAll("h1[infiniscroll-id]"),
);
const header =
document.querySelector(
'h1[infiniscroll-id="' + activeSeg.post_id + '"]',
) || headers[0];
if (!header) return;
const y = window.scrollY;
const toY = (el) => el.getBoundingClientRect().top + y;
const idx = headers.indexOf(header);
const breaks = document.querySelectorAll(
"[data-type='infiniscroll-break']",
);
const bottomEl = breaks[idx] || headers[idx + 1];
const top = toY(header);
const bottom = bottomEl
? toY(bottomEl)
: document.documentElement.scrollHeight;
let pct;
if (bottom - top <= window.innerHeight) {
// Article fits the viewport → readable without scrolling.
pct = 100;
} else {
pct = Math.round(
Math.min(Math.max((y - top) / (bottom - top), 0), 1) * 100,
);
}
if (pct > activeSeg.maxScrollPct) activeSeg.maxScrollPct = pct;
// End reached when the article's bottom boundary enters the viewport.
if (bottom <= y + window.innerHeight + 4) activeSeg.reachedEnd = 1;
}
function snapshot(seg) {
if (!seg) return;
seg.seq += 1;
ado.push({
type: "engagement",
client_event_ts: Date.now(),
pageview_id: pageviewId,
session_id: sessionId,
segment_id: seg.segment_id,
post_id: seg.post_id,
site: ctx.site,
hostname: ctx.hostname,
path: seg.path,
canonical_url: ctx.canonical_url,
category: seg.category,
country: ctx.country,
referrer: referrer,
visitor_id: visitorId,
is_new_visitor: isNewVisitor,
engaged_seconds: Math.round(seg.engagedSeconds),
max_scroll_pct: seg.maxScrollPct,
reached_end: seg.reachedEnd,
seq: seg.seq,
});
if (debug) console.log("[ado] engagement", seg.segment_id, seg);
}
function switchTo(pid, category, path) {
if (!pid) return;
if (activeSeg && activeSeg.post_id === pid) {
segFor(pid, category, path); // refresh path/category
return;
}
setAccruing(false); // bank time to the leaving segment
if (activeSeg) snapshot(activeSeg); // flush leaving segment state
activeSeg = segFor(pid, category, path);
lastActivity = Date.now(); // a transition counts as activity
setAccruing(accruing());
measureActive();
}
// Authoritative active-article signal from InfiniScroll transitions.
document.addEventListener("ado:article", (e) => {
const d = (e && e.detail) || {};
switchTo(str(d.post_id), d.category, d.path);
});
// Activity + scroll.
const bump = () => {
const wasAccruing = activeSince !== null;
lastActivity = Date.now();
if (!wasAccruing && document.visibilityState === "visible") {
setAccruing(true);
}
};
let scrollThrottled = false;
const onScroll = () => {
bump();
if (scrollThrottled) return;
scrollThrottled = true;
setTimeout(() => {
scrollThrottled = false;
measureActive();
}, 200);
};
addEventListener("scroll", onScroll, { passive: true });
["pointermove", "keydown", "touchstart", "click"].forEach((ev) =>
addEventListener(ev, bump, { passive: true }),
);
// Visibility + bfcache lifecycle. Beacon also flushes on hide; we push
// the final engagement snapshot then force a flush so it isn't stranded.
function finalizeAndFlush() {
setAccruing(false);
if (activeSeg) snapshot(activeSeg);
if (typeof ado.flush === "function") ado.flush();
}
addEventListener("visibilitychange", () => {
if (document.visibilityState === "hidden") {
finalizeAndFlush();
} else {
lastActivity = Date.now();
setAccruing(accruing());
}
});
addEventListener("pagehide", finalizeAndFlush);
addEventListener("pageshow", (e) => {
if (e.persisted) {
lastActivity = Date.now();
setAccruing(accruing());
}
});
// Heartbeat: re-evaluate idle, remeasure, and drop an insurance
// snapshot so long single-article reads / crashes aren't lost.
setInterval(() => {
setAccruing(accruing());
measureActive();
sinceSnapshot += heartbeatMs;
if (sinceSnapshot >= snapshotMs && activeSeg) {
sinceSnapshot = 0;
flushAccrual();
snapshot(activeSeg);
}
}, heartbeatMs);
// Seed the landing article's segment (post pages only).
const landingPid = str(targeting.post_id);
if (landingPid) {
switchTo(landingPid, ctx.category, location.pathname);
}
})();
})();</script> <title>Cloud Archives | TechRepublic</title><meta name="title" content="Cloud Archives | TechRepublic"><meta name="description" content="Cloud technologies are gaining momentum everyday in the largest data centers and the smallest businesses, offering services that encompass everything from the infrastructure down to the software level. There are many potential benefits as well as risks, but market leaders like Amazon, Rackspace, IBM, and Microsoft are bringing the cloud from the bleeding edge to the center of the IT landscape."><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><meta property="og:locale" content="en_US"><meta property="og:type" content="article"><meta property="og:title" content="Cloud Archives | TechRepublic"><meta property="og:description" content="Cloud technologies are gaining momentum everyday in the largest data centers and the smallest businesses, offering services that encompass everything from the infrastructure down to the software level. There are many potential benefits as well as risks, but market leaders like Amazon, Rackspace, IBM, and Microsoft are bringing the cloud from the bleeding edge to the center of the IT landscape."><meta property="og:url" content="https://www.techrepublic.com/topic/cloud/"><meta property="og:site_name" content="TechRepublic"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@techrepublic"><link rel="canonical" href="https://www.techrepublic.com/topic/cloud/"><link rel="next" href="https://www.techrepublic.com/topic/cloud/page/2/"><script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"/topic/cloud/","url":"/topic/cloud/","name":"Cloud Archives | TechRepublic","isPartOf":{"@id":"https://www.techrepublic.com/#website"},"primaryImageOfPage":{"@id":"https://www.techrepublic.com/topic/cloud/#primaryimage"},"image":{"@id":"https://www.techrepublic.com/topic/cloud/#primaryimage"},"thumbnailUrl":"https://assets.techrepublic.com/uploads/2026/09/ChatGPT-Image-Sep-8-2026-02_11_21-AM-3.jpg","inLanguage":"en-US"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.techrepublic.com/topic/cloud/#primaryimage","url":"https://assets.techrepublic.com/uploads/2026/09/ChatGPT-Image-Sep-8-2026-02_11_21-AM-3.jpg","contentUrl":"https://assets.techrepublic.com/uploads/2026/09/ChatGPT-Image-Sep-8-2026-02_11_21-AM-3.jpg","width":900,"height":507},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.techrepublic.com/"},{"@type":"ListItem","position":2,"name":"Cloud"}]}]}</script> <link rel="alternate" type="application/rss+xml" title="TechRepublic » Cloud Category Feed" href="https://www.techrepublic.com/topic/cloud/feed/"> <link rel="stylesheet" href="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/index.xu0Y85Bc.css">
<style>:root{--skybox-reserve: 18.75vw}@media(min-width:768px){:root{--skybox-reserve: 90px}}[data-ad-slot=skybox]{min-height:var(--skybox-reserve)}[data-ad-slot=skybox][data-loaded],[data-ad-slot=skybox][data-empty]{min-height:0}[data-ad-slot=skybox]:not([data-empty])~#main-navigation{top:var(--skybox-reserve)}
.slide-right-enter-active[data-v-1572bf39],.slide-right-leave-active[data-v-1572bf39]{transition:all .3s}.slide-right-enter-from[data-v-1572bf39],.slide-right-leave-to[data-v-1572bf39]{transform:translate(-100vw);opacity:0}.slide-left-enter-active[data-v-1572bf39],.slide-left-leave-active[data-v-1572bf39]{transition:all .3s}.slide-left-enter-from[data-v-1572bf39],.slide-left-leave-to[data-v-1572bf39]{transform:translate(100vw);opacity:0}.submenu-content [data-submenu][data-v-1572bf39]{display:none}.submenu-content [data-submenu].active[data-v-1572bf39]{display:block}#site-navigation:not([data-nav-computed]){visibility:hidden;animation:nav-fallback 0s 1.5s forwards}@keyframes nav-fallback{to{visibility:visible}}.slide-enter-active[data-v-53819b21],.slide-leave-active[data-v-53819b21]{transition:all .3s}.slide-enter-from[data-v-53819b21],.slide-leave-to[data-v-53819b21]{transform:translateY(20px);opacity:0}#main-navigation[data-astro-cid-sj5ssvhz]{transition:transform .3s ease-in-out,background-color .3s ease-in-out}[data-astro-cid-sj5ssvhz][data-rac-overlay] [data-astro-cid-sj5ssvhz]::-webkit-scrollbar{width:6px}[data-astro-cid-sj5ssvhz][data-rac-overlay] [data-astro-cid-sj5ssvhz]::-webkit-scrollbar-track{background:transparent}[data-astro-cid-sj5ssvhz][data-rac-overlay] [data-astro-cid-sj5ssvhz]::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}[data-astro-cid-sj5ssvhz][data-rac-overlay] [data-astro-cid-sj5ssvhz]::-webkit-scrollbar-thumb:hover{background:#fff6}[data-astro-cid-sj5ssvhz][data-rac-overlay]{scrollbar-color:rgba(255,255,255,.2) transparent;scrollbar-width:thin}
#choice-footer-msg a:hover{text-decoration:underline}.raconteur-net button,.raconteur-net button.rounded-none{border-radius:0}.raconteur-net button.rounded-sm{border-radius:var(--radius-sm, .125rem)}.raconteur-net button.rounded{border-radius:var(--radius, .25rem)}.raconteur-net button.rounded-md{border-radius:var(--radius-md, .375rem)}.raconteur-net button.rounded-lg{border-radius:var(--radius-lg, .5rem)}.raconteur-net button.rounded-xl{border-radius:var(--radius-xl, .75rem)}.raconteur-net button.rounded-2xl{border-radius:var(--radius-2xl, 1rem)}.raconteur-net button.rounded-3xl{border-radius:var(--radius-3xl, 1.5rem)}.raconteur-net button.rounded-full{border-radius:9999px}
.checkbox input{margin-right:.75rem;cursor:pointer;-webkit-appearance:none;appearance:none;background-color:#fff;margin:2px;font:inherit;color:currentColor;width:1.5rem;height:1.5rem;min-width:1.5rem;min-height:1.5rem;border-radius:.4em;transform:translateY(-.075em);display:grid;place-content:center}.checkbox input:before{content:"";width:.65em;height:.65em;clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,43% 62%);transform:scale(0);transform-origin:bottom left;transition:.12s transform ease-in-out;box-shadow:inset 1em 1em var(--color-primary);background-color:CanvasText}.checkbox input:checked:before{transform:scale(1)}.checkbox input:focus{outline:max(2px,.15em) solid var(--color-primary);outline-offset:max(2px,.15em)}.expand-enter-active,.expand-leave-active{transition:all .3s ease-in-out;max-height:200px}.expand-enter-from,.expand-leave-to{max-height:0;padding-top:0;padding-bottom:0;opacity:0}.expand-enter-to,.expand-leave-from{max-height:200px;opacity:1}
.ticker-text[data-v-34ac2891]{transition:transform .2s ease}.ticker-text.ticker-scrolling[data-v-34ac2891]{animation:ticker-scroll-34ac2891 .4s ease-in-out;animation-fill-mode:forwards}@keyframes ticker-scroll-34ac2891{0%{transform:translate(0)}to{transform:translate(var(--scroll-distance, 0))}}
</style>
<style>/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-outline-style:solid;--tw-content:"";--tw-border-style:solid;--tw-font-weight:initial;--tw-leading:initial}}}a[data-astro-cid-tdou77qi]:hover,a[data-astro-cid-tdou77qi]:focus{color:#2a6496;text-decoration-line:underline}a[data-astro-cid-tdou77qi]:active,a[data-astro-cid-tdou77qi]:hover{outline-style:var(--tw-outline-style);outline-width:0}#ftl-footer[data-astro-cid-tdou77qi]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Helvetica Neue,Helvetica,Arial,sans-serif!important}@media(min-width:768px){.container1[data-astro-cid-tdou77qi]{width:750px}}@media(min-width:992px){.container1[data-astro-cid-tdou77qi]{width:970px}}@media(min-width:1200px){.container1[data-astro-cid-tdou77qi]{width:1170px}}.container1[data-astro-cid-tdou77qi]:before{--tw-content:"";content:var(--tw-content);display:table}.container1[data-astro-cid-tdou77qi],.container-fluid[data-astro-cid-tdou77qi]{margin-inline:auto;padding-inline:15px}.container-fluid[data-astro-cid-tdou77qi]:before,.row[data-astro-cid-tdou77qi]:before{--tw-content:"";content:var(--tw-content);display:table}.container-fluid[data-astro-cid-tdou77qi]:after,.row[data-astro-cid-tdou77qi]:after{clear:both;--tw-content:"";content:var(--tw-content);display:table}.col-xs-12[data-astro-cid-tdou77qi]{float:left;width:100%}@media(min-width:768px){.col-sm-5[data-astro-cid-tdou77qi]{float:left;width:41.6667%}.col-sm-6[data-astro-cid-tdou77qi]{float:left;width:50%}.col-sm-7[data-astro-cid-tdou77qi]{float:left;width:58.3333%}}.col-xs-12[data-astro-cid-tdou77qi],.col-sm-6[data-astro-cid-tdou77qi],.col-sm-7[data-astro-cid-tdou77qi],.col-md-12[data-astro-cid-tdou77qi]{min-height:1px;padding-inline:15px;position:relative}@media(min-width:992px){.col-md-12[data-astro-cid-tdou77qi]{float:left;width:100%}}#ftl-footer[data-astro-cid-tdou77qi]{width:100%;overflow-x:hidden}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi]{margin-inline:-15px}#ftl-footer[data-astro-cid-tdou77qi] .footerContainer[data-astro-cid-tdou77qi]{max-width:1230px;padding-top:25px;padding-bottom:20px}#ftl-footer[data-astro-cid-tdou77qi] .footerWidget[data-astro-cid-tdou77qi]{margin-left:calc(var(--spacing,.25rem) * 0);width:100%}#ftl-footer[data-astro-cid-tdou77qi] .footerOuter[data-astro-cid-tdou77qi]{border-top-style:var(--tw-border-style);background-color:#292b31;border-top-width:0}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .left[data-astro-cid-tdou77qi]{padding-left:calc(var(--spacing,.25rem) * 0)}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .top-section[data-astro-cid-tdou77qi]{padding-left:calc(var(--spacing,.25rem) * 0);margin-bottom:10px}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .top-section[data-astro-cid-tdou77qi] div[data-astro-cid-tdou77qi],#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .bottom-section[data-astro-cid-tdou77qi],#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .bottom-section[data-astro-cid-tdou77qi] div[data-astro-cid-tdou77qi]{padding-left:calc(var(--spacing,.25rem) * 0)}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] div[data-astro-cid-tdou77qi] .section-header[data-astro-cid-tdou77qi]{margin-bottom:calc(var(--spacing,.25rem) * 0);--tw-font-weight:var(--font-weight-semibold,600);font-size:14px;font-weight:var(--font-weight-semibold,600);color:#737981;text-transform:none}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] div[data-astro-cid-tdou77qi] ul[data-astro-cid-tdou77qi]{padding-left:calc(var(--spacing,.25rem) * 0);--tw-leading:1.5em;--tw-font-weight:var(--font-weight-semibold,600);font-size:13px;line-height:1.5em;font-weight:var(--font-weight-semibold,600);color:#e9ebee;list-style-type:none}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] div[data-astro-cid-tdou77qi] ul[data-astro-cid-tdou77qi] li[data-astro-cid-tdou77qi] a[data-astro-cid-tdou77qi]{color:#e9ebee!important}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] div[data-astro-cid-tdou77qi] .bottom-top-list[data-astro-cid-tdou77qi]{margin-bottom:20px}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .social-media-icons[data-astro-cid-tdou77qi]{float:left;width:auto;padding:calc(var(--spacing,.25rem) * 0);margin-top:-10px;margin-left:-4px;display:none}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .social-media-icons[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi]{background-color:#0000;padding-block:20px;padding-inline:5px}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .social-media-icons[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] li[data-astro-cid-tdou77qi]{margin-right:3px}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .social-media-icons[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] li[data-astro-cid-tdou77qi]:last-of-type{margin-right:calc(var(--spacing,.25rem) * 0)}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .right[data-astro-cid-tdou77qi]{padding-inline:calc(var(--spacing,.25rem) * 0)}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .connect-text[data-astro-cid-tdou77qi]{float:left;--tw-font-weight:var(--font-weight-semibold,600);font-size:18px;font-weight:var(--font-weight-semibold,600);color:#29a8ff;text-transform:none;margin-right:10px;padding-top:10px;display:inline}#ftl-footer[data-astro-cid-tdou77qi] .footer-mobile[data-astro-cid-tdou77qi]{display:none!important}#ftl-footer[data-astro-cid-tdou77qi] .footer-wide[data-astro-cid-tdou77qi]{display:block!important}#ftl-footer[data-astro-cid-tdou77qi] .footer[data-astro-cid-tdou77qi]{border-top-style:var(--tw-border-style)!important;background-color:#292b31!important;border-top-width:0!important}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi]{margin:calc(var(--spacing,.25rem) * 0);cursor:pointer;padding-inline:5px;padding-block:calc(var(--spacing,.25rem) * 0);display:inline-block;position:relative}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] li[data-astro-cid-tdou77qi]{text-align:center;--tw-leading:1.75;width:30px;height:30px;color:var(--color-white,#fff);border-radius:3.40282e38px;font-size:18px;line-height:1.75;list-style-type:none;display:inline-block}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] .rss-icon[data-astro-cid-tdou77qi]{background-color:#f60}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] .rss-icon[data-astro-cid-tdou77qi] a[data-astro-cid-tdou77qi]{color:var(--color-white,#fff)}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] .twitter-icon[data-astro-cid-tdou77qi]{background-color:#00acec!important}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] .facebook-icon[data-astro-cid-tdou77qi]{background-color:#3b5998!important}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] .linkedin-icon[data-astro-cid-tdou77qi]{background-color:#007bb5}@media screen and (max-width:400px){#ftl-footer[data-astro-cid-tdou77qi] .footer-mobile[data-astro-cid-tdou77qi]{display:block!important}#ftl-footer[data-astro-cid-tdou77qi] .footer-wide[data-astro-cid-tdou77qi]{display:none!important}#ftl-footer[data-astro-cid-tdou77qi] .social-media-icons[data-astro-cid-tdou77qi]{margin-bottom:20px}#ftl-footer[data-astro-cid-tdou77qi] .left[data-astro-cid-tdou77qi]{padding:calc(var(--spacing,.25rem) * 0)}}@media screen and (max-width:767px){#ftl-footer[data-astro-cid-tdou77qi] .connect-text[data-astro-cid-tdou77qi]{display:none!important}#ftl-footer[data-astro-cid-tdou77qi] .footerContainer[data-astro-cid-tdou77qi] .link-group[data-astro-cid-tdou77qi] li[data-astro-cid-tdou77qi]{margin-block:10px}}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-leading{syntax:"*";inherits:false}
</style>
<style>.animate-ping-once[data-v-788e3fe6]{animation:ping-once-788e3fe6 .35s ease-out forwards}@keyframes ping-once-788e3fe6{0%{transform:scale(1)}40%{transform:scale(1.2)}70%{transform:scale(.95)}to{transform:scale(1)}}
.promo-banner[data-astro-cid-lroifm73]{background:linear-gradient(to right,#fdf3e7,#fbe3d4 50%,#fdf3e7)}@keyframes bell-ring{0%,to{transform:rotate(0)}8%{transform:rotate(14deg)}16%{transform:rotate(-12deg)}24%{transform:rotate(10deg)}32%{transform:rotate(-8deg)}40%{transform:rotate(4deg)}48%{transform:rotate(0)}}@keyframes push-ping{0%{transform:scale(1);opacity:.6}75%,to{transform:scale(2.2);opacity:0}}@media(any-pointer:coarse){#push-close-btn[data-astro-cid-w7xjyvkx]{display:none}}@media(prefers-reduced-motion:reduce){#push-notification-prompt[data-astro-cid-w7xjyvkx],#push-notification-prompt[data-astro-cid-w7xjyvkx] [data-astro-cid-w7xjyvkx]{animation:none!important;transition:none!important}}
.slide-enter-active[data-v-53819b21],.slide-leave-active[data-v-53819b21]{transition:all .3s}.slide-enter-from[data-v-53819b21],.slide-leave-to[data-v-53819b21]{transform:translateY(20px);opacity:0}.slide-right-enter-active[data-v-1572bf39],.slide-right-leave-active[data-v-1572bf39]{transition:all .3s}.slide-right-enter-from[data-v-1572bf39],.slide-right-leave-to[data-v-1572bf39]{transform:translate(-100vw);opacity:0}.slide-left-enter-active[data-v-1572bf39],.slide-left-leave-active[data-v-1572bf39]{transition:all .3s}.slide-left-enter-from[data-v-1572bf39],.slide-left-leave-to[data-v-1572bf39]{transform:translate(100vw);opacity:0}.submenu-content [data-submenu][data-v-1572bf39]{display:none}.submenu-content [data-submenu].active[data-v-1572bf39]{display:block}
.debug-bar[data-v-fbe2a48f] ::-webkit-scrollbar{width:4px}.debug-bar[data-v-fbe2a48f] ::-webkit-scrollbar-track{background:#374151}.debug-bar[data-v-fbe2a48f] ::-webkit-scrollbar-thumb{background:#6b7280;border-radius:2px}.debug-bar[data-v-fbe2a48f] ::-webkit-scrollbar-thumb:hover{background:#9ca3af}
</style><style>astro-island,astro-slot,astro-static-slot{display:contents}</style><style type="text/css">.inline-top:not([data-loaded]) { min-width: 300px; max-width: 320px; min-height: 50px; max-height: 50px; }
@media screen and (min-width: 768px) { .inline-top:not([data-loaded]) { min-width: 728px; max-width: 728px; min-height: 90px; max-height: 90px; } }
@media screen and (min-width: 1240px) { .inline-top:not([data-loaded]) { min-width: 728px; max-width: 1000px; min-height: 90px; max-height: 250px; } }</style><style type="text/css">.section-banner:not([data-loaded]) { min-width: 300px; max-width: 320px; min-height: 50px; max-height: 250px; }
@media screen and (min-width: 768px) { .section-banner:not([data-loaded]) { min-width: 728px; max-width: 728px; min-height: 90px; max-height: 90px; } }</style><style type="text/css">.section-banner:not([data-loaded]) { min-width: 300px; max-width: 320px; min-height: 50px; max-height: 250px; }
@media screen and (min-width: 768px) { .section-banner:not([data-loaded]) { min-width: 728px; max-width: 728px; min-height: 90px; max-height: 90px; } }</style><style type="text/css">.section-banner:not([data-loaded]) { min-width: 300px; max-width: 320px; min-height: 50px; max-height: 250px; }
@media screen and (min-width: 768px) { .section-banner:not([data-loaded]) { min-width: 728px; max-width: 728px; min-height: 90px; max-height: 90px; } }</style><style type="text/css">.right-rail:not([data-loaded]) { min-width: 300px; max-width: 320px; min-height: 50px; max-height: 250px; }
@media screen and (min-width: 768px) { .right-rail:not([data-loaded]) { min-width: 160px; max-width: 300px; min-height: 250px; max-height: 600px; } }</style><style type="text/css">.inline-bottom:not([data-loaded]) { min-width: 300px; max-width: 320px; min-height: 50px; max-height: 50px; }
@media screen and (min-width: 768px) { .inline-bottom:not([data-loaded]) { min-width: 728px; max-width: 728px; min-height: 90px; max-height: 90px; } }
@media screen and (min-width: 1240px) { .inline-bottom:not([data-loaded]) { min-width: 728px; max-width: 1000px; min-height: 90px; max-height: 250px; } }</style><style type="text/css">.sticky-footer:not([data-loaded]) { min-width: 300px; max-width: 320px; min-height: 50px; max-height: 50px; }
@media screen and (min-width: 768px) { .sticky-footer:not([data-loaded]) { min-width: 728px; max-width: 728px; min-height: 90px; max-height: 90px; } }
@media screen and (min-width: 1240px) { .sticky-footer:not([data-loaded]) { min-width: 728px; max-width: 1000px; min-height: 90px; max-height: 90px; } }</style></head> <body class="skybox-auto-collapse"> <script type="module">(()=>{const l=document.querySelector("[data-ad-slot='skybox']");if(!l)return;let m=-1/0;const p=()=>{m=performance.now()};document.addEventListener("pointerdown",p,{capture:!0,passive:!0}),document.addEventListener("keydown",p,{capture:!0});const w=a=>{if(performance.now()-m<400)return a(),()=>{};const s=()=>{i(),a()},i=()=>{document.removeEventListener("pointerdown",s,!0),document.removeEventListener("keydown",s,!0)};return document.addEventListener("pointerdown",s,{capture:!0,passive:!0}),document.addEventListener("keydown",s,{capture:!0}),i};let r=null;const c=()=>{r?.(),r=w(()=>{l.setAttribute("data-empty",""),document.dispatchEvent(new CustomEvent("skybox-ad-hidden"))})};setTimeout(()=>{!l.hasAttribute("data-loaded")&&!l.hasAttribute("data-empty")&&c()},4e3),window.googletag=window.googletag||{cmd:[]},window.googletag?.cmd.push(()=>{let a=!1,s=null;const i=e=>{const t=document.getElementById("main-navigation");t&&(t.style.top=`${e}px`)},v=300,E=4e3,y=10,b=(e,t,n,d)=>{if(!window.ResizeObserver)return n();let o;const g=window.setTimeout(()=>{clearTimeout(o),u.disconnect(),d()},E),f=()=>{clearTimeout(o),!(e.offsetHeight<y)&&(t(),o=window.setTimeout(()=>{clearTimeout(g),u.disconnect(),n()},v))},u=new ResizeObserver(f);u.observe(e),f()},h=e=>{if(a)return;a=!0;const t=e.closest("[data-ad-slot='skybox']");t&&(r?.(),r=null,t.removeAttribute("data-empty"),T(),b(e,()=>i(t.offsetHeight),()=>I(t,e),c))},I=(e,t)=>{r?.(),r=null,e.removeAttribute("data-empty"),e.setAttribute("data-loaded",""),window.ResizeObserver&&new ResizeObserver(()=>{t.offsetHeight===0&&c()}).observe(t),i(e.offsetHeight),document.dispatchEvent(new CustomEvent("skybox-ad-ready",{detail:{height:e.offsetHeight}})),window.ResizeObserver&&(s=new ResizeObserver(n=>{for(const d of n){const o=d.contentRect.height;i(o),document.dispatchEvent(new CustomEvent("skybox-ad-height-changed",{detail:{height:o}}))}}),s.observe(e))},T=()=>{const e=window.googletag.pubads().getSlots().find(n=>{const d=n.getSlotElementId(),o=document.getElementById(d);return o?o.closest(".inline-top")!==null:!1});if(!e)return;window.googletag?.destroySlots([e]);const t=document.querySelector(".inline-top");t&&(t.style.visibility="hidden",w(()=>{t.style.setProperty("display","none")}))};window.googletag.pubads().addEventListener("slotRenderEnded",e=>{if(e.isEmpty)return;const t=e.slot.getSlotElementId(),n=document.getElementById(t);!n||!n.closest("[data-ad-slot='skybox']")||h(n)})})})();</script><script type="module">function o(e){e.dataset.imageLoaded===void 0&&(e.dataset.imageLoaded="",window.requestAnimationFrame(()=>{e.style.opacity="1";const a=e.closest("[data-lazyimage]")?.querySelector("[data-blur]");a&&(a.style.opacity="0")}))}function t(e){if(e.dataset.imageLoaded!==void 0)return;(typeof e.decode=="function"?e.decode().catch(()=>{}):Promise.resolve()).finally(()=>o(e))}function d(e){!(e instanceof HTMLImageElement)||!e.matches("[data-image]")||t(e)}document.addEventListener("load",e=>d(e.target),!0);document.addEventListener("error",e=>d(e.target),!0);document.querySelectorAll("[data-lazyimage] [data-image]").forEach(e=>{e.complete&&t(e)});</script><script>(()=>{var l=(n,t)=>{let i=async()=>{await(await n())()},e=typeof t.value=="object"?t.value:void 0,s={timeout:e==null?void 0:e.timeout};"requestIdleCallback"in window?window.requestIdleCallback(i,s):setTimeout(i,s.timeout||200)};(self.Astro||(self.Astro={})).idle=l;window.dispatchEvent(new Event("astro:idle"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).load=e;window.dispatchEvent(new Event("astro:load"));})();</script><script type="module" src="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/TechRepublicHeader.astro_astro_type_script_index_0_lang.BGNXsHbR.js"></script><script type="module">document.body.clientWidth<1480||(window.googletag=window.googletag||{cmd:[]},window.googletag?.cmd.push(()=>{let i=!1;const l=()=>{if(i)return;i=!0;const t=document.createElement("div"),e=document.createElement("div"),n=`
position: fixed;
top: 0;
bottom: 0;
width: calc((100vw - 1200px) / 2);
background: transparent;
cursor: pointer;
`;t.style.cssText=n+"left: 0;",e.style.cssText=n+"right: 0;",t.id="left-gutter",e.id="right-gutter";const d=()=>{const o=document.body?.dataset?.src;o&&(window.location.href=o)};t.addEventListener("click",d),e.addEventListener("click",d);const s=()=>{const o=window.innerWidth,r=1200;if(o>r){t.style.display="block",e.style.display="block";const c=(o-r)/2;t.style.width=`${c}px`,e.style.width=`${c}px`}else t.style.display="none",e.style.display="none"};document.body.appendChild(t),document.body.appendChild(e),s(),window.addEventListener("resize",s)};window.googletag.pubads().addEventListener("slotRenderEnded",t=>{if(t.isEmpty)return;const e=t.slot.getSlotElementId(),n=document.getElementById(e);!n||!n.closest("[data-ad-slot='curtain']")||l()})}));</script><script type="module">class s extends HTMLElement{resizeObserver=null;connectedCallback(){this.updateHeightVar(),this.resizeObserver=new ResizeObserver(()=>{this.hasAttribute("data-collapsed")||this.updateHeightVar()}),this.resizeObserver.observe(this),this.querySelector("button")?.addEventListener("click",()=>{const e=this.toggleAttribute("data-collapsed");this.classList.toggle("translate-y-full",e);const t=this.querySelector(".chevron");t&&t.classList.toggle("rotate-180",e),e?document.documentElement.style.setProperty("--sticky-ad-height","0px"):this.updateHeightVar()})}disconnectedCallback(){this.resizeObserver?.disconnect(),document.documentElement.style.removeProperty("--sticky-ad-height")}updateHeightVar(){document.documentElement.style.setProperty("--sticky-ad-height",`${this.offsetHeight}px`)}}customElements.define("sticky-footer-ad",s);</script> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-57GHMWX" height="0" width="0" style="display:none;visibility:hidden" title="Google tag manageer noscript tag"></iframe></noscript><script>(function(){const gtmId = "GTM-57GHMWX";
// Patched vs the stock GTM snippet: the gtm.js script-tag injection is
// pulled out of the IIFE and deferred to idle. window.dataLayer and gtm.start
// event are still created synchronously, so every dataLayer.push between
// now and load queues on the plain array and GTM drains it on boot —
// no events are lost, they arrive later.
//
// Why: gtm.js is ~177KB and lands mid-load alongside the ad stack, where it
// costs main thread we need for INP and competes with the LCP image for
// bandwidth. Nothing in the ad path depends on it (GPT is loaded by the
// Assertive Yield manager, not GTM).
;(function (w, d, s, l, i) {
w[l] = w[l] || []
w[l].push({
"gtm.start": new Date().getTime(),
event: "gtm.js",
})
const load = function () {
const f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != "dataLayer" ? "&l=" + l : ""
j.async = true
j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl
f.parentNode.insertBefore(j, f)
}
// Cap the wait: ad-heavy pages can stay busy for many seconds and may
// never hit a true idle period.
if ("requestIdleCallback" in w) {
w.requestIdleCallback(load, { timeout: 4000 })
} else {
w.setTimeout(load, 2000)
}
})(window, document, "script", "dataLayer", gtmId)
})();</script><div data-ad-slot="skybox" data-ad-self-managed="" data-unit-base="/5055/aw-techrepublic" data-category="cloud" class="static top-0 left-0 right-0 w-screen z-200 skybox skybox-closeBtn skybox-collapseBtn data-empty:hidden print:hidden bg-zinc-100"></div><script>(function(){const defaultLocale = "en";
const supportedShorts = ["en","de","fr","es"];
const siteDomain = "techrepublic.com";
;(function () {
try {
const pathname = window.location.pathname
const sitePrefix = "/sites/" + siteDomain + "/"
let base, afterBase
if (pathname.startsWith(sitePrefix)) {
base = sitePrefix
afterBase = pathname.slice(sitePrefix.length)
} else {
base = "/"
afterBase = pathname.slice(1)
}
const parts = afterBase.split("/")
const currentLocale = supportedShorts.includes(parts[0])
? parts[0]
: defaultLocale
const pref = localStorage.getItem("preferred-locale")
if (!pref || !supportedShorts.includes(pref)) {
localStorage.setItem("preferred-locale", currentLocale)
return
}
if (currentLocale !== defaultLocale) return
if (currentLocale === pref) return
const target =
base +
pref +
"/" +
afterBase +
window.location.search +
window.location.hash
window.location.replace(target)
} catch (err) {
console.error("Failed to redirect to preferred locale", err)
}
})()
})();</script><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""><link href="https://fonts.googleapis.com/css2?family=Mulish:wght@400;500;600;700;800&display=swap" rel="stylesheet"><tr-header> <header class="sticky top-0 z-1000 bg-white antialiased print:static font-[Mulish,sans-serif] border-b border-[#efefef]" id="main-navigation"> <div class="flex items-center justify-between max-w-[1200px] mx-auto px-4 h-[70px] gap-3"> <!-- Logo --> <a href="/" class="shrink-0 flex items-center"> <div class="h-[40px] w-auto relative"> <img src="https://www.techrepublic.com/astrostatic/b5fedccd/_image/?href=%2F_astro%2Ftechrepublic.BQceyIVv.png&w=500&h=119&f=webp" alt="TechRepublic" loading="eager" fetchpriority="high" showPlaceholder="false" data-image="true" style="opacity:1" decoding="async" width="500" height="119" class="h-[40px] w-auto transition-opacity duration-300"> </div> </a> <!-- Desktop primary nav --> <nav class="hidden min-[1360px]:flex items-center text-[16px] text-[#000e2a] font-bold gap-2" aria-label="Primary navigation"> <a href="/topic/top-products/" class="px-3 py-2 text-[#000e2a] no-underline whitespace-nowrap hover:text-[#086bdb] transition-colors duration-150"> Top Products </a><a href="/topic/artificial-intelligence/" class="px-3 py-2 text-[#000e2a] no-underline whitespace-nowrap hover:text-[#086bdb] transition-colors duration-150"> AI </a><a href="/topic/developer/" class="px-3 py-2 text-[#000e2a] no-underline whitespace-nowrap hover:text-[#086bdb] transition-colors duration-150"> Developer </a><a href="/topic/payroll/" class="px-3 py-2 text-[#000e2a] no-underline whitespace-nowrap hover:text-[#086bdb] transition-colors duration-150"> Payroll </a><a href="/topic/security/" class="px-3 py-2 text-[#000e2a] no-underline whitespace-nowrap hover:text-[#086bdb] transition-colors duration-150"> Security </a><a href="/events/" class="px-3 py-2 text-[#000e2a] no-underline whitespace-nowrap hover:text-[#086bdb] transition-colors duration-150"> Events </a> <!-- Hubs dropdown --> <div class="relative" data-tr-hubs-wrapper=""> <button class="flex items-center gap-1 px-3 py-2 text-[#000e2a] bg-transparent border-0 cursor-pointer text-[16px] font-bold whitespace-nowrap hover:text-[#086bdb] transition-colors duration-150" aria-expanded="false" data-tr-hubs-btn=""> <span>Resources</span> <svg class="w-3 h-3 transition-transform duration-300" viewBox="0 0 12 12" fill="none" aria-hidden="true"> <path d="M2 4l4 4 4-4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> </svg> </button> <div class="absolute top-full right-0 invisible opacity-0 transition-all duration-150 z-50" data-tr-hubs-dropdown=""> <div class="bg-white rounded-lg shadow-[0_4px_24px_rgba(0,0,0,0.12)] border border-gray-100 p-6 min-w-[680px] font-[Mulish,sans-serif]"> <div class="flex gap-8"> <!-- Resource Hubs column --> <div class="w-[200px] shrink-0"> <div class="px-1 pb-2 text-[10px] font-bold uppercase tracking-wider text-gray-400">
Resource Hubs
</div> <div class="flex flex-col"> <a href="/hubs/the-enterprise-guide-to-scalable-ai/" class="block px-1 py-1.5 text-[13px] text-[#000e2a] no-underline hover:text-[#086bdb] transition-colors duration-150"> The Enterprise Guide to Scalable AI </a><a href="/hubs/the-ai-ready-workplace-hub/" class="block px-1 py-1.5 text-[13px] text-[#000e2a] no-underline hover:text-[#086bdb] transition-colors duration-150"> The AI-Ready Workplace Hub </a> <a href="/premium/" class="block px-1 py-1.5 text-[13px] text-[#000e2a] no-underline hover:text-[#086bdb] transition-colors duration-150"> TechRepublic Premium </a><a href="https://academy.techrepublic.com/" class="block px-1 py-1.5 text-[13px] text-[#000e2a] no-underline hover:text-[#086bdb] transition-colors duration-150"> TechRepublic Academy </a><a href="/newsletters/" class="block px-1 py-1.5 text-[13px] text-[#000e2a] no-underline hover:text-[#086bdb] transition-colors duration-150"> Newsletters </a><a href="/resource-library/" class="block px-1 py-1.5 text-[13px] text-[#000e2a] no-underline hover:text-[#086bdb] transition-colors duration-150"> Resource Library </a><a href="/forums/" class="block px-1 py-1.5 text-[13px] text-[#000e2a] no-underline hover:text-[#086bdb] transition-colors duration-150"> Forums </a><a href="/sponsored/" class="block px-1 py-1.5 text-[13px] text-[#000e2a] no-underline hover:text-[#086bdb] transition-colors duration-150"> Sponsored </a> </div> </div> <!-- Featured Resources column --> <div class="flex-1 min-w-0"> <div class="px-1 pb-2 text-[10px] font-bold uppercase tracking-wider text-gray-400">
Featured Resources
</div> <div class="grid grid-cols-2 gap-4"> <a href="/sponsored/why-data-not-models-determines-ai-success/" class="group flex flex-col gap-2 no-underline"> <div class="aspect-video w-full overflow-hidden rounded-md bg-gray-100"> <img src="https://assets.techrepublic.com/uploads/2026/04/Untitled-design-18-1-770x433.png" alt="Why Data, Not Models, Determines AI Success" loading="lazy" class="h-full w-full object-cover transition-transform duration-200 group-hover:scale-[1.02]"> </div> <div class="text-[14px] font-bold leading-snug text-[#000e2a] group-hover:text-[#086bdb] transition-colors duration-150 line-clamp-2"> Why Data, Not Models, Determines AI Success </div> <div class="text-[13px] leading-snug text-gray-600 line-clamp-2"> Strong models alone are not enough, and this article shows why data readiness, accessibility, and governance often determine whether AI succeeds in production. </div> </a><a href="https://www.eweek.com/a/news/proving-the-roi-of-enterprise-ai-from-esg-insights-to-business-outcomes/" class="group flex flex-col gap-2 no-underline"> <div class="aspect-video w-full overflow-hidden rounded-md bg-gray-100"> <img src="https://cdn.eweek.com/Dell_26Q1_TN_1280x720_03.jpg" alt="Proving the ROI of Enterprise AI: From ESG Insights to Business Outcomes" loading="lazy" class="h-full w-full object-cover transition-transform duration-200 group-hover:scale-[1.02]"> </div> <div class="text-[14px] font-bold leading-snug text-[#000e2a] group-hover:text-[#086bdb] transition-colors duration-150 line-clamp-2"> Proving the ROI of Enterprise AI: From ESG Insights to Business Outcomes </div> <div class="text-[13px] leading-snug text-gray-600 line-clamp-2"> Enterprise leaders are under pressure to show that AI investments deliver more than experimentation, and this piece explores how to connect initiatives to measurable business outcomes. </div> </a><a href="https://www.eweek.com/a/artificial-intelligence/where-should-ai-workloads-run-rethinking-workload-placement-in-a-hybrid-ai-world/" class="group flex flex-col gap-2 no-underline"> <div class="aspect-video w-full overflow-hidden rounded-md bg-gray-100"> <img src="https://cdn.techrepublic.com/content-images/01KPVCT9XZBKTPSCST3R2GG1RE.jpg" alt="Where Should AI Workloads Run? Rethinking Workload Placement in a Hybrid AI World" loading="lazy" class="h-full w-full object-cover transition-transform duration-200 group-hover:scale-[1.02]"> </div> <div class="text-[14px] font-bold leading-snug text-[#000e2a] group-hover:text-[#086bdb] transition-colors duration-150 line-clamp-2"> Where Should AI Workloads Run? Rethinking Workload Placement in a Hybrid AI World </div> <div class="text-[13px] leading-snug text-gray-600 line-clamp-2"> Because placement decisions affect cost, performance, and control, this piece examines how data gravity and latency shape where AI workloads should run. </div> </a><a href="https://www.eweek.com/artificial-intelligence/dells-vrashank-jain-on-the-data-problem-that-could-break-your-ai/" class="group flex flex-col gap-2 no-underline"> <div class="aspect-video w-full overflow-hidden rounded-md bg-gray-100"> <img src="https://cdn.techrepublic.com/content-images/01KPVCP6B2QCW4Q6NEY1N5PD84.png" alt="Dell's Vrashank Jain on the Data Problem That Could Break Your AI" loading="lazy" class="h-full w-full object-cover transition-transform duration-200 group-hover:scale-[1.02]"> </div> <div class="text-[14px] font-bold leading-snug text-[#000e2a] group-hover:text-[#086bdb] transition-colors duration-150 line-clamp-2"> Dell's Vrashank Jain on the Data Problem That Could Break Your AI </div> <div class="text-[13px] leading-snug text-gray-600 line-clamp-2"> In this eSpeaks conversation, Vrashank Jain explains why fragmented environments, pipeline complexity, and data bottlenecks continue to slow enterprise AI progress. </div> </a> </div> </div> </div> </div> </div> </div> <!-- More dropdown --> <div class="relative" data-tr-more-wrapper=""> <button class="flex items-center gap-1 px-3 py-2 text-[#000e2a] bg-transparent border-0 cursor-pointer text-[16px] font-bold whitespace-nowrap hover:text-[#086bdb] transition-colors duration-150" aria-expanded="false" data-tr-more-btn=""> <span>More</span> <svg class="w-3 h-3 transition-transform duration-300" viewBox="0 0 12 12" fill="none" aria-hidden="true"> <path d="M2 4l4 4 4-4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> </svg> </button> <div class="absolute top-full right-0 bg-white rounded-lg shadow-[0_4px_24px_rgba(0,0,0,0.12)] py-2 min-w-[220px] invisible opacity-0 transition-all duration-150 z-50 border border-gray-100" data-tr-more-dropdown=""> <!-- Popular Topics --> <div class="px-4 py-1.5 text-[10px] font-bold uppercase tracking-wider text-gray-400"> Popular Topics </div> <a href="/topic/project-management/" class="block px-4 py-1.5 text-[#000e2a] no-underline text-[13px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Project Management </a><a href="/topic/accounting/" class="block px-4 py-1.5 text-[#000e2a] no-underline text-[13px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Accounting </a><a href="/topic/big-data/crm/" class="block px-4 py-1.5 text-[#000e2a] no-underline text-[13px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> CRM </a><a href="https://academy.techrepublic.com/" class="block px-4 py-1.5 text-[#000e2a] no-underline text-[13px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Academy </a><a href="/topic/cloud/" class="block px-4 py-1.5 text-[#000e2a] no-underline text-[13px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Cloud </a><a href="/topic/innovation/" class="block px-4 py-1.5 text-[#000e2a] no-underline text-[13px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Innovation </a><a href="/topic/smart-persons-guides/" class="block px-4 py-1.5 text-[#000e2a] no-underline text-[13px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Cheat Sheets </a><a href="/topic/big-data/" class="block px-4 py-1.5 text-[#000e2a] no-underline text-[13px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Big Data </a> <a href="/topic/" class="block px-4 py-1.5 text-[#086bdb] no-underline text-[13px] font-bold hover:bg-gray-50 transition-colors duration-150"> View All Topics </a> </div> </div> </nav> <!-- Right side actions --> <div class="flex items-center gap-3 ml-auto min-[1360px]:ml-0"> <div class="hidden md:block"> <astro-island uid="Z1q4Psp" prefix="s62" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/LocaleDropdown.CpgIGAKg.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;currentLocale&quot;:[0,&quot;en&quot;],&quot;defaultLocale&quot;:[0,&quot;en&quot;],&quot;supportedLocales&quot;:[1,[[0,&quot;en-US&quot;],[0,&quot;de&quot;],[0,&quot;fr&quot;],[0,&quot;es&quot;]]],&quot;siteDomain&quot;:[0,&quot;techrepublic.com&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;LocaleDropdown&quot;,&quot;value&quot;:true}" await-children=""><div class="relative"><button class="text-secondary hover:bg-primary hover:text-primary-foreground flex items-center gap-1.5 font-medium transition p-2 cursor-pointer text-mono text-[14px]/[24px] tracking-[0.7px] uppercase group" aria-label="Language: English" aria-haspopup="dialog" aria-expanded="false"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 15" aria-hidden="true" class="w-5"><!--[--><rect width="20" height="15" fill="#B22234" /><rect y="1.15" width="20" height="1.15" fill="#fff" /><rect y="3.46" width="20" height="1.15" fill="#fff" /><rect y="5.77" width="20" height="1.15" fill="#fff" /><rect y="8.08" width="20" height="1.15" fill="#fff" /><rect y="10.38" width="20" height="1.15" fill="#fff" /><rect y="12.69" width="20" height="1.15" fill="#fff" /><rect width="8" height="8.08" fill="#3C3B6E" /><!--]--></svg><span>EN</span></button><div class="absolute right-0 mt-0 w-40 border border-t-4 border-t-primary bg-white shadow-md z-50" style="display:none;"><div role="radiogroup" aria-label="Select language"><!--[--><label class="font-bold text-primary flex items-center gap-2.5 px-4 py-2 text-sm hover:bg-primary/10 hover:text-primary transition cursor-pointer"><input type="radio" name="locale" value="en" checked class="sr-only"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 15" aria-hidden="true" class="w-5 flex-shrink-0"><!--[--><rect width="20" height="15" fill="#B22234" /><rect y="1.15" width="20" height="1.15" fill="#fff" /><rect y="3.46" width="20" height="1.15" fill="#fff" /><rect y="5.77" width="20" height="1.15" fill="#fff" /><rect y="8.08" width="20" height="1.15" fill="#fff" /><rect y="10.38" width="20" height="1.15" fill="#fff" /><rect y="12.69" width="20" height="1.15" fill="#fff" /><rect width="8" height="8.08" fill="#3C3B6E" /><!--]--></svg> English</label><label class="flex items-center gap-2.5 px-4 py-2 text-sm hover:bg-primary/10 hover:text-primary transition cursor-pointer"><input type="radio" name="locale" value="de" class="sr-only"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 15" aria-hidden="true" class="w-5 flex-shrink-0"><!--[--><rect width="20" height="5" fill="#000" /><rect y="5" width="20" height="5" fill="#D00" /><rect y="10" width="20" height="5" fill="#FFCE00" /><!--]--></svg> Deutsch</label><label class="flex items-center gap-2.5 px-4 py-2 text-sm hover:bg-primary/10 hover:text-primary transition cursor-pointer"><input type="radio" name="locale" value="fr" class="sr-only"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 15" aria-hidden="true" class="w-5 flex-shrink-0"><!--[--><rect width="20" height="15" fill="#ED2939" /><rect width="13.33" height="15" fill="#fff" /><rect width="6.67" height="15" fill="#002395" /><!--]--></svg> Français</label><label class="flex items-center gap-2.5 px-4 py-2 text-sm hover:bg-primary/10 hover:text-primary transition cursor-pointer"><input type="radio" name="locale" value="es" class="sr-only"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 15" aria-hidden="true" class="w-5 flex-shrink-0"><!--[--><rect width="20" height="15" fill="#c60b1e" /><rect y="3.75" width="20" height="7.5" fill="#ffc400" /><!--]--></svg> Español</label><!--]--></div></div></div><!--astro:end--></astro-island> </div> <astro-island uid="ZPjo5j" prefix="s63" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/UserMenu.DFRBJuvx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;tabs&quot;:[1,[[0,&quot;saved&quot;],[0,&quot;community&quot;],[0,&quot;newsletters&quot;],[0,&quot;resources&quot;],[0,&quot;premium&quot;]]],&quot;admin&quot;:[0,true],&quot;allowRegistration&quot;:[0,true]}" ssr="" client="load" opts="{&quot;name&quot;:&quot;UserMenu&quot;,&quot;value&quot;:true}" await-children=""><div class="relative font-[Mulish,sans-serif]"><button disabled class="inline-flex items-center justify-center size-9 p-0 text-[0px] bg-transparent border-[1.5px] border-gray-300 rounded-full cursor-pointer overflow-hidden transition-all duration-150 hover:bg-gray-100 hover:border-gray-400 pointer-events-none opacity-0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user-icon lucide-user text-gray-500" aria-hidden="true"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" /><circle cx="12" cy="7" r="4" /></svg><span class="sr-only">Sign In</span></button><!----><!--teleport start--><!--teleport end--></div><!--astro:end--></astro-island> <!-- Search toggle / close --> <button class="flex items-center justify-center w-9 h-9 rounded-full text-[#000e2a] bg-transparent border-0 cursor-pointer hover:bg-gray-100 transition-colors duration-150" aria-label="Search" data-tr-search-toggle=""> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search-icon lucide-search size-6" aria-hidden="true"><path d="m21 21-4.34-4.34" /><circle cx="11" cy="11" r="8" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x-icon lucide-x size-6 hidden" aria-hidden="true"><path d="M18 6 6 18" /><path d="m6 6 12 12" /></svg> </button> <!-- Go Premium CTA --> <a href="/premium/" class="hidden md:inline-flex items-center px-5 py-2 bg-[#d44216] text-white text-[16px] font-bold! rounded-full no-underline whitespace-nowrap hover:bg-[#b83812] transition-colors duration-150"> Go Premium </a> <!-- Mobile menu toggle --> <button class="flex items-center justify-center w-9 h-9 bg-transparent border-0 text-[#000e2a] cursor-pointer min-[1360px]:hidden" aria-label="Open menu" data-tr-toggle=""> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M3 6h18M3 12h18M3 18h18" stroke="currentColor" stroke-width="2" stroke-linecap="round" /> </svg> </button> </div> </div> <!-- Search dropdown panel --> <div class="hidden absolute left-0 right-0 top-full bg-white z-50 font-[Mulish,sans-serif]" data-tr-search-panel=""> <div class="max-w-[700px] mx-auto px-4 py-5"> <form role="search" method="get" action="/" data-tr-search-form=""> <div class="relative border-2 border-[#086bdb] rounded-full"> <input type="search" name="s" placeholder="What are you looking for?" required class="w-full h-12 pl-6 pr-12 border-0 rounded-full bg-white text-[#000e2a] text-base placeholder:text-gray-400 focus:outline-none font-[Mulish,sans-serif]" data-tr-search-input=""> <button type="submit" aria-label="Search" class="absolute right-3 top-1/2 -translate-y-1/2 bg-transparent border-0 text-gray-400 cursor-pointer hover:text-[#086bdb] transition-colors duration-150 p-1"> <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <circle cx="11" cy="11" r="7" /> <path d="M21 21l-4.35-4.35" /> </svg> </button> </div> </form> </div> </div> </header> <!-- Mobile overlay --> <div class="hidden fixed inset-0 z-100000 flex-col font-[Mulish,sans-serif]" data-tr-overlay=""> <!-- Mobile header bar --> <div class="flex items-center justify-between px-4 h-[60px] bg-white border-b border-gray-200"> <a href="/" class="shrink-0 flex items-center"> <div class="h-[26px] w-auto relative"> <img src="https://www.techrepublic.com/astrostatic/b5fedccd/_image/?href=%2F_astro%2Ftechrepublic.BQceyIVv.png&w=500&h=119&f=webp" alt="TechRepublic" loading="eager" showPlaceholder="false" data-image="true" style="opacity:1" decoding="async" fetchpriority="auto" width="500" height="119" class="h-[26px] w-auto transition-opacity duration-300"> </div> </a> <button class="flex items-center justify-center w-9 h-9 bg-transparent border-0 text-[#000e2a] cursor-pointer" aria-label="Close menu" data-tr-close=""> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round" /> </svg> </button> </div> <!-- Mobile navigation body --> <div class="flex-1 overflow-y-auto bg-white"> <!-- Mobile search --> <form class="px-4 py-3 border-b border-gray-200" role="search" method="get" action="/" data-tr-search-form=""> <div class="relative"> <input type="search" name="s" placeholder="Search TechRepublic" required class="w-full h-10 pl-4 pr-10 border border-gray-300 rounded-full bg-white text-sm text-[#000e2a] placeholder:text-gray-400 focus:outline-none focus:border-[#086bdb]"> <button type="submit" aria-label="Search" class="absolute right-1 top-1 w-8 h-8 rounded-full bg-[#086bdb] text-white border-0 cursor-pointer flex items-center justify-center hover:bg-[#044997]"> <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"> <circle cx="11" cy="11" r="7" /> <path d="M21 21l-4.35-4.35" /> </svg> </button> </div> </form> <!-- Go Premium mobile CTA --> <a href="https://www.techrepublic.com/premium/" class="flex items-center justify-center mx-4 mt-3 mb-1 px-4 py-2.5 bg-[#d44216] text-white text-sm font-bold rounded-full no-underline hover:bg-[#b83812]">
Go Premium
</a> <!-- Mobile nav links --> <div class="py-2"> <div class="px-4 py-2 text-[10px] font-bold uppercase tracking-wider text-gray-400">
Popular Topics
</div> <a href="/topic/top-products/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Top Products </a><a href="/topic/artificial-intelligence/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> AI </a><a href="/topic/developer/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Developer </a><a href="/topic/payroll/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Payroll </a><a href="/topic/security/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Security </a><a href="/events/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Events </a><a href="/topic/project-management/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Project Management </a><a href="/topic/accounting/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Accounting </a><a href="/topic/big-data/crm/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> CRM </a><a href="https://academy.techrepublic.com/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Academy </a><a href="/topic/cloud/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Cloud </a><a href="/topic/innovation/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Innovation </a><a href="/topic/smart-persons-guides/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Cheat Sheets </a><a href="/topic/big-data/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Big Data </a> <a href="https://www.techrepublic.com/topic/" class="block px-4 py-2.5 text-[#086bdb] no-underline text-[15px] font-bold hover:bg-gray-50">
View All Topics
</a> <div class="border-t border-gray-200 my-2"></div> <div class="px-4 py-2 text-[10px] font-bold uppercase tracking-wider text-gray-400">
Resources
</div> <a href="/hubs/the-enterprise-guide-to-scalable-ai/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> The Enterprise Guide to Scalable AI </a><a href="/hubs/the-ai-ready-workplace-hub/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> The AI-Ready Workplace Hub </a> <a href="/premium/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> TechRepublic Premium </a><a href="https://academy.techrepublic.com/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> TechRepublic Academy </a><a href="/newsletters/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Newsletters </a><a href="/resource-library/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Resource Library </a><a href="/forums/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Forums </a><a href="/sponsored/" class="block px-4 py-2.5 text-[#000e2a] no-underline text-[15px] hover:bg-gray-50 hover:text-[#086bdb] transition-colors duration-150"> Sponsored </a> </div> </div> </div> </tr-header> <div data-ad-slot="curtain" class="curtain data-empty:hidden print:hidden" data-unit-base="/5055/aw-techrepublic" data-category="cloud"></div> <div class="wrapper flex flex-col b techrepublic-com pt-5"> <div class="flex items-center justify-center min-h-[90px]! md:min-h-[130px]! print:hidden inline-top data-empty:hidden" data-ad-slot="inline-top"> </div> <nav aria-label="Breadcrumb"> <ol class="text-[12px]/[13px] tracking-[1.2px] flex items-center space-x-2 font-mono list-none p-0 m-0"> <li class="flex items-center space-x-2"> <a class="py-1.5 uppercase font-semibold" href="/"> Home </a> </li><li class="flex items-center space-x-2"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="lucide lucide-chevron-right-icon lucide-chevron-right w-4 text-primary"><path d="m9 18 6-6-6-6" /></svg> <span class="py-1.5 uppercase font-semibold bg-primary text-primary-foreground px-2" aria-current="page"> Cloud </span> </li> </ol> </nav> <div class="flex lg:flex-row flex-col gap-[30px]"> <div class="shrink min-w-0 w-full flex items-center justify-between md:pr-4"> <h1 class="h1 font-mono uppercase text-primary">Cloud</h1> <astro-island uid="Z8nwMD" prefix="s0" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/CopyFeedButton.BWYnSK8h.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;url&quot;:[0,&quot;https://www.techrepublic.com/topic/cloud/feed/&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;CopyFeedButton&quot;,&quot;value&quot;:true}" await-children=""><!--[--><!----><span class="sr-only" aria-live="polite" data-v-788e3fe6=""></span><!--]--><!--astro:end--></astro-island> </div> <!-- used to mirror the section widths below, do not delete --> <div class="hidden lg:block lg:min-w-[300px] lg:max-w-[300px]"></div> </div> <div class="flex lg:flex-row flex-col gap-[30px] items-stretch"> <div class="shrink min-w-0 w-full"> <div class="mb-12"> <div class="flex flex-col gap-7"> <div class="flex items-start justify-between gap-4"> <div class="text-[20px]/[28px] pt-[12px] tracking-[1.4px] font-bold uppercase grow text-secondary border-t-2 border-secondary"> <h2> Highlights </h2> </div> <div class="hidden md:block"> </div> </div> <div> <div class="grid grid-cols-1 md:grid-cols-3 gap-6"> <div class="group/card space-y-[17px] md:row-span-2 md:col-span-2"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-patagonia-ai-data-center-projects/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAGMAAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACQAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAa21kYXQSAAoIP8z+CMBDQbQyVWWKL0EnE/z94D+AEEgIKAAAAAAAggggAMJCzEuTxNPp98mhJK/2ImiY+IRVP7Y4EehDVaZEDWeFW08BZYtxQJbbA203Fe79k1HskEcqTtt/r+CuHLA=" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/09/ChatGPT-Image-Sep-8-2026-02_11_21-AM-3.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/09/ChatGPT-Image-Sep-8-2026-02_11_21-AM-3.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2026/09/ChatGPT-Image-Sep-8-2026-02_11_21-AM-3.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2026/09/ChatGPT-Image-Sep-8-2026-02_11_21-AM-3.jpg?w=512 512w, https://assets.techrepublic.com/uploads/2026/09/ChatGPT-Image-Sep-8-2026-02_11_21-AM-3.jpg?w=1024 1024w" alt="Tech Firms Plan Billion-Dollar AI Data Centers in Patagonia" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="507" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/artificial-intelligence/"> <astro-island uid="KzIew" prefix="s5" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Artificial Intelligence&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Artificial Intelligence</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4372266" data-save-slug="news-patagonia-ai-data-center-projects" data-save-title="Tech Firms Plan Billion-Dollar AI Data Centers in Patagonia" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Tech Firms Plan Billion-Dollar AI Data Centers in Patagonia&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[30px]/[36px] text-[18px]/[22px]" href="/article/news-patagonia-ai-data-center-projects/"> Tech Firms Plan Billion-Dollar AI Data Centers in Patagonia </a><div class="md:block hidden"><div class="font-light text-zinc-800 line-clamp-3 text-ellipsis text-[18px]"><p></p><p>Patagonia is attracting multibillion-dollar AI data center plans, but power infrastructure and connectivity gaps could determine which projects get built.</p>
<p></p></div></div><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/kezia-jungco/"> Kezia Jungco </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Sep 7, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-southeast-asia-data-center-funding-apac-singapore/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAJwAAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACgAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAApG1kYXQSAAoIP8z+SMBDQbQyjQFlnjdDJxX8/mAgQBAwAAAAAAABJJJIIBfU3HL1xd8Z0sD//5GjBj1l+Qum86chh9xavsP1Z6nSZj9a+oKcDimCJFTyfj7yQWuXvEn6RRw7IolVOuuKcRLRTa8jTobS4OdJZtNsPpdDBXj7sRKRAzj6ku4Xr51ISyp7gAXIn0YPwYmKwTCQ+A26aLGVRyg=" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/09/jayjayli-WhXZIQEYfF4-unsplash.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/09/jayjayli-WhXZIQEYfF4-unsplash.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2026/09/jayjayli-WhXZIQEYfF4-unsplash.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2026/09/jayjayli-WhXZIQEYfF4-unsplash.jpg?w=512 512w" alt="Five Singapore Firms Account for 98% of Southeast Asia Data Center Funding as Build-Out Spreads" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="1280" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/data-centers/"> <astro-island uid="Z2vErva" prefix="s6" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Data Centers&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Data Centers</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4371478" data-save-slug="news-southeast-asia-data-center-funding-apac-singapore" data-save-title="Five Singapore Firms Account for 98% of Southeast Asia Data Center Funding as Build-Out Spreads" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Five Singapore Firms Account for 98% of Southeast Asia Data Center Funding as Build-Out Spreads&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/news-southeast-asia-data-center-funding-apac-singapore/"> Five Singapore Firms Account for 98% of Southeast Asia Data Center Funding as Build-Out Spreads </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/techrepublic-staff/"> TechRepublic Staff </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Sep 2, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-anthropic-5gw-ai-data-centers-australia/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAG8AAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACgAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAd21kYXQSAAoIP8z+SMBDQbQyYWV+L0ElE/z9wCDAEGAAAAAAAAEEEEAAwYR5QwQFv6RdHDGm+6JwYwEse1EnOeVgbolSwdWWSUYKoyHG303cmQfyayrCg9ysDcSAB0K1ps2i2tsN9+2ye66yduul+pJxtUA=" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/08/aus-anthropic.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/08/aus-anthropic.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2026/08/aus-anthropic.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2026/08/aus-anthropic.jpg?w=512 512w" alt="Anthropic Eyed 5GW of AI Data Centers in Australia: Could the Grid Handle It?" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="600" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/artificial-intelligence/"> <astro-island uid="KzIew" prefix="s7" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Artificial Intelligence&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Artificial Intelligence</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4371244" data-save-slug="news-anthropic-5gw-ai-data-centers-australia" data-save-title="Anthropic Eyed 5GW of AI Data Centers in Australia: Could the Grid Handle It?" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Anthropic Eyed 5GW of AI Data Centers in Australia: Could the Grid Handle It?&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/news-anthropic-5gw-ai-data-centers-australia/"> Anthropic Eyed 5GW of AI Data Centers in Australia: Could the Grid Handle It? </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/matt-gonzales/"> Matt Gonzales </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Aug 28, 2026</div></div></div> </div> </div> <div class="justify-center md:hidden flex"> </div> </div> </div> <div class="mb-12"> <div class="flex justify-center section-banner data-empty:hidden" data-ad-slot="section-banner"> </div> </div> <div> <div class="flex flex-col gap-7"> <div class="flex items-start justify-between gap-4"> <div class="text-[20px]/[28px] pt-[12px] tracking-[1.4px] font-bold uppercase grow text-secondary border-t-2 border-secondary"> <h2> All Cloud Articles </h2> </div> <div class="hidden md:block"> </div> </div> <div> <div class="grid md:grid-cols-3 gap-8 mb-8"> <div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-oracle-ai-database-aws-exadata-22-regions/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAF0AAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACgAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAZW1kYXQSAAoIP8z+SMBDQbQyT2ViM0UrF/z+4CAAEHgAAAAAAADjjjgAwcckLNEVhc/xQwc+SxfSxcQipaJrfuAaS7jUozSERYAennfzMaQRPEHoK+KKFD2Xbg/WEXZVZ8A=" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/08/hazel-z-FocSgUZ10JM-unsplash.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/08/hazel-z-FocSgUZ10JM-unsplash.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2026/08/hazel-z-FocSgUZ10JM-unsplash.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2026/08/hazel-z-FocSgUZ10JM-unsplash.jpg?w=512 512w" alt="Oracle and AWS Expand Database Partnership With Exadata Service and 22-Region Footprint" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="1248" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/oracle/"> <astro-island uid="2bk5fa" prefix="s8" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Oracle&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Oracle</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4369980" data-save-slug="news-oracle-ai-database-aws-exadata-22-regions" data-save-title="Oracle and AWS Expand Database Partnership With Exadata Service and 22-Region Footprint" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Oracle and AWS Expand Database Partnership With Exadata Service and 22-Region Footprint&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/news-oracle-ai-database-aws-exadata-22-regions/"> Oracle and AWS Expand Database Partnership With Exadata Service and 22-Region Footprint </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/eric-mboizi/"> Eric Mboizi </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Aug 17, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/best-business-email-providers/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUFBQUFBQUGBgUICAcICAsKCQkKCxEMDQwNDBEaEBMQEBMQGhcbFhUWGxcpIBwcICkvJyUnLzkzMzlHREddXX0BBQUFBQUFBQYGBQgIBwgICwoJCQoLEQwNDA0MERoQExAQExAaFxsWFRYbFykgHBwgKS8nJScvOTMzOUdER11dff/AABEIAAoAEAMBIgACEQEDEQH/xABaAAADAQAAAAAAAAAAAAAAAAAAAgQIEAACAwEAAwAAAAAAAAAAAAABAgADETESIVEBAQEAAAAAAAAAAAAAAAAAAAABEQADAQEAAAAAAAAAAAAAAAAAARIRUf/aAAwDAQACEQMRAD8A1Vba9bgFSUJXCnR93YtN73XOPBkVOgr6beYZXCSXW084D//Z" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2024/07/AdobeStock_488920698.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2024/07/AdobeStock_488920698.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2024/07/AdobeStock_488920698.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2024/07/AdobeStock_488920698.jpg?w=512 512w" alt="6 Best Small Business Email Providers for 2026" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="933" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/cxo/"> <astro-island uid="1UAoeo" prefix="s9" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;CXO&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">CXO</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4252843" data-save-slug="best-business-email-providers" data-save-title="6 Best Small Business Email Providers for 2026" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;6 Best Small Business Email Providers for 2026&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/best-business-email-providers/"> 6 Best Small Business Email Providers for 2026 </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/faithe-day/"> Faithe Day </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Aug 17, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/5-free-alternatives-to-microsoft-word/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4QAwRXhpZgAATU0AKgAAAAgAAYKYAAIAAAAOAAAAGgAAAABJbmd2YXIgQmrDtnJrAP/bAIQABQUFBQUFBQYGBQgIBwgICwoJCQoLEQwNDA0MERoQExAQExAaFxsWFRYbFykgHBwgKS8nJScvOTMzOUdER11dfQEFBQUFBQUFBgYFCAgHCAgLCgkJCgsRDA0MDQwRGhATEBATEBoXGxYVFhsXKSAcHCApLyclJy85MzM5R0RHXV19/8AAEQgACgAQAwEiAAIRAQMRAf/EAGAAAQEBAAAAAAAAAAAAAAAAAAgBBhAAAgIBBQADAAAAAAAAAAAAAQMCBBEABQYSEwciMQEBAAAAAAAAAAAAAAAAAAAABhEAAQQDAQAAAAAAAAAAAAAAAgMFEUEAARMh/9oADAMBAAIRAxEAPwC/EqqD9/si3RTYJqy8vWAYFkTjk4OkkqtUNsKTX8liLBOKY+YJHUif0AxnOg9tVu3T5XxyVa01JkXglczAkdfw41qd/wCR8hWXCG+345mc4ssGdJndM13NQexDAjF1h1oVBJuSLlrfpTV5/9k=" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2023/05/tr52623-microsoft365-substrate.jpeg?w=1024" srcset="https://assets.techrepublic.com/uploads/2023/05/tr52623-microsoft365-substrate.jpeg?w=128 128w, https://assets.techrepublic.com/uploads/2023/05/tr52623-microsoft365-substrate.jpeg?w=256 256w, https://assets.techrepublic.com/uploads/2023/05/tr52623-microsoft365-substrate.jpeg?w=512 512w" alt="5 Best Free Microsoft Word Alternatives for 2026" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="933" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/microsoft/"> <astro-island uid="Z1S0rTg" prefix="s10" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Microsoft&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Microsoft</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="66887" data-save-slug="5-free-alternatives-to-microsoft-word" data-save-title="5 Best Free Microsoft Word Alternatives for 2026" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;5 Best Free Microsoft Word Alternatives for 2026&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/5-free-alternatives-to-microsoft-word/"> 5 Best Free Microsoft Word Alternatives for 2026 </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/faithe-day/"> Faithe Day </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Aug 13, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/scramble-cloud-storage-lifetime-subscription/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAJ8AAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACgAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAp21kYXQSAAoIP8z+SMBDQbQykAFlrjtDJRf6/+AgEBAQAAAAAAABRRRQAMGDNdSgE6e80Roe8vnW21krKt+Ls4pxgcvKIBX80uSrwGgqGyMbYbPfRAayCd+cvugn2ePL/TeK0lwIZV6ErLDQIlnoMDOst/Mgpv/sOzGma7V9Ku0REyR4/RwP773lf0IJm4PfKQb8dCfsQ7V56s7r/7mGi0FgncA=" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/07/tra-07092026-scramble-cloud-storage-lifetime-subscription.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/07/tra-07092026-scramble-cloud-storage-lifetime-subscription.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2026/07/tra-07092026-scramble-cloud-storage-lifetime-subscription.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2026/07/tra-07092026-scramble-cloud-storage-lifetime-subscription.jpg?w=512 512w" alt="This 20TB Cloud Storage Lifetime Subscription is on Sale for $350" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="600" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/tr-academy/"> <astro-island uid="ZNlMON" prefix="s11" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;TR Academy&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">TR Academy</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4364612" data-save-slug="scramble-cloud-storage-lifetime-subscription" data-save-title="This 20TB Cloud Storage Lifetime Subscription is on Sale for $350" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;This 20TB Cloud Storage Lifetime Subscription is on Sale for $350&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/scramble-cloud-storage-lifetime-subscription/"> This 20TB Cloud Storage Lifetime Subscription is on Sale for $350 </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/techrepublic-academy/"> TechRepublic Academy </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Aug 12, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-google-ai-leadership-hassabis-jeff-dean/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAGgAAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACAAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAcG1kYXQSAAoIP8y/kYCGg2gyWmWyO0MlF/rAACAAEAAAAAAAAAFFFFAAHdn6QeRexKf71B9oLkP1GVdt44xNjqvjNGUS5spv3oCaDIKfWnfA52N4JWyWmGIsiV1hrtrQfjKJhOS6iHTfxn6ecA==" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/08/Gemini_Generated_Image_on4qkvon4qkvon4q.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/08/Gemini_Generated_Image_on4qkvon4qkvon4q.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2026/08/Gemini_Generated_Image_on4qkvon4qkvon4q.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2026/08/Gemini_Generated_Image_on4qkvon4qkvon4q.jpg?w=512 512w" alt="Google Overhauls AI Leadership as Hassabis Steps Aside, Dean Leaves" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="502" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/artificial-intelligence/"> <astro-island uid="KzIew" prefix="s12" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Artificial Intelligence&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Artificial Intelligence</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4368697" data-save-slug="news-google-ai-leadership-hassabis-jeff-dean" data-save-title="Google Overhauls AI Leadership as Hassabis Steps Aside, Dean Leaves" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Google Overhauls AI Leadership as Hassabis Steps Aside, Dean Leaves&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/news-google-ai-leadership-hassabis-jeff-dean/"> Google Overhauls AI Leadership as Hassabis Steps Aside, Dean Leaves </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/kezia-jungco/"> Kezia Jungco </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Aug 6, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-apple-photos-bipa-class-action-appeal/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAHoAAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACQAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAgm1kYXQSAAoIP8z+CMBDQbQybGWCK0ElE/z9wCDAEGgAAAAAAAEEEEAAwYSIopTtQFDcvWPaPW8KXeDYEeVPOci47wk9vDUE9ZVBIp1IhthTjB/zn3HgRRr1+8/OgK6qsvQh1mrv58kxHSMXg0yub+guQyAvI5rHCsPtynIYmQ==" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/08/apple_photos-1.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/08/apple_photos-1.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2026/08/apple_photos-1.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2026/08/apple_photos-1.jpg?w=512 512w" alt="Apple Photos Privacy Case Advances, With Up to $32.5 Billion Alleged Exposure" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="711" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/apple/"> <astro-island uid="23FPGU" prefix="s13" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Apple&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Apple</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4368539" data-save-slug="news-apple-photos-bipa-class-action-appeal" data-save-title="Apple Photos Privacy Case Advances, With Up to $32.5 Billion Alleged Exposure" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Apple Photos Privacy Case Advances, With Up to $32.5 Billion Alleged Exposure&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/news-apple-photos-bipa-class-action-appeal/"> Apple Photos Privacy Case Advances, With Up to $32.5 Billion Alleged Exposure </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/aminu-abdullahi/"> Aminu Abdullahi </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Aug 5, 2026</div></div></div><div class="md:col-span-3 my-8"> <div class="has-data-empty:hidden print:hidden"> <div class="flex items-center gap-4"> <div class="flex-1 border-t border-zinc-300"></div> <span class="text-xs uppercase font-semibold text-zinc-600">Advertisement</span> <div class="flex-1 border-t border-zinc-300"></div> </div> <div class="py-2"> <div class="flex justify-center section-banner data-empty:hidden" data-ad-slot="section-banner"> </div> </div> <div class="border-t border-zinc-300"></div> </div> </div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-oracle-ai-data-center-funding/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAKAAAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACgAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAqG1kYXQSAAoIP8z+SMBDQbQykQFlnjdDJxX8/yAgABAgAAAAAAABJJJIAMNckOachlNskq4lukg7oCQDbPdOnhD5zT34Vd758NK/8py5iTAlQDVfvvInCK3+TmKbX3U9/OAIyMSQpnxV+S6okTyw8UWC/YKcM1Uu1ZitF6ykMsK3AnEtxcIVIomuBDmPeoaYIwSOjzuk9Ond+Vps1EFLVuL8JX9g" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/08/AIWorld_Sphere.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/08/AIWorld_Sphere.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2026/08/AIWorld_Sphere.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2026/08/AIWorld_Sphere.jpg?w=512 512w" alt="Oracle’s AI Data Center Funding Tests OCI Delivery Timelines" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="683" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/cloud-infrastructure/"> <astro-island uid="ZgihOM" prefix="s14" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Cloud Infrastructure&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Cloud Infrastructure</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4368101" data-save-slug="news-oracle-ai-data-center-funding" data-save-title="Oracle’s AI Data Center Funding Tests OCI Delivery Timelines" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Oracle’s AI Data Center Funding Tests OCI Delivery Timelines&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/news-oracle-ai-data-center-funding/"> Oracle’s AI Data Center Funding Tests OCI Delivery Timelines </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/techrepublic-staff/"> TechRepublic Staff </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Aug 4, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/how-google-docs-grammar-check-compares-to-its-alternatives/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUFBQUFBQUGBgUICAcICAsKCQkKCxEMDQwNDBEaEBMQEBMQGhcbFhUWGxcpIBwcICkvJyUnLzkzMzlHREddXX0BBQUFBQUFBQYGBQgIBwgICwoJCQoLEQwNDA0MERoQExAQExAaFxsWFRYbFykgHBwgKS8nJScvOTMzOUdER11dff/AABEIAAMAEAMBIgACEQEDEQH/xABUAAEBAQAAAAAAAAAAAAAAAAAAAQgQAAIDAAMAAAAAAAAAAAAAAAIDAAEREiFBAQEBAAAAAAAAAAAAAAAAAAAAAREBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A2EtQG5VWNZ3ICw5bnkRCP//Z" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2019/04/tools-s-g.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2019/04/tools-s-g.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2019/04/tools-s-g.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2019/04/tools-s-g.jpg?w=512 512w" alt="5 Google Docs Grammar Check Alternatives Compared for 2026" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="275" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/software/"> <astro-island uid="Z127LDH" prefix="s15" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Software&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Software</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="64131" data-save-slug="how-google-docs-grammar-check-compares-to-its-alternatives" data-save-title="5 Google Docs Grammar Check Alternatives Compared for 2026" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;5 Google Docs Grammar Check Alternatives Compared for 2026&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/how-google-docs-grammar-check-compares-to-its-alternatives/"> 5 Google Docs Grammar Check Alternatives Compared for 2026 </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/andy-wolber/"> Andy Wolber </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Jul 28, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-aws-billing-bug-trillion-dollar-estimates-explained/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAKEAAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACgAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAqW1kYXQSAAoIP8z+SMBDQbQykgFlgis/JRH8/eA/wBA4CBwAAAAAAIIIIADE2MC1l7xNQrDMqtSjFoi+uzhyBb6qpScSP3Dc0A+H+7Z1mHMNxucoBBrZJyIwfTQpCsXrWlolufCeF5A1B30Gd+lLuIKPGtsUMUMehon4+98R6on7eeCgJtzqYLQAguh9/gx7tH5C0PKa+/UZqGBs8Fn/eYjd3NUYQA==" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/07/aws-error.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/07/aws-error.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2026/07/aws-error.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2026/07/aws-error.jpg?w=512 512w" alt="AWS Billion-Dollar Software Bug Explained" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="600" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/security/"> <astro-island uid="ZTDA65" prefix="s16" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Security&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Security</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4365853" data-save-slug="news-aws-billing-bug-trillion-dollar-estimates-explained" data-save-title="AWS Billion-Dollar Software Bug Explained" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;AWS Billion-Dollar Software Bug Explained&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/news-aws-billing-bug-trillion-dollar-estimates-explained/"> AWS Billion-Dollar Software Bug Explained </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/joseph-ofonagoro/"> Joseph Ofonagoro </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Jul 20, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-apple-hide-my-email-privacy-lawsuit/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAG4AAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACgAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAdm1kYXQSAAoIP8z+SMBDQbQyYGWWM0MnFfz9QCBQEDgAAAAAAAEkkkgAwkCxK1jC/y9y1dpA5zWOOUUYH2EKR4Zycv91kRG7nZYFLdKtnA+bJn82Y8uU0R+cWddwhHq09uuB5RR5gswDu4PkzsThG+QQ2A==" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/07/tr-07172026-apple-hide-my-email-privacy-lawsuit-1-1.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/07/tr-07172026-apple-hide-my-email-privacy-lawsuit-1-1.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2026/07/tr-07172026-apple-hide-my-email-privacy-lawsuit-1-1.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2026/07/tr-07172026-apple-hide-my-email-privacy-lawsuit-1-1.jpg?w=512 512w" alt="Apple Sued Over Hide My Email Privacy Claims" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="600" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/apple/"> <astro-island uid="23FPGU" prefix="s17" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Apple&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Apple</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4365625" data-save-slug="news-apple-hide-my-email-privacy-lawsuit" data-save-title="Apple Sued Over Hide My Email Privacy Claims" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Apple Sued Over Hide My Email Privacy Claims&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/news-apple-hide-my-email-privacy-lawsuit/"> Apple Sued Over Hide My Email Privacy Claims </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/kezia-jungco/"> Kezia Jungco </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Jul 17, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-claude-chrome-flaw-rogue-extensions-gmail/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAE8AAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACQAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAV21kYXQSAAoIP8z+CMBDQbQyQWU6P0sxHGAAEAAIBAAAAAAAAGGGGADDKmHC1vAlai3Tu1TZTDtCMxzaV6kp3rOj7DiMoii3wIuqOOtM5jljWo/y" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/07/unnamed-26.png?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/07/unnamed-26.png?w=128 128w, https://assets.techrepublic.com/uploads/2026/07/unnamed-26.png?w=256 256w, https://assets.techrepublic.com/uploads/2026/07/unnamed-26.png?w=512 512w" alt="Claude for Chrome Flaw Puts Gmail at Risk From Rogue Extensions" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="941" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/security/"> <astro-island uid="ZTDA65" prefix="s18" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Security&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Security</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4365450" data-save-slug="news-claude-chrome-flaw-rogue-extensions-gmail" data-save-title="Claude for Chrome Flaw Puts Gmail at Risk From Rogue Extensions" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Claude for Chrome Flaw Puts Gmail at Risk From Rogue Extensions&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/news-claude-chrome-flaw-rogue-extensions-gmail/"> Claude for Chrome Flaw Puts Gmail at Risk From Rogue Extensions </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/kezia-jungco/"> Kezia Jungco </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Jul 16, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/filejump-cloud-storage-lifetime-subscription/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUFBQUFBQUGBgUICAcICAsKCQkKCxEMDQwNDBEaEBMQEBMQGhcbFhUWGxcpIBwcICkvJyUnLzkzMzlHREddXX0BBQUFBQUFBQYGBQgIBwgICwoJCQoLEQwNDA0MERoQExAQExAaFxsWFRYbFykgHBwgKS8nJScvOTMzOUdER11dff/AABEIAAoAEAMBIgACEQEDEQH/xABgAAEBAAAAAAAAAAAAAAAAAAAGCBAAAwEAAgMBAQAAAAAAAAAAAQIDBAARBSExBmEBAQEAAAAAAAAAAAAAAAAAAAQFEQACAgAHAAAAAAAAAAAAAAABAgARAwQFISIxMv/aAAwDAQACEQMRAD8ApFpy0U2r5L9G+apqzTmtoTVZv7UAVmCeh9PvgPyQnK+6Udx1ylcpO5ZGJUordEzAU9E8eRyZNuWzas0rsjsiGqByq9k9Dv4OCfMQjnLTjFJoPYVFCj3/AAcvaMHbGVi/GvEDm6CkVvfc/9k=" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2024/09/tra_20240917-filejump-cloud-storage-lifetime-subscription.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2024/09/tra_20240917-filejump-cloud-storage-lifetime-subscription.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2024/09/tra_20240917-filejump-cloud-storage-lifetime-subscription.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2024/09/tra_20240917-filejump-cloud-storage-lifetime-subscription.jpg?w=512 512w" alt="Your Data, Always Within Reach – 2TB of Lifetime Cloud Storage Is $59" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="900" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/tr-academy/"> <astro-island uid="ZNlMON" prefix="s19" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;TR Academy&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">TR Academy</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4263116" data-save-slug="filejump-cloud-storage-lifetime-subscription" data-save-title="Your Data, Always Within Reach – 2TB of Lifetime Cloud Storage Is $59" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Your Data, Always Within Reach – 2TB of Lifetime Cloud Storage Is $59&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/filejump-cloud-storage-lifetime-subscription/"> Your Data, Always Within Reach – 2TB of Lifetime Cloud Storage Is $59 </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/techrepublic-academy/"> TechRepublic Academy </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Jul 7, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-azure-cli-mfa-gap/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAHkAAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACgAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAgW1kYXQSAAoIP8z+SMBDQbQya2WqO0MlFfr/YCAQEBAAAAAAAAFFFFAAwkmq03yVOrGrA93/VJyFUubeImtnN/4qzL6ZiTWUUfP8d3eSm8th2f3e5tA3IpFqexmRzFTavDWlAU4FQWZgvcOzv8gPGgTL61BhBInKz3SdsF04" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/07/close-up-of-male-hand-using-keyboard-with-abstract-2026-01-11-08-38-45-utc.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/07/close-up-of-male-hand-using-keyboard-with-abstract-2026-01-11-08-38-45-utc.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2026/07/close-up-of-male-hand-using-keyboard-with-abstract-2026-01-11-08-38-45-utc.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2026/07/close-up-of-male-hand-using-keyboard-with-abstract-2026-01-11-08-38-45-utc.jpg?w=512 512w" alt="Azure CLI Password Spray Attack Exposes Microsoft 365 MFA Gap" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="682" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/cybersecurity/"> <astro-island uid="Z1orjKQ" prefix="s20" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Cybersecurity&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Cybersecurity</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4363931" data-save-slug="news-azure-cli-mfa-gap" data-save-title="Azure CLI Password Spray Attack Exposes Microsoft 365 MFA Gap" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Azure CLI Password Spray Attack Exposes Microsoft 365 MFA Gap&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/news-azure-cli-mfa-gap/"> Azure CLI Password Spray Attack Exposes Microsoft 365 MFA Gap </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/techrepublic-staff/"> TechRepublic Staff </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Jul 6, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-meta-ai-cloud-apac/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAIMAAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACQAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAi21kYXQSAAoIP8z+CMBDQbQydWWKL0EnE/z+wCAQECgAAAAAAAEEEEAAwkPT+BqMecemCf+0EXfJEUQ9UUJt3ro3LzskRMtoft4e4DEb6h+0742cuj0tULqOy8x2ndBWIVtMrHvCvWcSBTYGNaWEgY0wdQ3ATuDRKUKiRpkU/em34TYyZREDSA==" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/07/Servers_Scaled.webp?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/07/Servers_Scaled.webp?w=128 128w, https://assets.techrepublic.com/uploads/2026/07/Servers_Scaled.webp?w=256 256w, https://assets.techrepublic.com/uploads/2026/07/Servers_Scaled.webp?w=512 512w" alt="Meta’s Reported AI Cloud Plans Are Not Yet Ready for APAC Procurement" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="1875" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/cloud-infrastructure/"> <astro-island uid="ZgihOM" prefix="s21" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Cloud Infrastructure&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Cloud Infrastructure</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4363946" data-save-slug="news-meta-ai-cloud-apac" data-save-title="Meta’s Reported AI Cloud Plans Are Not Yet Ready for APAC Procurement" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Meta’s Reported AI Cloud Plans Are Not Yet Ready for APAC Procurement&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/news-meta-ai-cloud-apac/"> Meta’s Reported AI Cloud Plans Are Not Yet Ready for APAC Procurement </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/techrepublic-staff/"> TechRepublic Staff </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Jul 6, 2026</div></div></div><div class="group/card space-y-[17px]"><div class="flex flex-col w-full"><a class="block group w-full overflow-hidden relative" href="/article/news-meta-ai-compute-cloud-business/"> <div class="relative w-full aspect-video"> <div class="w-full h-full relative" data-lazyimage=""> <img alt="" src="data:image/avif;base64,AAAAGGZ0eXBhdmlmAAAAAG1pZjFtaWFmAAAA0m1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAAA8gAAAF4AAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABhdjAxAAAAAFZpcHJwAAAAOGlwY28AAAAUaXNwZQAAAAAAAAAQAAAACAAAAAxhdjFDgT9AAAAAABBwaXhpAAAAAAMKCgoAAAAWaXBtYQAAAAAAAAABAAEDAYIDAAAAZm1kYXQSAAoIP8y/kYCGg2gyUGWqO0MnF/zAACAAEAAAAAAAAAFFFFAAt1vmsJG02o+f/W8/nc3kVxqdFscIwti57Njt+sOyLfpIlD8fEH0rjhie99vE2vJyIKxMT4c5jOT3" decoding="async" aria-hidden="true" class="w-full h-full object-cover aspect-video absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2026/07/AdobeStock_553905829.jpg?w=1024" srcset="https://assets.techrepublic.com/uploads/2026/07/AdobeStock_553905829.jpg?w=128 128w, https://assets.techrepublic.com/uploads/2026/07/AdobeStock_553905829.jpg?w=256 256w, https://assets.techrepublic.com/uploads/2026/07/AdobeStock_553905829.jpg?w=512 512w" alt="Meta Could Sell AI Compute Capacity as Infrastructure Costs Rise" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="471" class="w-full h-full object-cover aspect-video transition-opacity duration-300"> </div> </div> </a><div class="flex items-start justify-between gap-2"><a class="bg-primary overflow-hidden text-primary-foreground inline-block uppercase text-[12px] leading-[16px] font-mono font-semibold hover:bg-primary/90 self-start tracking-widest text-nowrap max-w-full text-ellipsis" href="/topic/meta/"> <astro-island uid="Z2uKplH" prefix="s22" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/Ticker.Bx_ayGdx.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;text&quot;:[0,&quot;Meta&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;Ticker&quot;,&quot;value&quot;:true}" await-children=""><div class="ticker-container px-[8px] py-[6px] flex" style="--scroll-distance:-0px;" data-v-34ac2891=""><span class="w-full truncate ticker-text" data-v-34ac2891="">Meta</span></div><!--astro:end--></astro-island> </a><button type="button" data-save-toggle="" data-save-item-type="article" data-save-id="4364057" data-save-slug="news-meta-ai-compute-cloud-business" data-save-title="Meta Could Sell AI Compute Capacity as Infrastructure Costs Rise" data-save-surface="card" aria-pressed="false" aria-label="Save &quot;Meta Could Sell AI Compute Capacity as Infrastructure Costs Rise&quot; to read later" class="group cursor-pointer border-none bg-transparent p-0 transition-[color,opacity] motion-reduce:transition-none size-11 -m-1.5 shrink-0 flex items-center justify-center text-zinc-500 hover:text-primary data-[saved]:text-primary lg:opacity-0 lg:group-hover/card:opacity-100 lg:group-focus-within/card:opacity-100 data-[saved]:opacity-100"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-icon lucide-bookmark size-4 group-data-[saved]:hidden" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bookmark-check-icon lucide-bookmark-check size-4 hidden group-data-[saved]:block fill-current" aria-hidden="true"><path d="M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" /><path d="m9 10 2 2 4-4" /></svg> </button></div></div><a class="font-semibold text-secondary hover:text-primary line-clamp-3 text-ellipsis md:text-[18px]/[22px] text-[18px]/[22px]" href="/article/news-meta-ai-compute-cloud-business/"> Meta Could Sell AI Compute Capacity as Infrastructure Costs Rise </a><div class="gap-x-7 mt-2 uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500 flex flex-col"><a class="text-secondary hover:text-primary font-semibold" href="/meet-the-team/us/david-curry/"> David Curry </a><div class="uppercase font-mono text-[12px] leading-[16px] tracking-widest text-zinc-500">Jul 2, 2026</div></div></div> </div> <div class="mb-8"> <div class="flex justify-center section-banner data-empty:hidden" data-ad-slot="section-banner"> </div> </div> <div class="flex flex-wrap justify-center items-center mt-14 text-sm text-gray-500"> <div class="flex items-center mt-4 gap-2"> <a class="min-w-8 h-8 px-2.5 py-1.25 border flex items-center justify-center rounded-full bg-primary text-primary-foreground hover:text-primary-foreground" href="/topic/cloud/"> 1 </a><a class="min-w-8 h-8 px-2.5 py-1.25 border flex items-center justify-center rounded-full bg-white hover:bg-primary/80 hover:text-primary-foreground text-secondary" href="/topic/cloud/page/2/"> 2 </a><a class="min-w-8 h-8 px-2.5 py-1.25 border flex items-center justify-center rounded-full bg-white hover:bg-primary/80 hover:text-primary-foreground text-secondary" href="/topic/cloud/page/3/"> 3 </a><div class="px-2">...</div><a class="min-w-8 h-8 px-2.5 py-1.25 border flex items-center justify-center rounded-full bg-white hover:bg-primary/80 hover:text-primary-foreground text-secondary" href="/topic/cloud/page/66/"> 66 </a> <a class="w-8 h-8 rounded-full flex items-center justify-center bg-white hover:bg-primary/80 hover:text-primary-foreground text-secondary" href="/topic/cloud/page/2/" aria-label="Next Page"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right-icon lucide-chevron-right w-4 h-4" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg> </a> </div> </div> </div> <div class="justify-center md:hidden flex"> </div> </div> </div> </div> <aside class="lg:min-w-[300px] lg:max-w-[300px] gap-10 flex flex-col content-sidebar"> <div class="space-y-8 h-full"> <div> <div class="flex flex-col gap-7"> <div class="flex items-start justify-between gap-4"> <div class="text-[20px]/[28px] pt-[12px] tracking-[1.4px] font-bold uppercase grow text-secondary border-t-2 border-secondary"> <h2>Popular Articles</h2> </div> <div class="hidden md:block"> </div> </div> <div> <div class="flex flex-col gap-4"> <div class="flex justify-between border-t border-zinc-200"><div class="grow h-full space-y-[11px] pr-4"><a class="text-secondary hover:text-primary my-2 font-semibold line-clamp-3 text-ellipsis overflow-hidden text-[14px]/[18px]" href="/article/smarter-storage-edge-ai-anywhere/"> Smarter Storage at the Edge: The Key to AI Anywhere </a><a class="font-mono uppercase font-bold text-xs line-clamp-2 text-ellipsis overflow-hidden tracking-[1px]" href="/topic/artificial-intelligence/"> Artificial Intelligence </a></div><a href="/article/smarter-storage-edge-ai-anywhere/"> <div class="aspect-square relative max-w-[85px] min-w-[85px]"><div class="h-full group relative" data-lazyimage=""> <img alt="" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUFBQUFBQUGBgUICAcICAsKCQkKCxEMDQwNDBEaEBMQEBMQGhcbFhUWGxcpIBwcICkvJyUnLzkzMzlHREddXX0BBQUFBQUFBQYGBQgIBwgICwoJCQoLEQwNDA0MERoQExAQExAaFxsWFRYbFykgHBwgKS8nJScvOTMzOUdER11dff/AABEIAAoAEAMBIgACEQEDEQH/xABpAAEBAAAAAAAAAAAAAAAAAAAFBhAAAgEDAwUBAAAAAAAAAAAAAQIDBAUSAAYxERMUIUEiAQEBAAAAAAAAAAAAAAAAAAADBBEAAQEFCQAAAAAAAAAAAAAAAREAAgMEEgUTFBUxMjNhsv/aAAwDAQACEQMRAD8AgrVZ6qlW92yKlkqJYK+eNHRh+gCDzxzoHcttudZuOipPANMe7EiyTYxqSW9EknELl91S7qnnWlp2WZwz3KYMQxBYAfdI7WkeeOLvO0mNwZFzOXRTj6HX5q/EuZWSYR5QEqGqHpgElFNqUiYdpu12FfTf/9k=" decoding="async" aria-hidden="true" class="object-cover h-full group absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2025/10/close-up-of-businessman-hand-holding-tablet-with-a-2025-10-15-06-39-30-utc.png?f=jpeg&w=1024" srcset="https://assets.techrepublic.com/uploads/2025/10/close-up-of-businessman-hand-holding-tablet-with-a-2025-10-15-06-39-30-utc.png?f=jpeg&w=128 128w, https://assets.techrepublic.com/uploads/2025/10/close-up-of-businessman-hand-holding-tablet-with-a-2025-10-15-06-39-30-utc.png?f=jpeg&w=256 256w" alt="Smarter Storage at the Edge: The Key to AI Anywhere" sizes="85px" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="900" class="object-cover h-full group transition-opacity duration-300"> </div> </div> </a></div><div class="flex justify-between border-t border-zinc-200"><div class="grow h-full space-y-[11px] pr-4"><a class="text-secondary hover:text-primary my-2 font-semibold line-clamp-3 text-ellipsis overflow-hidden text-[14px]/[18px]" href="/article/find-windows-11-product-key/"> How to Find Your Windows 11 Product Key With 3 Easy Methods </a><a class="font-mono uppercase font-bold text-xs line-clamp-2 text-ellipsis overflow-hidden tracking-[1px]" href="/topic/microsoft/"> Microsoft </a></div><a href="/article/find-windows-11-product-key/"> <div class="aspect-square relative max-w-[85px] min-w-[85px]"><div class="h-full group relative" data-lazyimage=""> <img alt="" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUFBQUFBQUGBgUICAcICAsKCQkKCxEMDQwNDBEaEBMQEBMQGhcbFhUWGxcpIBwcICkvJyUnLzkzMzlHREddXX0BBQUFBQUFBQYGBQgIBwgICwoJCQoLEQwNDA0MERoQExAQExAaFxsWFRYbFykgHBwgKS8nJScvOTMzOUdER11dff/AABEIAAkAEAMBIgACEQEDEQH/xABmAAEBAQAAAAAAAAAAAAAAAAAHBQYQAAIBAwMEAwAAAAAAAAAAAAECAwAEBQYREhMUMnEiNXQBAQAAAAAAAAAAAAAAAAAAAAcRAAIABgMBAAAAAAAAAAAAAAECAAMEESExBRITUf/aAAwDAQACEQMRAD8A2c2siIb2R4Ws7cKvbycQzSb+R5MQFAFGWVzvWjuJYZbaX4liyuGce9yao6v8cR7Wiey+oyf6I6aeP4+np5ftJQJ2z1tfWN7OoMwz1yCbPYuVYAbtk/I//9k=" decoding="async" aria-hidden="true" class="object-cover h-full group absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2022/04/win11_product_key.jpg?f=jpeg&w=1024" srcset="https://assets.techrepublic.com/uploads/2022/04/win11_product_key.jpg?f=jpeg&w=128 128w, https://assets.techrepublic.com/uploads/2022/04/win11_product_key.jpg?f=jpeg&w=256 256w" alt="How to Find Your Windows 11 Product Key With 3 Easy Methods" sizes="85px" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="675" class="object-cover h-full group transition-opacity duration-300"> </div> </div> </a></div><div class="flex justify-between border-t border-zinc-200"><div class="grow h-full space-y-[11px] pr-4"><a class="text-secondary hover:text-primary my-2 font-semibold line-clamp-3 text-ellipsis overflow-hidden text-[14px]/[18px]" href="/article/3-simple-ways-to-find-your-windows-10-product-key/"> How to Find Windows 10 Product Key in 3 Ways </a><a class="font-mono uppercase font-bold text-xs line-clamp-2 text-ellipsis overflow-hidden tracking-[1px]" href="/topic/microsoft/"> Microsoft </a></div><a href="/article/3-simple-ways-to-find-your-windows-10-product-key/"> <div class="aspect-square relative max-w-[85px] min-w-[85px]"><div class="h-full group relative" data-lazyimage=""> <img alt="" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUFBQUFBQUGBgUICAcICAsKCQkKCxEMDQwNDBEaEBMQEBMQGhcbFhUWGxcpIBwcICkvJyUnLzkzMzlHREddXX0BBQUFBQUFBQYGBQgIBwgICwoJCQoLEQwNDA0MERoQExAQExAaFxsWFRYbFykgHBwgKS8nJScvOTMzOUdER11dff/AABEIAAoAEAMBIgACEQEDEQH/xABiAAEBAQAAAAAAAAAAAAAAAAADBAcQAAIBBAICAwAAAAAAAAAAAAECAwQFERIABgcxISIkAQEBAAAAAAAAAAAAAAAAAAAEBREBAAIDAAMAAAAAAAAAAAAAAQQRABITAhQh/9oADAMBAAIRAxEAPwDKKO4N+eadI1Kq2jxoC42KgneQs3115dL2Xo9qhhWtpZbnWrttG4kSI5JwTvglTnIHGtEcZgdii7bk5x88byTQUK9FtNUtFAKgyoDMI13Pv23KciL5EXfun2kCsBHlntacRosVus//2Q==" decoding="async" aria-hidden="true" class="object-cover h-full group absolute inset-0" style="z-index: -1"> <div data-blur="" class="absolute inset-0 transition-opacity duration-300" style="backdrop-filter: blur(20px); z-index: 1;"></div> <img src="https://assets.techrepublic.com/uploads/2024/11/tr_20241129-3-simple-ways-to-find-your-windows-10-product-key.jpg?f=jpeg&w=1024" srcset="https://assets.techrepublic.com/uploads/2024/11/tr_20241129-3-simple-ways-to-find-your-windows-10-product-key.jpg?f=jpeg&w=128 128w, https://assets.techrepublic.com/uploads/2024/11/tr_20241129-3-simple-ways-to-find-your-windows-10-product-key.jpg?f=jpeg&w=256 256w" alt="How to Find Windows 10 Product Key in 3 Ways" sizes="85px" loading="lazy" fetchpriority="auto" decoding="async" data-image="true" style="opacity:0" width="1024" height="900" class="object-cover h-full group transition-opacity duration-300"> </div> </div> </a></div> </div> </div> <div class="justify-center md:hidden flex"> </div> </div> </div> <div class="sticky-ad-container h-full lg:h-[1200px]"> <div class="sticky top-50 flex flex-col gap-6"> <div class="flex justify-center right-rail data-empty:hidden" data-ad-slot="right-rail"> </div> </div> </div> <div class="w-full sticky top-50"> <astro-island uid="1yihMx" prefix="s1" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/CardNewsletterSubscribe.CDvKoJ8K.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{&quot;config&quot;:[0,{&quot;title&quot;:[0,&quot;Newsletters - TechRepublic&quot;],&quot;header&quot;:[0,&quot;Daily Tech Insider&quot;],&quot;subheader&quot;:[0,&quot;If you can only read one tech story a day, this is it.&quot;],&quot;primarySubscription&quot;:[0,{&quot;code&quot;:[0,&quot;daily-tech-insider&quot;],&quot;name&quot;:[0,&quot;Daily Tech Insider&quot;],&quot;label&quot;:[0,&quot;If you can only read one tech story a day, this is it.&quot;]}],&quot;preferenceCenterCodes&quot;:[1,[[0,&quot;daily-tech-insider&quot;],[0,&quot;cybersecurity-insider&quot;],[0,&quot;cloud-insider&quot;],[0,&quot;data-insider&quot;],[0,&quot;developer-insider&quot;],[0,&quot;executive-briefing&quot;],[0,&quot;innovation-insider&quot;],[0,&quot;microsoft-weekly&quot;],[0,&quot;project-management-insider&quot;],[0,&quot;tech-insider-europe-by-techrepublic&quot;],[0,&quot;daily-tech-insider-au&quot;]]],&quot;exitIntent&quot;:[0,{&quot;targeting&quot;:[0,{&quot;europe&quot;:[0,&quot;tech-insider-europe-by-techrepublic&quot;]}]}],&quot;assets&quot;:[0,{&quot;backgroundImage&quot;:[0,null],&quot;desktopPreview&quot;:[0,null],&quot;mobilePreview&quot;:[0,null],&quot;peopleImage&quot;:[0,null]}]}],&quot;websiteName&quot;:[0,&quot;TechRepublic&quot;],&quot;slug&quot;:[0,&quot;techrepublic&quot;],&quot;location&quot;:[0,&quot;sidebar&quot;],&quot;locale&quot;:[0,&quot;en&quot;],&quot;joinText&quot;:[0,&quot;Join For Free&quot;],&quot;inputPlaceholder&quot;:[0,&quot;ENTER YOUR EMAIL&quot;],&quot;termsLabel&quot;:[0,&quot;Terms&quot;],&quot;privacyLabel&quot;:[0,&quot;Privacy Policy&quot;]}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;CardNewsletterSubscribe&quot;,&quot;value&quot;:true}" await-children=""><div class="pt-[20px] pb-[30px] px-[24px] space-y-4 @container bg-primary/10"><h2 class="text-[24px]/[27px] tracking-[1.2px] font-bold uppercase text-secondary">Daily Tech Insider</h2><p class="text-[18px]/[24px] font-light">If you can only read one tech story a day, this is it.</p><!--[--><form class="space-y-4 flex gap-4 flex-wrap justify-between"><input name="email" type="email" value="" placeholder="enter your email" autocomplete="off" style="display:contents;opacity:0;"><div class="flex lg:flex-row flex-col w-full lg:bg-white rounded-full p-1 has-active:border-zinc-400 has-focus:border-zinc-400 border-zinc-200 lg:border border-0 motion-safe:transition flex-col! bg-transparent! border-0! gap-y-2! pb-0! mb-0!"><label for="subscription-email-9951" class="sr-only">ENTER YOUR EMAIL</label><input id="subscription-email-9951" type="email" placeholder="ENTER YOUR EMAIL" class="border border-zinc-300 bg-white w-full text-[16px] p-2 rounded-lg order-1 sm:grow sm:basis-0 lg:w-auto lg:grow flex-1 px-6 py-3 text-gray-800 text-lg lg:border-none outline-none rounded-l-full rounded-r-full lg:rounded-r-none focus:border-tertiary active:border-tertiary lg:active:border-none lg:focus:border-none rounded-full!"><button type="submit" id="join-newsletter-btn" class="text-[16px] rounded-full py-2 order-3 hover:cursor-pointer motion-safe:transition max-sm:w-full px-8 sm:order-2 lg:min-w-[205px] flex items-center justify-center bg-tertiary text-tertiary-foreground hover:bg-tertiary/80 font-bold tracking-wide min-w-auto!">Join For Free</button></div><!----><!--[--><div class="text-sm text-gray-600">By subscribing, you agree to receive emails from TechRepublic. You can unsubscribe at any time. View our <a href="/terms-conditions/" target="_blank">Terms</a> and <a href="/privacy-policy/" target="_blank">Privacy Policy</a>. </div><!--]--></form><!----><!----><!--]--></div><!--astro:end--></astro-island> </div> </div> </aside> </div> <div class="flex items-center justify-center min-h-[90px]! md:min-h-[130px]! print:hidden inline-bottom data-empty:hidden" data-ad-slot="inline-bottom"> </div> </div> <footer class="site-footer bg-[#000e2a] text-white antialiased"> <div class="max-w-[1200px] mx-auto px-4 pt-12 pb-8"> <div class="grid grid-cols-1 md:grid-cols-[1fr_auto_auto] gap-x-16 gap-y-8"> <!-- Left column: Logo + socials + cookie notice --> <div> <!-- Logo --> <a href="/" class="inline-flex items-center gap-2 mb-6"> <div class="h-[40px] w-auto relative"> <img src="https://www.techrepublic.com/astrostatic/b5fedccd/_image/?href=%2F_astro%2Ftechrepublic-white.B5d-svv5.png&w=512&h=119&f=webp" alt="TechRepublic Logo" data-image="true" style="opacity:1" loading="lazy" decoding="async" fetchpriority="auto" width="512" height="119" class="h-[40px] w-auto transition-opacity duration-300"> </div> </a> <!-- Social icons --> <div class="mb-6"> <div class="flex gap-2 flex-wrap md:flex-nowrap"> <div> <a href="https://www.facebook.com/TechRepublic" target="_blank" rel="noopener noreferrer" class="p-4 border text-white border-white rounded-lg block" aria-label="facebook"> <svg role="img" viewBox="0 0 24 24" class="fill-current" width="24" height="24" aria-hidden="true"><title>Facebook</title><path d="M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z" /></svg> <div class="sr-only">facebook</div> </a> </div><div> <a href="https://x.com/techrepublic" target="_blank" rel="noopener noreferrer" class="p-4 border text-white border-white rounded-lg block" aria-label="x"> <svg role="img" viewBox="0 0 24 24" class="fill-current" width="24" height="24" aria-hidden="true"><title>X</title><path d="M14.234 10.162 22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299-.929-1.329L3.076 1.56h3.182l5.965 8.532.929 1.329 7.754 11.09h-3.182z" /></svg> <div class="sr-only">x</div> </a> </div><div> <a href="https://www.linkedin.com/company/techrepublic" target="_blank" rel="noopener noreferrer" class="p-4 border text-white border-white rounded-lg block" aria-label="linkedin"> <svg class="fill-current" viewBox="0 0 24 25" fill="none" width="24" height="24" aria-hidden="true">
<path d="M6.20062 21.2143H1.84688V7.194H6.20062V21.2143ZM4.02141 5.2815C2.62922 5.2815 1.5 4.12838 1.5 2.73619C1.5 2.06747 1.76565 1.42614 2.2385 0.953285C2.71136 0.48043 3.35269 0.214783 4.02141 0.214783C4.69012 0.214783 5.33145 0.48043 5.80431 0.953285C6.27716 1.42614 6.54281 2.06747 6.54281 2.73619C6.54281 4.12838 5.413 5.2815 4.02141 5.2815ZM22.4953 21.2143H18.1509V14.3893C18.1509 12.7628 18.1181 10.6768 15.8873 10.6768C13.6237 10.6768 13.2769 12.444 13.2769 14.2721V21.2143H8.92781V7.194H13.1034V9.1065H13.1644C13.7456 8.00494 15.1655 6.84244 17.2838 6.84244C21.69 6.84244 22.5 9.744 22.5 13.5128V21.2143H22.4953Z" fill="currentColor" />
</svg> <div class="sr-only">linkedin</div> </a> </div><div> <a href="https://www.youtube.com/techrepublic" target="_blank" rel="noopener noreferrer" class="p-4 border text-white border-white rounded-lg block" aria-label="youtube"> <svg role="img" viewBox="0 0 24 24" class="fill-current" width="24" height="24" aria-hidden="true"><title>YouTube</title><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z" /></svg> <div class="sr-only">youtube</div> </a> </div><div> <a href="https://www.pinterest.com/techrepublic/" target="_blank" rel="noopener noreferrer" class="p-4 border text-white border-white rounded-lg block" aria-label="pinterest"> <svg role="img" viewBox="0 0 24 24" class="fill-current" width="24" height="24" aria-hidden="true"><title>Pinterest</title><path d="M12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.162-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.663.967-2.911 2.168-2.911 1.024 0 1.518.769 1.518 1.688 0 1.029-.653 2.567-.992 3.992-.285 1.193.6 2.165 1.775 2.165 2.128 0 3.768-2.245 3.768-5.487 0-2.861-2.063-4.869-5.008-4.869-3.41 0-5.409 2.562-5.409 5.199 0 1.033.394 2.143.889 2.741.099.12.112.225.085.345-.09.375-.293 1.199-.334 1.363-.053.225-.172.271-.401.165-1.495-.69-2.433-2.878-2.433-4.646 0-3.776 2.748-7.252 7.92-7.252 4.158 0 7.392 2.967 7.392 6.923 0 4.135-2.607 7.462-6.233 7.462-1.214 0-2.354-.629-2.758-1.379l-.749 2.848c-.269 1.045-1.004 2.352-1.498 3.146 1.123.345 2.306.535 3.55.535 6.607 0 11.985-5.365 11.985-11.987C23.97 5.39 18.592.026 11.985.026L12.017 0z" /></svg> <div class="sr-only">pinterest</div> </a> </div><div> <a href="/rssfeeds/" target="_blank" rel="noopener noreferrer" class="p-4 border text-white border-white rounded-lg block" aria-label="rss"> <svg role="img" viewBox="0 0 24 24" class="fill-current" width="24" height="24" aria-hidden="true"><title>RSS</title><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.294 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z" /></svg> <div class="sr-only">rss</div> </a> </div> </div> </div> <!-- Cookie notice --> <p class="text-[13px] text-white leading-relaxed max-w-md">
We use cookies and other data collection technologies to
provide the best experience for our customers. You may
request that your data not be shared with third parties
here: <a href="https://technologyadvice.com/privacy-policy/ccpa-opt-out/" target="_blank" rel="noreferrer noopener" class="underline hover:underline text-white">Do Not Sell My Data</a>.
</p> </div> <!-- Services column --> <div> <h4 class="text-[15px] font-bold text-white mb-4 mt-0"> Services </h4> <nav aria-label="Footer - Services"> <ul class="list-none m-0 p-0 space-y-2"> <li> <a href="/about/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> About Us </a> </li><li> <a href="https://technologyadvice.com/contact-us/" target="_blank" rel="noreferrer noopener" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> Contact Us </a> </li><li> <a href="/newsletters/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> Newsletters </a> </li><li> <a href="/rssfeeds/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> RSS Feeds </a> </li><li> <a href="/site-map/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> Site Map </a> </li><li> <a href="https://support.techrepublic.com/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> Site Help &amp; Feedback </a> </li><li> <a href="/forums/faq/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> FAQ </a> </li><li> <a href="https://solutions.technologyadvice.com/advertise-on-techrepublic/?utm_source=techrepublic&utm_medium=portfolio_footer&utm_campaign=advertise_contact-us" target="_blank" rel="noreferrer noopener" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> Advertise </a> </li><li> <a href="https://technologyadvice.com/privacy-policy/ccpa-opt-out/" target="_blank" rel="noreferrer noopener" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> Do Not Sell My Information </a> </li><li> <a href="https://technologyadvice.com/careers/" target="_blank" rel="noreferrer noopener" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> Careers </a> </li> </ul> </nav> </div> <!-- Explore column --> <div> <h4 class="text-[15px] font-bold text-white mb-4 mt-0"> Explore </h4> <nav aria-label="Footer - Explore"> <ul class="list-none m-0 p-0 space-y-2"> <li> <a href="/resource-library/content-type/downloads/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> Downloads </a> </li><li> <a href="/forums/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> TechRepublic Forums </a> </li><li> <a href="https://academy.techrepublic.com/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> TechRepublic Academy </a> </li><li> <a href="/premium/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> TechRepublic Premium </a> </li><li> <a href="/resource-library/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> Resource Library </a> </li><li> <a href="/pictures/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> Photos </a> </li><li> <a href="/videos/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> Videos </a> </li><li> <a href="/editorial-policy/" class="text-[14px] no-underline hover:underline text-white transition-colors duration-150"> Editorial Policy </a> </li> </ul> </nav> </div> </div> </div> <!-- Bottom bar --> <div class="pb-18"> <div class="max-w-[1200px] mx-auto px-4 py-5 flex flex-col md:flex-row items-center justify-between gap-3"> <div class="flex items-center gap-4"> <a href="/terms-conditions/" class="text-[13px] no-underline hover:underline text-white transition-colors duration-150"> Legal Terms </a> <a href="/privacy-policy/" class="text-[13px] no-underline hover:underline text-white transition-colors duration-150"> Privacy Policy </a> </div> <p class="text-[13px] text-white m-0">
© 2026 TechnologyAdvice. All rights reserved.
</p> </div> <div id="choice-footer-msg" class="max-w-[1200px] mx-auto px-4 text-[12px] text-white/40 [--choice-footer-link:white]"></div> </div> </footer><astro-island uid="ZBxB5E" prefix="s2" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/BackToTop.DIsmzr01.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;BackToTop&quot;,&quot;value&quot;:true}" await-children=""><button id="back-to-top" class="fixed right-4 z-1001 cursor-pointer transition-all duration-500 ease-in-out rounded-full hover:shadow-[0px_0px_3px_#71717a] hover:scale-105 bg-primary text-primary-foreground border-none p-0 opacity-0 translate-y-[70px]" style="bottom:calc(var(--sticky-ad-height, 0px) + 16px);" aria-label="Back to top"><svg width="48" height="48" viewBox="0 0 48 48" class="block" aria-hidden="true"><circle cx="24" cy="24" r="21" fill="none" stroke="currentColor" stroke-width="3" opacity="0.2" /><circle cx="24" cy="24" r="21" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-dasharray="131.94689145077132" stroke-dashoffset="131.94689145077132" transform="rotate(-90 24 24)" style="transition:stroke-dashoffset 150ms ease;" /></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up-icon lucide-chevron-up absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2" aria-hidden="true"><path d="m18 15-6-6-6 6" /></svg></button><!--astro:end--></astro-island> <sticky-footer-ad class="group hide-on-empty fixed w-full bottom-0 bg-white flex justify-center items-center border-gray-200 border-t transition-transform duration-500 ease-in-out z-1000 has-[div[data-empty]]:hidden print:hidden" style="height: min-content"> <button class="absolute left-8 -top-[25px] cursor-pointer bg-white px-2 border-gray-200 border-t border-r border-l rounded-t-lg" aria-label="Toggle collapse"><!----><!--[--> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down chevron transition-transform duration-500" aria-hidden="true"><path d="m6 9 6 6 6-6" /></svg> <!--]--></button> <div class="sticky-footer data-empty:hidden" data-ad-slot="sticky-footer"> </div> </sticky-footer-ad> <astro-island uid="4kij5" prefix="s3" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/LoginModal.wN4CwDT5.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;LoginModal&quot;,&quot;value&quot;:true}" await-children=""><!----><!--astro:end--></astro-island> <script>
;(() => {
try {
const match = location.pathname.match(/^\/sites\/([^/]+)\//)
const scope = match ? match[1] : location.hostname
const ids = JSON.parse(
localStorage.getItem("sfl-saved-ids:" + scope) || "[]",
)
const prog = JSON.parse(
localStorage.getItem("reading-progress:" + scope) || "{}",
)
const saved = new Set(ids)
for (const el of document.querySelectorAll("[data-save-toggle]")) {
const on = saved.has(
el.getAttribute("data-save-item-type") +
":" +
el.getAttribute("data-save-id"),
)
if (on) el.setAttribute("data-saved", "")
else el.removeAttribute("data-saved")
el.setAttribute("aria-pressed", on ? "true" : "false")
const label = el.querySelector("[data-save-label]")
if (label) label.textContent = on ? "Saved" : "Save for later"
}
// The article widget. Both flags live on the card because CSS swaps
// its halves off them, and that has to happen before hydration.
// `data-resume` is deliberately narrower than `data-saved`: resume
// shows only where there is somewhere to go, so it is absent below
// 5% and again on a finished article, which is how the control
// retires itself without the item leaving the reader's list.
for (const card of document.querySelectorAll("[data-save-state]")) {
const id = card.getAttribute("data-save-id")
const on = saved.has(
card.getAttribute("data-save-item-type") + ":" + id,
)
const entry = prog[id]
const pct = entry ? entry.percent : 0
const resume = on && pct >= 5 && pct < 90
if (on) card.setAttribute("data-saved", "")
else card.removeAttribute("data-saved")
if (resume) card.setAttribute("data-resume", "")
else card.removeAttribute("data-resume")
if (!resume) continue
const label = card.querySelector("[data-save-resume-pct]")
if (label) label.textContent = pct + "%"
}
document.dispatchEvent(new CustomEvent("save:rescan"))
} catch {
/* storage unavailable — leave server-rendered defaults */
}
})()
</script> <astro-island uid="1AIgz3" prefix="s4" component-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/SaveForLater.B0TW_0pS.js" component-export="default" renderer-url="https://www.techrepublic.com/astrostatic/b5fedccd/_astro/client.B-cu3CQi.js" props="{}" ssr="" client="idle" opts="{&quot;name&quot;:&quot;SaveForLater&quot;,&quot;value&quot;:true}" await-children=""><div><div class="sr-only" role="status" aria-live="polite"></div><div class="sr-only" role="alert" aria-live="assertive"></div><div class="fixed right-[72px] z-1001 transition-all duration-500 ease-in-out" inert="" style="bottom:calc(var(--sticky-ad-height, 0px) + 16px);"><div class="flex h-12 items-stretch overflow-hidden cursor-pointer transition-all duration-500 ease-in-out rounded-full hover:shadow-[0px_0px_3px_#71717a] hover:scale-105 bg-primary text-primary-foreground border-none p-0 opacity-0 translate-y-[70px] pointer-events-none"><!----></div></div><!----><!----></div><!--astro:end--></astro-island> </body></html>