CINXE.COM
USENIX | The Advanced Computing Systems Association
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr" xmlns:og="http://ogp.me/ns#" xmlns:article="http://ogp.me/ns/article#" xmlns:book="http://ogp.me/ns/book#" xmlns:profile="http://ogp.me/ns/profile#" xmlns:video="http://ogp.me/ns/video#" xmlns:product="http://ogp.me/ns/product#"> <head profile="http://www.w3.org/1999/xhtml/vocab"> <script type="text/javascript" id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="694f6fb4-ca29-459f-a9b6-c1deccf2eaca" async="async"></script> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"d823139095",applicationID:"509444"};;/*! For license information please see nr-loader-rum-1.274.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>g,gD:()=>h,xN:()=>p});var n=r(993);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,harvestTimeSeconds:10,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},feature_flags:[],generic_events:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},harvest:{tooManyRequestsDelay:60},jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},logging:{enabled:!0,harvestTimeSeconds:10,autoStart:!0,level:n.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},soft_navigations:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},ssl:void 0,user_actions:{enabled:!0}}},l={},f="All configuration objects require an agent identifier!";function g(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function h(e,t){if(!e)throw new Error(f);var r=g(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.274.0",i="PROD",o="CDN"},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>d,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=c&&"undefined"==typeof SharedWorker,d=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),g(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return g(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),g(e,t)})))}function g(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=g(n),c=h(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=m()[s[e]];p&&p.push([f,e,r,a]);return a},get:v,listeners:h,context:g,buffer:function(e,t){const r=m();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!m()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=h(e).concat(t)}function h(e){return n[e]||[]}function v(t){return d[t]=d[t]||e(f,t)}function m(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},3434:(e,t,r)=>{"use strict";r.d(t,{YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log";n.K7.logging},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(2614);r(860).K7.sessionReplay;const i={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"};n.g.ERROR,n.g.FULL,n.g.OFF},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7603:(e,t,r)=>{"use strict";r.d(t,{j:()=>P});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(3969),g=r(384),p=r(6344);const h=["setErrorHandler","finished","addToTrace","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],v=["setErrorHandler","finished","addToTrace","addRelease"];var m=r(1863),b=r(2614),y=r(993);var w=r(2646),A=r(3434);function R(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,A.YM)(i),a=new w.y(s.P);return a.level=n.level,a.customAttributes=n.customAttributes,o.inPlace(t,[r],"wrap-logger-",a),i}function E(){const e=(0,g.pV)();h.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const x={};function _(e,t,g=!1){t||(0,c.Ak)(e,"api");const h={};var w=s.ee.get(e),A=w.get("tracer");x[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{x[e]=t}));var E="api-",_=E+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),j(E,n,!0,o||null===r?"session":void 0)(t,r)}function T(){}h.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,w),function(e,t,r={},i=y.p_.INFO){(0,a.p)(f.xV,["API/logging/".concat(i.toLowerCase(),"/called")],void 0,n.K7.metrics,e),(0,a.p)(y.ET,[(0,m.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},h.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),R(w,e,t,{customAttributes:r,level:i})},v.forEach((e=>{h[e]=j(E,e,!0,"api")})),h.addPageAction=j(E,"addPageAction",!0,n.K7.genericEvents),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,j(E,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},h.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},h.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},h.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},h[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,w)},h[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,w)},h.interaction=function(e){return(new T).get("object"==typeof e?e:{})};const S=T.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,w),g||(0,a.p)(_+"tracer",[(0,m.t)(),e,r],i,n.K7.spa,w),function(){if(A.emit((o?"":"no-")+"fn-start",[(0,m.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw A.emit("fn-err",[arguments,this,t],r),t}finally{A.emit("fn-end",[(0,m.t)()],r)}}}};function j(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,w),i&&(0,a.p)(e+t,[(0,m.t)(),...arguments],r?null:this,i,w),r?void 0:this}}function k(){r.e(296).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{S[e]=j(_,e,void 0,g?n.K7.softNav:n.K7.spa)})),h.setCurrentRouteName=g?j(_,"routeName",void 0,n.K7.softNav):j(E,"routeName",!0,n.K7.spa),h.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,w),(0,a.p)("err",[t,(0,m.t)(),!1,r,!!x[e]],void 0,n.K7.jserrors,w)},d.RI?(0,u.GG)((()=>k()),!0):k(),h}var N=r(9417),T=r(8122);const S={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},j={};var k=r(5284);const I=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let O=!1;function P(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:l={},exposed:f=!0}=t;l.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,N.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");j[e]=(0,T.a)(t,S);const r=(0,g.nY)(e);r&&(r.loader_config=j[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},d.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const h=(0,N.D0)(e.agentIdentifier),v=[c.beacon,c.errorBeacon];O||(h.proxy.assets&&(I(h.proxy.assets),v.push(h.proxy.assets)),h.proxy.beacon&&v.push(h.proxy.beacon),E(),(0,g.US)("activatedFeatures",k.B),e.runSoftNavOverSpa&&=!0===h.soft_navigations.enabled&&h.feature_flags.includes("soft_nav")),l.denyList=[...h.ajax.deny_list||[],...h.ajax.block_internal?v:[]],l.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,l),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=_(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),O=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>o,K7:()=>n,P3:()=>i});const n={ajax:"ajax",genericEvents:"generic_events",jserrors:"jserrors",logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.spa]:5,[n.ajax]:6,[n.sessionTrace]:7,[n.softNav]:8,[n.sessionReplay]:9,[n.logging]:10,[n.genericEvents]:11},o={[n.pageViewTiming]:"events",[n.ajax]:"events",[n.spa]:"events",[n.softNav]:"events",[n.metrics]:"jserrors",[n.jserrors]:"jserrors",[n.sessionTrace]:"browser/blobs",[n.sessionReplay]:"browser/blobs",[n.logging]:"browser/logs",[n.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"nr-rum-1.274.0.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.274.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={296:"sha512-gkYkZDAwQ9PwaDXs2YM+rNIdRej1Ac1mupWobRJ8eahQcXz6/sunGZCKklrzi5kWxhOGRZr2tn0rEKuLTXzfAA=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var g=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={840:0,374:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.274.0.PROD"]=self["webpackChunk:NRBA-1.274.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(e=(0,r.LA)(16)){this.agentIdentifier=e}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(7603);var l=i(1687),f=i(4234),g=i(5289),p=i(6154),h=i(384);const v=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function m(e){return!!(0,h.dV)().o.MO&&v(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(6389);class y extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if(v(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,3861));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(t.sharedAggregator)await t.sharedAggregator;else{t.sharedAggregator=i.e(296).then(i.bind(i,9337));const{EventAggregator:e}=await t.sharedAggregator;t.sharedAggregator=new e}if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,g.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return m(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(6630);class A extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var R=i(9908),E=i(2843),x=i(3878),_=i(782),N=i(1863);class T extends y{static featureName=_.T;constructor(e,t=!0){super(e,_.T,t),p.RI&&((0,E.u)((()=>(0,R.p)("docHidden",[(0,N.t)()],void 0,_.T,this.ee)),!0),(0,x.sp)("pagehide",(()=>(0,R.p)("winPagehide",[(0,N.t)()],void 0,_.T,this.ee))),this.importAggregator(e))}}var S=i(3969);class j extends y{static featureName=S.TZ;constructor(e,t=!0){super(e,S.TZ,t),this.importAggregator(e)}}new class extends o{constructor(t,r){super(r),p.gm?(this.features={},(0,h.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(A),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,h.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[A,T,j],loaderType:"lite"})})()})();</script> <link rel="shortcut icon" href="https://www.usenix.org/sites/default/files/waves_favicon.ico" type="image/vnd.microsoft.icon" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /> <title>USENIX | The Advanced Computing Systems Association</title> <link type="text/css" rel="stylesheet" href="https://www.usenix.org/sites/default/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" /> <link type="text/css" rel="stylesheet" href="https://www.usenix.org/sites/default/files/css/css_6Lm0rnfxqNW_dZrK-jiErWln-cm6IgixIkNMwxv7Ar4.css" media="all" /> <link type="text/css" rel="stylesheet" href="https://www.usenix.org/sites/default/files/css/css_nUFTrBzuSS1e6iNFoYIyAptja28IikBBh8IfX_l3-Jw.css" media="all" /> <link type="text/css" rel="stylesheet" href="https://www.usenix.org/sites/default/files/css/css_ztYecqRyWRzlqn0Dikl1O5C25SMTMvCZMp8wu9rLVU4.css" media="all" /> <link type="text/css" rel="stylesheet" href="https://www.usenix.org/sites/default/files/css/css_mRbT5IPFSFuKfzZdgdvZZ85p2out8lpep9KzGqViarQ.css" media="all" /> <script type="text/javascript" src="https://www.usenix.org/sites/default/files/js/js_fyV0VVkC6Q3xduxGurKMTFIU2dMmArUrbAdZORL-9WQ.js"></script> <script type="text/javascript" src="https://www.usenix.org/sites/default/files/js/js_s7yA-hwRxnKty__ED6DuqmTMKG39xvpRyrtyCrbWH4M.js"></script> <script type="text/javascript" src="https://www.usenix.org/sites/default/files/js/js_vcsWeTVZB-HyiLvWyvfA-MU0FJOLJE7r_ONbjzcZtvo.js"></script> <script type="text/javascript" src="https://www.usenix.org/sites/default/files/js/js_RTrWEAPrEyH6RHoUPa_GRU_NbHR0-rQewtCeJl7Faa4.js"></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- var _paq = _paq || [];(function(){var u=(("https:" == document.location.protocol) ? "https://usenix.matomo.cloud/" : "http://usenix.matomo.cloud/");_paq.push(["setSiteId", "2"]);_paq.push(["setTrackerUrl", u+"matomo.php"]);_paq.push(["setDocumentTitle", "Publications\/%3Blogin%3A%20Online"]);_paq.push(["setDownloadExtensions", "pdf|epub|mobi|zip|7z|tar|tgz|gz|gzip"]);_paq.push(["setDoNotTrack", 1]);_paq.push(["trackPageView"]);_paq.push(["setIgnoreClasses", ["no-tracking","colorbox"]]);_paq.push(["enableLinkTracking"]);var d=document,g=d.createElement("script"),s=d.getElementsByTagName("script")[0];g.type="text/javascript";g.defer=true;g.async=true;g.src=u+"matomo.js";s.parentNode.insertBefore(g,s);})(); //--><!]]> </script> <script type="text/javascript" src="https://www.usenix.org/sites/default/files/js/js_OGuh8SZ8Rjc26lZTbbwmgTfDu56OrMULNed3TF7E_rs.js"></script> <script type="text/javascript" src="https://js.stripe.com/v3"></script> <script type="text/javascript" src="https://www.usenix.org/sites/default/files/js/js_ZO6lBzNCyArV9XKBSrkUh7Vi0Hl4xwt03mPiMaTMGPA.js"></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","setHasJsCookie":0,"ajaxPageState":{"theme":"cotija","theme_token":"efGjrK8GCDEwpazveyQzr_VDKMfg2wSyk8P9OA-ify4","js":{"https:\/\/www.usenix.org\/sites\/default\/files\/google_tag\/usenix\/google_tag.script.js":1,"sites\/all\/modules\/jquery_update\/replace\/jquery\/1.8\/jquery.min.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery-html-prefilter-3.5.0-backport.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"sites\/all\/modules\/beautytips\/js\/jquery.bt.min.js":1,"sites\/all\/modules\/beautytips\/js\/beautytips.min.js":1,"sites\/all\/modules\/jquery_update\/replace\/ui\/external\/jquery.cookie.js":1,"sites\/all\/libraries\/mmenu\/dist\/mmenu.js":1,"misc\/form-single-submit.js":1,"sites\/all\/modules\/behavior_weights\/behavior_weights.js":1,"sites\/all\/modules\/cookiebot\/js\/cookiebot.js":1,"sites\/all\/modules\/matomo\/matomo.js":1,"0":1,"sites\/all\/modules\/usenix\/usenix_blocks\/js\/mobile-menu.js":1,"https:\/\/js.stripe.com\/v3":1,"sites\/all\/themes\/custom\/cotija\/cotija.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"sites\/all\/libraries\/mmenu\/dist\/mmenu.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/poll\/poll.css":1,"modules\/search\/search.css":1,"sites\/all\/modules\/usenix\/usenix_conference\/css\/timezone-picker.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/workflow\/workflow_admin_ui\/workflow_admin_ui.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/cookiebot\/css\/cookiebot.css":1,"sites\/all\/modules\/media\/modules\/media_wysiwyg\/css\/media_wysiwyg.base.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"sites\/all\/modules\/geshifilter\/geshifilter.css":1,"sites\/all\/modules\/biblio\/biblio.css":1,"sites\/all\/modules\/usenix\/usenix_blocks\/css\/announcement-banner.css":1,"sites\/all\/modules\/usenix\/usenix_blocks\/css\/mobile-menu.css":1,"sites\/all\/modules\/addtoany\/addtoany.css":1,"sites\/all\/themes\/custom\/cotija\/css\/normalize.css":1,"sites\/all\/themes\/custom\/cotija\/css\/style.css":1,"sites\/all\/themes\/custom\/cotija\/fonts\/fontawesome\/css\/all.min.css":1}},"beautytipStyles":{"default":{"fill":"#F4F4F4","strokeStyle":"#666666","spikeLength":20,"spikeGirth":10,"width":350,"overlap":0,"centerPointY":1,"cornerRadius":0,"cssStyles":{"fontFamily":"\u0026quot;Lucida Grande\u0026quot;,Helvetica,Arial,Verdana,sans-serif","fontSize":"12px","padding":"10px 14px"},"shadow":"1","shadowColor":"rgba(0,0,0,.5)","shadowBlur":8,"shadowOffsetX":4,"shadowOffsetY":4},"plain":[],"netflix":{"positions":["right","left"],"fill":"#FFF","padding":5,"shadow":true,"shadowBlur":12,"strokeStyle":"#B9090B","spikeLength":50,"spikeGirth":60,"cornerRadius":10,"centerPointY":0.1,"overlap":-8,"cssStyles":{"fontSize":"12px","fontFamily":"arial,helvetica,sans-serif"}},"facebook":{"fill":"#F7F7F7","padding":8,"strokeStyle":"#B7B7B7","cornerRadius":0,"cssStyles":{"fontFamily":"\u0022lucida grande\u0022,tahoma,verdana,arial,sans-serif","fontSize":"11px"}},"transparent":{"fill":"rgba(0, 0, 0, .8)","padding":20,"strokeStyle":"#CC0","strokeWidth":3,"spikeLength":40,"spikeGirth":40,"cornerRadius":40,"cssStyles":{"color":"#FFF","fontWeight":"bold"}},"big-green":{"fill":"#00FF4E","padding":20,"strokeWidth":0,"spikeLength":40,"spikeGirth":40,"cornerRadius":15,"cssStyles":{"fontFamily":"\u0022lucida grande\u0022,tahoma,verdana,arial,sans-serif","fontSize":"14px"}},"google-maps":{"positions":["top","bottom"],"fill":"#FFF","padding":15,"strokeStyle":"#ABABAB","strokeWidth":1,"spikeLength":65,"spikeGirth":40,"cornerRadius":25,"centerPointX":0.9,"cssStyles":[]},"hulu":{"fill":"#F4F4F4","strokeStyle":"#666666","spikeLength":20,"spikeGirth":10,"width":350,"overlap":0,"centerPointY":1,"cornerRadius":0,"cssStyles":{"fontFamily":"\u0022Lucida Grande\u0022,Helvetica,Arial,Verdana,sans-serif","fontSize":"12px","padding":"10px 14px"},"shadow":true,"shadowColor":"rgba(0,0,0,.5)","shadowBlur":8,"shadowOffsetX":4,"shadowOffsetY":4}},"beautytips":{".beautytips":{"cssSelect":".beautytips","style":"default"}},"jcarousel":{"ajaxPath":"\/jcarousel\/ajax\/views"},"urlIsAjaxTrusted":{"\/publications\/loginonline":true},"cookiebot":{"message_placeholder_cookieconsent_optout_marketing_show":false,"message_placeholder_cookieconsent_optout_marketing":"\u003Cdiv class=\u0022cookiebot cookieconsent-optout-marketing\u0022\u003E\r\n\t\u003Cdiv class=\u0022cookieconsent-optout-marketing__inner\u0022\u003E\r\n\t\tPlease \u003Ca href=\u0022!cookiebot_renew\u0022 class=\u0022cookieconsent-optout-marketing__cookiebot-renew\u0022\u003Eaccept marketing-cookies\u003C\/a\u003E to view this embedded content from \u003Ca href=\u0022!cookiebot_from_src_url\u0022 target=\u0022_blank\u0022 class=\u0022cookieconsent-optout-marketing__from-src-url\u0022\u003E!cookiebot_from_src_url\u003C\/a\u003E\t\u003C\/div\u003E\r\n\u003C\/div\u003E\r\n"},"matomo":{"trackMailto":0}}); //--><!]]> </script> </head> <body class="html not-front not-logged-in no-sidebars page-publications page-publications-loginonline user-is-non-member" > <div id="skip-link"> <a href="#main-content" class="element-invisible element-focusable">Skip to main content</a> </div> <noscript aria-hidden="true"><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WQSPGJT" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <div id="page-wrapper"><div id="page"> <div id="header"> <div class="region region-announcement"> <div id="block-usenix-blocks-usenix-announcement-banner" class="block block-usenix-blocks usenix-announcement-banner"> <div class="content"> <p><a href="/conferences/diversity-and-inclusion">USENIX supports diversity, equity, and inclusion and condemns hate and discrimination</a>.</p> </div> </div> </div> <div class="section clearfix"> <div class="region region-header"> <div id="block-usenix-blocks-usenix-logo-1" class="block block-usenix-blocks usenix-logo-1"> <div class="content"> <a href="/" title="Home" rel="home"><img src="https://www.usenix.org/sites/all/themes/custom/cotija/images/logo.svg" alt="Home" /></a> </div> </div> <div id="block-system-main-menu" class="block block-system block-menu main-menu"> <div class="content"> <ul class="menu"><li class="first collapsed"><a href="/about">About</a></li> <li class="collapsed"><a href="/conferences">Conferences</a></li> <li class="expanded active-trail"><a href="/publications" title="Publications from USENIX" class="active-trail">Publications</a><ul class="menu"><li class="first leaf"><a href="/publications/proceedings">Proceedings</a></li> <li class="collapsed"><a href="/conferences/author-resources">Author Resources</a></li> <li class="leaf active-trail"><a href="/publications/loginonline" class="active-trail active">;login: Online</a></li> <li class="leaf"><a href="/publications/loginonline/writing">Writing for ;login: Online</a></li> <li class="last leaf"><a href="/publications/login">;login: Archive</a></li> </ul></li> <li class="leaf"><a href="/membership">Membership</a></li> <li class="collapsed"><a href="/students" title="Student Programs">Students</a></li> <li class="leaf hidden-medium-up"><a href="/search/site" class="search-link">Search</a></li> <li class="last leaf"><a href="https://www.usenix.org/donate" class="btn">Donate Today</a></li> </ul> </div> </div> <div id="block-system-user-menu" class="block block-system block-menu user-menu"> <div class="content"> <ul class="menu"><li class="first leaf"><a href="/user/login" class="login-link">Sign In</a></li> <li class="last leaf hidden-medium-down"><a href="/search/site" class="search-link">Search</a></li> </ul> </div> </div> <div id="block-usenix-blocks-usenix-mobile-menu" class="block block-usenix-blocks usenix-mobile-menu"> <div class="content"> <a href="#mobile-menu" id="mobile-menu-toggle"><i class="fas fa-bars"></i><i class="fas fa-times"></i></a><div id="mobile-menu"><ul class="menu"><li class="first expanded"><a href="/about">About</a><ul class="menu"><li class="first leaf"><a href="/board" title="USENIX Board of Directors">USENIX Board</a></li> <li class="leaf"><a href="/staff" title="Usenix Staff">Staff</a></li> <li class="leaf"><a href="/newsroom">Newsroom</a></li> <li class="leaf"><a href="/good-works-program" title="Good Works Program">Good Works</a></li> <li class="leaf"><a href="/blog">Blog</a></li> <li class="leaf"><a href="/about/governance-financials">Governance and Financials</a></li> <li class="leaf"><a href="/about/awards">USENIX Awards</a></li> <li class="leaf"><a href="/supporters">USENIX Supporters</a></li> <li class="leaf"><a href="/board/elections24">2024 Board Election</a></li> <li class="collapsed"><a href="/board-meeting-minutes">Board Meeting Minutes</a></li> <li class="last leaf"><a href="https://www.usenix.org/donate" title="USENIX Annual Fund">Donate</a></li> </ul></li> <li class="expanded"><a href="/conferences">Conferences</a><ul class="menu"><li class="first collapsed"><a href="/conferences/upcoming">Upcoming</a></li> <li class="leaf"><a href="/conferences/byname" title="">By Name</a></li> <li class="leaf"><a href="/conferences/calls-for-papers">Calls for Papers</a></li> <li class="leaf"><a href="/conferences/grants">Grants</a></li> <li class="leaf"><a href="/conferences/sponsorship" title="Sponsorship Opportunities">Sponsorship</a></li> <li class="leaf"><a href="/conferences/best-papers">Best Papers</a></li> <li class="leaf"><a href="/conferences/test-of-time-awards">Test of Time Awards</a></li> <li class="leaf"><a href="/conferences/multimedia">Multimedia</a></li> <li class="leaf"><a href="/conferences/faq">Conference FAQ</a></li> <li class="leaf"><a href="/conferences/values-policies">Conference Policies</a></li> <li class="last leaf"><a href="/conferences/coc">Code of Conduct</a></li> </ul></li> <li class="expanded"><a href="/publications" title="Publications from USENIX">Publications</a><ul class="menu"><li class="first leaf"><a href="/publications/proceedings">Proceedings</a></li> <li class="collapsed"><a href="/conferences/author-resources">Author Resources</a></li> <li class="leaf"><a href="/publications/loginonline" class="active">;login: Online</a></li> <li class="leaf"><a href="/publications/loginonline/writing">Writing for ;login: Online</a></li> <li class="last leaf"><a href="/publications/login">;login: Archive</a></li> </ul></li> <li class="leaf"><a href="/membership">Membership</a></li> <li class="expanded"><a href="/students" title="Student Programs">Students</a><ul class="menu"><li class="first leaf"><a href="/students/fees">Conference Fees</a></li> <li class="leaf"><a href="/students/campus-representative-program">Campus Representative Program</a></li> <li class="last leaf"><a href="/students/grants">Student Grant Program</a></li> </ul></li> <li class="leaf hidden-medium-up"><a href="/search/site" class="search-link">Search</a></li> <li class="last leaf"><a href="https://www.usenix.org/donate" class="btn">Donate Today</a></li> </ul></div> </div> </div> </div> </div> </div> <!-- /.section, /#header --> <div id="sub-menu-wrapper"></div> <div id="postheader"> </div> <!-- /#postheader --> <div id="main-wrapper"><div id="main" class="clearfix"> <div id="content-header" class="column"><div class="section"> <div id="breadcrumb"><h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="/publications" title="Publications from USENIX" class="active-trail">Publications</a></div></div> <div class="tabs"></div> </div></div> <!-- /.section, /#content-header --> <div id="content" class="column"><div class="section"> <div class="region region-content"> <div id="block-block-156" class="block block-block block-usenix-donate 156"> <div class="content"> <!--<a class="btn" href="https://connect.clickandpledge.com/w/Form/a9f96acc-aa05-4c52-a9b4-e12ab505abdf" target="_blank">Donate Today</a>--> <a class="btn" href="https://www.usenix.org/ways-to-give" target="_blank">Donate Today</a> </div> </div> <div id="block-block-163" class="block block-block 163"> <div class="content"> <div class="login-v2-logo"> <div class="login-v2-logo-text-block"> <div class="login-v2-logo-title"></div> <div class="login-v2-logo-subtitle">An open access publication driven by the USENIX community</div> </div> </div> </div> </div> <div id="block-system-main" class="block block-system main"> <div class="content"> <div class="view view-login-online-articles view-id-login_online_articles view-display-id-page_1 view-dom-id-6e4fbe7f84c0b3cca3d60911f206d1a7"> <div class="view-header"> <div class="search-result-summary">124 Results</div> </div> <div class="view-filters"> <form action="/publications/loginonline" method="get" id="views-exposed-form-login-online-articles-page-1" accept-charset="UTF-8"><div><div class="views-exposed-form"> <div class="views-exposed-widgets clearfix"> <div id="edit-field-lv2-article-type-tid-wrapper" class="views-exposed-widget views-widget-filter-field_lv2_article_type_tid"> <label for="edit-field-lv2-article-type-tid"> Article Type </label> <div class="views-widget"> <div class="form-item form-type-select form-item-field-lv2-article-type-tid"> <select id="edit-field-lv2-article-type-tid" name="field_lv2_article_type_tid" class="form-select"><option value="All" selected="selected">- Any -</option><option value="1073">Research</option><option value="1222">Deployed System</option><option value="1075">Bookreview</option><option value="1223">Culture</option><option value="1077">Opinion</option><option value="1224">Interview</option><option value="1225">Musings</option><option value="1072">Case Study</option><option value="1074">Tutorial</option><option value="1076">Column</option></select> </div> </div> </div> <div id="edit-field-lv2-tags-tid-wrapper" class="views-exposed-widget views-widget-filter-field_lv2_tags_tid"> <label for="edit-field-lv2-tags-tid"> Article Category </label> <div class="views-widget"> <div class="form-item form-type-select form-item-field-lv2-tags-tid"> <select id="edit-field-lv2-tags-tid" name="field_lv2_tags_tid" class="form-select"><option value="All" selected="selected">- Any -</option><option value="1102">SRE</option><option value="1082">Security</option><option value="1138">Distributed systems</option><option value="1120">Filesystem/storage</option><option value="1089">Operating Systems</option><option value="1218">Network</option><option value="1131">Cloud</option><option value="1154">Programming</option><option value="1084">AI/ML</option><option value="1160">IoT</option><option value="1093">Linux</option><option value="1181">Sysadmin</option><option value="1219">Hardware</option><option value="1226">Culture</option></select> </div> </div> </div> <div class="views-exposed-widget views-submit-button"> <input type="submit" id="edit-submit-login-online-articles" value="Apply Filters" class="form-submit" /> </div> <div class="views-exposed-widget views-reset-button"> <input type="submit" id="edit-reset" name="op" value="Clear Filters" class="form-submit" /> </div> </div> </div> </div></form> </div> <div class="view-content"> <div class="views-row views-row-1 views-row-odd views-row-first"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">July 31, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Diving into Robocall Content with SnorCall</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">We provide insights from accurate, automated analysis of 232,0000 robocalls, including tools that authorities can use to get to the source of the problem.</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Sathvik Prasad, Brad Reaves</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Rik Farrow</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/diving-robocall-content-snorcall"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-2 views-row-even"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">July 27, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Measuring the Risk Password Reuse Poses for a University</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">Reuse of passwords poses a greater threat than weak passwords based on research into compromised passwords at the University of Chicago.</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Alexandra Nisenoff, Maximilian Golla, Blase Ur</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Rik Farrow</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/measuring-risk-password-reuse-poses-university"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-3 views-row-odd"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">July 27, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Going Beyond an Incident Report with TLA+</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">Human reasoning capability is limited - SREs can benefit from using modelling specification languages to understand system behavior.</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Finn Hackett, Joshua Rowe, Markus Alexander Kuppe</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Laura Nolan</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/going-beyond-incident-report-tla"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-4 views-row-even"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">July 5, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Enabling Realms with the Arm Confidential Compute Architecture</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">ARMv9 will include Realms, a combination of hardware and firmware that creates a mechanism for isolating memory from reading or writing even by the OS or hypervisor.</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Xupeng Li, Xuheng Li, Christoffer Dall, Ronghui Gu, Jason Nieh, Yousuf Sait, Gareth Stockwell</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Rik Farrow</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/enabling-realms-arm-confidential-compute-architecture"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-5 views-row-odd"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">June 5, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">BeyondCorp and the long tail of Zero Trust</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">After successfully transitioning most of the Google's workflows to BeyondCorp, we were left with a long tail of specific or challenging situations to resolve.</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Guilherme Gonçalves, Kyle O'Malley, Betsy Beyer, Max Saltonstall</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Rik Farrow</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/beyondcorp-and-long-tail-zero-trust"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-6 views-row-even"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">June 2, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">NSDI'23 Test of Time Award</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">A graduate research project turned into a popular web browser plug-in, used by millions</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Franzi Roesner, Gennie Gebhart, Rik Farrow</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Rik Farrow</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/nsdi23-test-time-award"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-7 views-row-odd"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">May 22, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Bcrypt at 25: A Retrospective on Password Security</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">Celebrating 25 years of bcrypt! Dive into its journey, enduring impact on password security, and unique ways it's shaping the future.</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Niels Provos</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Rik Farrow</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/bcrypt-25-retrospective-password-security"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-8 views-row-even"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">May 8, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Responding to and Learning from Distributed Incidents</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">Step through a distributed systems incident and see how teams can learn from these events.</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Philipp Böschen</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Laura Nolan</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/responding-and-learning-distributed-incidents"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-9 views-row-odd"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">April 25, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Codon: Python Compiler</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">Codon is a compiler for Python scripts that produces optimized code suitable for analyzing large amounts of data, with some limitations.</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Rik Farrow</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Laura Nolan</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/codon-python-compiler"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-10 views-row-even"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">April 18, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">A Study in Practical Deduplication</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">Using data collected from 875 Microsoft employees' desktops and servers, the authors analyzed file metadata and potential deduplication strategies.</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Dutch Meyer, Bill Bolosky, Rik Farrow</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Rik Farrow</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/study-practical-deduplication"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-11 views-row-odd"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">March 15, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">You don’t have a production environment</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">Your staging environment cannot accurately replicate your production environment. Multi-tenancy can solve this problem.</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Avishai Ish-Shalom</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Laura Nolan</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/you-don%E2%80%99t-have-production-environment-wip"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-12 views-row-even"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">March 7, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Mistrust Plugins You Must: A Large-Scale Study Of Malicious Plugins In WordPress Marketplaces</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Ranjita Pai Sridhar, Jonathan Fuller, Yiting Sun, Omar Chabklo, Andres Rodriguez, Jeman Park, Brendan Saltaformaggio</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Rik Farrow</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/mistrust-plugins-you-must-large-scale-study-malicious-plugins-wordpress"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-13 views-row-odd"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">March 5, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Musings on Operating Systems</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">Why is Windows on the desktop, while Linux rules the cloud?</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Rik Farrow</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Rik Farrow, Laura Nolan</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/musings-operating-systems"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-14 views-row-even"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">February 27, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Workload Security Rings</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Michał Czapiński , Rainer Wolafka</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Laura Nolan</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/workload-security-rings"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-15 views-row-odd"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">February 21, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">CI is Alerting</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">Adding lots of alerts during the early stages of development can pay off later in an Continuous Integration environment.</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Titus Winters</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Rik Farrow, Laura Nolan</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/ci-alerting"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-16 views-row-even"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">February 10, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Rock Fishing and Incident Analysis</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">What can technologists learn from studying how rock fishers think about safety? </div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Thai Wood</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Laura Nolan</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/rock-fishing-and-incident-analysis"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-17 views-row-odd"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">February 6, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Detecting Fail-Slow Failures in Large-Scale Cloud Storage Systems</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">Researchers tried several different methods for discovering fail-slow drives before developing PERSEUS for very large cloud storage</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Ruiming Lu, Erci Xu, Yiming Zhang, Fengyi Zhu, Zhaosheng Zhu, Mengtian Wang, Zongpeng Zhu, Guangtao Xue, Jiwu Shu, Minglu Li, Jiesheng Wu</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Rik Farrow</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/detecting-fail-slow-failures-large-scale-cloud-storage-systems"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> <div class="views-row views-row-18 views-row-even views-row-last"> <div class="views-field views-field-field-lv2-publication-date"> <div class="field-content"><span class="date-display-single">February 1, 2023</span></div> </div> <div class="views-field views-field-title"> <span class="field-content">Caching Entire Systems without Invalidation</span> </div> <div class="views-field views-field-nothing"> <span class="field-content"><hr class="article-hr" /></span> </div> <div class="views-field views-field-field-lv2-article-teaser"> <div class="field-content">Peter Sperl presents two systems design patterns for implementing resilient and layered caching in large distributed systems.</div> </div> <div class="views-field views-field-pseudo-author-list"> <span class="views-label views-label-pseudo-author-list">Authors: </span> <span class="field-content">Peter Sperl</span> </div> <div class="views-field views-field-field-lv2-shepherds"> <span class="views-label views-label-field-lv2-shepherds">Article shepherded by: </span> <div class="field-content"><span class="usenix-user-reference-names">Laura Nolan</span></div> </div> <div class="views-field views-field-nothing-1"> <span class="field-content"><a href="/publications/loginonline/caching-entire-systems-without-invalidation"><div class="views-field views-field-view-node"><span class="field-content">Read article now <span class="article-right-arrow"></span></span> </div></a></span> </div> </div> </div> <h2 class="element-invisible">Pages</h2><div class="item-list"><ul class="pager"><li class="pager-first first"><a title="Go to first page" href="/publications/loginonline">« first</a></li> <li class="pager-previous"><a title="Go to previous page" href="/publications/loginonline?page=1">‹ previous</a></li> <li class="pager-item"><a title="Go to page 1" href="/publications/loginonline">1</a></li> <li class="pager-item"><a title="Go to page 2" href="/publications/loginonline?page=1">2</a></li> <li class="pager-current">3</li> <li class="pager-item"><a title="Go to page 4" href="/publications/loginonline?page=3">4</a></li> <li class="pager-item"><a title="Go to page 5" href="/publications/loginonline?page=4">5</a></li> <li class="pager-item"><a title="Go to page 6" href="/publications/loginonline?page=5">6</a></li> <li class="pager-item"><a title="Go to page 7" href="/publications/loginonline?page=6">7</a></li> <li class="pager-next"><a title="Go to next page" href="/publications/loginonline?page=3">next ›</a></li> <li class="pager-last last"><a title="Go to last page" href="/publications/loginonline?page=6">last »</a></li> </ul></div> <div class="view-footer"> <div class="login-v2-footer"><a href="/publications/login" class='btn'>See ;login: editions prior to 2021</a></div> </div> </div> </div> </div> </div> </div></div> <!-- /.section, /#content --> </div></div> <!-- /#main, /#main-wrapper --> <div id="footer"><div class="section"> <div id="footer-col-1" class="footer-col"> <div class="region region-footer-col-1"> <div id="block-usenix-blocks-usenix-logo-2" class="block block-usenix-blocks usenix-logo-2"> <div class="content"> <a href="/" title="Home" rel="home"><img src="https://www.usenix.org/sites/all/themes/custom/cotija/images/logo.svg" alt="Home" /></a> </div> </div> <div id="block-block-141" class="block block-block 141"> <div class="content"> <p class="subtitle-small">© USENIX <script>new Date().getFullYear()>document.write(new Date().getFullYear());</script><br>Website designed and built<br>by <a href="https://giantrabbit.com"target="_blank" style="color: black;">Giant Rabbit LLC</a></p> </div> </div> <div id="block-usenix-blocks-usenix-social-media-2" class="block block-usenix-blocks usenix-social-media-small usenix-social-media-2"> <div class="content"> <ul class="usenix-social-media"><li class="0 first"><a href="https://www.linkedin.com/company/usenix-association/" class="usenix-social-media-icon" alt="LinkedIn" title="LinkedIn"><i class="fab fa-linkedin"></i></a></li> <li class="1"><a href="https://www.facebook.com/pages/USENIX-Association/124487434386" class="usenix-social-media-icon" alt="Facebook" title="Facebook"><i class="fab fa-facebook-square"></i></a></li> <li class="2"><a href="https://www.youtube.com/user/USENIXAssociation" class="usenix-social-media-icon" alt="YouTube" title="YouTube"><i class="fab fa-youtube"></i></a></li> <li class="3 last"><a href="https://twitter.com/usenix" class="usenix-social-media-icon" alt="Twitter" title="Twitter"><i class="fab fa-square-x-twitter"></i></a></li> </ul> </div> </div> </div> </div> <div id="footer-col-2" class="footer-col"> <div class="region region-footer-col-2"> <div id="block-menu-menu-footer" class="block block-menu menu-footer"> <div class="content"> <ul class="menu"><li class="first leaf"><a href="/privacy-policy">Privacy Policy</a></li> <li class="last leaf"><a href="/contact">Contact Us</a></li> </ul> </div> </div> </div> </div> <div id="footer-col-3" class="footer-col"> <div class="region region-footer-col-3"> <div id="block-block-140" class="block block-block 140"> <div class="content"> <a class="anchor" name="signup"></a> <script src="https://www.google.com/recaptcha/api.js"></script> <script> function timestamp() { var response = document.getElementById("g-recaptcha-response"); if (response == null || response.value.trim() == "") {var elems = JSON.parse(document.getElementsByName("captcha_settings")[0].value);elems["ts"] = JSON.stringify(new Date().getTime());document.getElementsByName("captcha_settings")[0].value = JSON.stringify(elems); } } setInterval(timestamp, 500); </script> <div class="subtitle">Sign up for Our Newsletter:</div> <form action="https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8" method="POST" class="inline-form-extra-large"> <input type=hidden name='captcha_settings' value='{"keyname":"web_to_lead_google_v2_recaptcha","fallback":"true","orgId":"00DA0000000Ihkj","ts":""}'> <input type=hidden name="oid" value="00DA0000000Ihkj"> <input type=hidden name="retURL" value="https://usenix.org?newsletter_submit=1"> <input type=hidden name="lead_source" value="Newsletter"> <div class="row"> <input name="first_name" type="text" placeholder="First Name" required style="border: none;"> <input name="last_name" type="text" placeholder="Last Name" required style="border: none;"> <input name="email" type="email" placeholder="Email" required style="border: none;"> </div> <div class="row"><div class="g-recaptcha" data-sitekey="6Ldbd8gUAAAAAKvBvNAlRsQWTH1ZqzM5f07hB7lO"></div></div> <div class="row"><input type="submit" name="submit" value="Submit" class="btn-small"></div> </form> </div> </div> </div> </div> </div></div> <!-- /.section, /#footer --> </div></div> <!-- /#page, /#page-wrapper --> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"d823139095","applicationID":"509444","transactionName":"YVJVZksCXkEEVhIMWFgYYkBQTBodDFsCAE8YR19C","queueTime":0,"applicationTime":525,"atts":"TRVWEAMYTU8=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>