Help
RSS
API
Feed
Maltego
Contact
Domain > emeryblogger.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2013-05-08
72.233.2.58
(
ClassC
)
2024-10-02
192.0.78.25
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: nginxDate: Wed, 02 Oct 2024 16:27:13 GMTContent-Type: text/htmlContent-Length: 162Connection: keep-aliveLocation: https://emeryblogger.com/X-ac: 3.sea _bur BYPASSAlt-Svc: h3:443; ma86400 html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>nginx/center>/body>/html>
Port 443
HTTP/1.1 200 OKServer: nginxDate: Wed, 02 Oct 2024 16:27:13 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveStrict-Transport-Security: max-age31536000Vary: Accept-EncodingX-hacker: Want root? Visit join.a8c.com/hacker and mention this header.Host-Header: WordPress.comVary: accept, content-type, cookieLink: https://wp.me/F3nk>; relshortlinkX-ac: 3.sea _bur MISSAlt-Svc: h3:443; ma86400 !DOCTYPE html>!--if IE 7>html classie ie7 langen>!endif-->!--if IE 8>html classie ie8 langen>!endif-->!--if !(IE 7) & !(IE 8)>!-->html langen>!--!endif-->head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width> title>Emery Blogger | Emery Berger's Blog/title> link relprofile hrefhttps://gmpg.org/xfn/11> link relpingback hrefhttps://emeryblogger.com/xmlrpc.php> !--if lt IE 9> script srchttps://s2.wp.com/wp-content/themes/pub/twentyfourteen/js/html5.js?ver3.7.0>/script> !endif--> meta namerobots contentmax-image-preview:large />!-- Async WordPress.com Remote Login -->script idwpcom_remote_login_js>var wpcom_remote_login_extra_auth ;function wpcom_remote_login_remove_dom_node_id( element_id ) { var dom_node document.getElementById( element_id ); if ( dom_node ) { dom_node.parentNode.removeChild( dom_node ); }}function wpcom_remote_login_remove_dom_node_classes( class_name ) { var dom_nodes document.querySelectorAll( . + class_name ); for ( var i 0; i dom_nodes.length; i++ ) { dom_nodes i .parentNode.removeChild( dom_nodes i ); }}function wpcom_remote_login_final_cleanup() { wpcom_remote_login_remove_dom_node_classes( wpcom_remote_login_msg ); wpcom_remote_login_remove_dom_node_id( wpcom_remote_login_key ); wpcom_remote_login_remove_dom_node_id( wpcom_remote_login_validate ); wpcom_remote_login_remove_dom_node_id( wpcom_remote_login_js ); wpcom_remote_login_remove_dom_node_id( wpcom_request_access_iframe ); wpcom_remote_login_remove_dom_node_id( wpcom_request_access_styles );}// Watch for messages back from the remote loginwindow.addEventListener( message, function( e ) { if ( e.origin https://r-login.wordpress.com ) { var data {}; try { data JSON.parse( e.data ); } catch( e ) { wpcom_remote_login_final_cleanup(); return; } if ( data.msg LOGIN ) { // Clean up the login check iframe wpcom_remote_login_remove_dom_node_id( wpcom_remote_login_key ); var id_regex new RegExp( /^0-9+$/ ); var token_regex new RegExp( /^.*|.*|.*$/ ); if ( token_regex.test( data.token ) && id_regex.test( data.wpcomid ) ) { // We have everything we need to ask for a login var script document.createElement( script ); script.setAttribute( id, wpcom_remote_login_validate ); script.src /remote-login.php?wpcom_remote_loginvalidate + &wpcomid + data.wpcomid + &token + encodeURIComponent( data.token ) + &host + window.location.protocol + // + window.location.hostname + &postid519 + &is_singular; document.body.appendChild( script ); } return; } // Safari ITP, not logged in, so redirect if ( data.msg LOGIN-REDIRECT ) { window.location https://wordpress.com/log-in?redirect_to + window.location.href; return; } // Safari ITP, storage access failed, remove the request if ( data.msg LOGIN-REMOVE ) { var css_zap html { -webkit-transition: margin-top 1s; transition: margin-top 1s; } /* 9001 */ html { margin-top: 0 !important; } * html body { margin-top: 0 !important; } @media screen and ( max-width: 782px ) { html { margin-top: 0 !important; } * html body { margin-top: 0 !important; } }; var style_zap document.createElement( style ); style_zap.type text/css; style_zap.appendChild( document.createTextNode( css_zap ) ); document.body.appendChild( style_zap ); var e document.getElementById( wpcom_request_access_iframe ); e.parentNode.removeChild( e ); document.cookie wordpress_com_login_accessdenied; path/; max-age31536000; return; } // Safari ITP if ( data.msg REQUEST_ACCESS ) { console.log( request access: safari ); // Check ITP iframe enable/disable knob if ( wpcom_remote_login_extra_auth ! safari_itp_iframe ) { return; } // If we are in a private window there is no ITP. var private_window false; try { var opendb window.openDatabase( null, null, null, null ); } catch( e ) { private_window true; } if ( private_window ) { console.log( private window ); return; } var iframe document.createElement( iframe ); iframe.id wpcom_request_access_iframe; iframe.setAttribute( scrolling, no ); iframe.setAttribute( sandbox, allow-storage-access-by-user-activation allow-scripts allow-same-origin allow-top-navigation-by-user-activation ); iframe.src https://r-login.wordpress.com/remote-login.php?wpcom_remote_loginrequest_access&origin + encodeURIComponent( data.origin ) + &wpcomid + encodeURIComponent( data.wpcomid ); var css html { -webkit-transition: margin-top 1s; transition: margin-top 1s; } /* 9001 */ html { margin-top: 46px !important; } * html body { margin-top: 46px !important; } @media screen and ( max-width: 660px ) { html { margin-top: 71px !important; } * html body { margin-top: 71px !important; } #wpcom_request_access_iframe { display: block; height: 71px !important; } } #wpcom_request_access_iframe { border: 0px; height: 46px; position: fixed; top: 0; left: 0; width: 100%; min-width: 100%; z-index: 99999; background: #23282d; } ; var style document.createElement( style ); style.type text/css; style.id wpcom_request_access_styles; style.appendChild( document.createTextNode( css ) ); document.body.appendChild( style ); document.body.appendChild( iframe ); } if ( data.msg DONE ) { wpcom_remote_login_final_cleanup(); } }}, false );// Inject the remote login iframe after the page has had a chance to load// more critical resourceswindow.addEventListener( DOMContentLoaded, function( e ) { var iframe document.createElement( iframe ); iframe.style.display none; iframe.setAttribute( scrolling, no ); iframe.setAttribute( id, wpcom_remote_login_key ); iframe.src https://r-login.wordpress.com/remote-login.php + ?wpcom_remote_loginkey + &originaHR0cHM6Ly9lbWVyeWJsb2dnZXIuY29t + &wpcomid9784426 + &time1727886433; document.body.appendChild( iframe );}, false );/script>link reldns-prefetch href//s1.wp.com />link reldns-prefetch href//s2.wp.com />link reldns-prefetch href//s0.wp.com />link reldns-prefetch href//fonts-api.wp.com />link reldns-prefetch href//s.pubmine.com />link reldns-prefetch href//x.bidswitch.net />link reldns-prefetch href//static.criteo.net />link reldns-prefetch href//ib.adnxs.com />link reldns-prefetch href//aax.amazon-adsystem.com />link reldns-prefetch href//bidder.criteo.com />link reldns-prefetch href//cas.criteo.com />link reldns-prefetch href//gum.criteo.com />link reldns-prefetch href//ads.pubmatic.com />link reldns-prefetch href//gads.pubmatic.com />link reldns-prefetch href//tpc.googlesyndication.com />link reldns-prefetch href//ad.doubleclick.net />link reldns-prefetch href//googleads.g.doubleclick.net />link reldns-prefetch href//www.googletagservices.com />link reldns-prefetch href//cdn.switchadhub.com />link reldns-prefetch href//delivery.g.switchadhub.com />link reldns-prefetch href//delivery.swid.switchadhub.com />link reldns-prefetch href//a.teads.tv />link reldns-prefetch href//prebid.media.net />link reldns-prefetch href//adserver-us.adtech.advertising.com />link reldns-prefetch href//fastlane.rubiconproject.com />link reldns-prefetch href//prebid-server.rubiconproject.com />link reldns-prefetch href//hb-api.omnitagjs.com />link reldns-prefetch href//mtrx.go.sonobi.com />link reldns-prefetch href//apex.go.sonobi.com />link reldns-prefetch href//u.openx.net />link hrefhttps://fonts.gstatic.com crossorigin relpreconnect />link relalternate typeapplication/rss+xml titleEmery Blogger » Feed hrefhttps://emeryblogger.com/feed/ />link relalternate typeapplication/rss+xml titleEmery Blogger » Comments Feed hrefhttps://emeryblogger.com/comments/feed/ /> script typetext/javascript> /* !CDATA */ function addLoadEvent(func) { var oldonload window.onload; if (typeof window.onload ! function) { window.onload func; } else { window.onload function () { oldonload(); func(); } } } /* > */ /script> script>window._wpemojiSettings {baseUrl:https:\/\/s0.wp.com\/wp-content\/mu-plugins\/wpcom-smileys\/twemoji\/2\/72x72\/,ext:.png,svgUrl:https:\/\/s0.wp.com\/wp-content\/mu-plugins\/wpcom-smileys\/twemoji\/2\/svg\/,svgExt:.svg,source:{concatemoji:https:\/\/s0.wp.com\/wp-includes\/js\/wp-emoji-release.min.js?m1719498190i&ver6.7-alpha-59089}};/*! This file is auto-generated */!function(i,n){var o,s,e;function c(e){try{var t{supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var tnew Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return ert})}function u(e,t,n){switch(t){caseflag:return n(e,\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f,\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f)?!1:!n(e,\ud83c\uddfa\ud83c\uddf3,\ud83c\uddfa\u200b\ud83c\uddf3)&&!n(e,\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f,\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f);caseemoji:return!n(e,\ud83d\udc26\u200d\u2b1b,\ud83d\udc26\u200b\u2b1b)}return!1}function f(e,t,n){var rundefined!typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement(canvas),ar.getContext(2d,{willReadFrequently:!0}),o(a.textBaselinetop,a.font600 32px Arial,{});return e.forEach(function(e){oet(a,e,n)}),o}function t(e){var ti.createElement(script);t.srce,t.defer!0,i.head.appendChild(t)}undefined!typeof Promise&&(owpEmojiSettingsSupports,sflag,emoji,n.supports{everything:!0,everythingExceptFlag:!0},enew Promise(function(e){i.addEventListener(DOMContentLoaded,e,{once:!0})}),new Promise(function(t){var nfunction(){try{var eJSON.parse(sessionStorage.getItem(o));if(objecttypeof e&&numbertypeof e.timestamp&&(new Date).valueOf()e.timestamp+604800&&objecttypeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if(undefined!typeof Worker&&undefined!typeof OffscreenCanvas&&undefined!typeof URL&&URL.createObjectURL&&undefined!typeof Blob)try{var epostMessage(+f.toString()+(+JSON.stringify(s),u.toString(),p.toString().join(,)+));,rnew Blob(e,{type:text/javascript}),anew Worker(URL.createObjectURL(r),{name:wpTestEmojiSupports});return void(a.onmessagefunction(e){c(ne.data),a.terminate(),t(n)})}catch(e){}c(nf(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supportstet,n.supports.everythingn.supports.everything&&n.supportst,flag!t&&(n.supports.everythingExceptFlagn.supports.everythingExceptFlag&&n.supportst);n.supports.everythingExceptFlagn.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady!1,n.readyCallbackfunction(){n.DOMReady!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(en.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);/script>link crossoriginanonymous relstylesheet idall-css-0-1 hrefhttps://s2.wp.com/_static/??-eJyFjMEKgzAQRH+o6WoRPJV+S0xWiW6ywWwa/PvGFumhYC8Dj3kzUKIyHASDwEA8qUh5ciFB4dVqm2AiHjRdTUoX+OdKqdU2cl4FMajn7Wfm83fk7ISSAHNteXGoSBcQ9JG0YIIkG+HZAbmlajNK1GZRbzrTD/HD4Jn3sJnqiQujC05QJbMy0cHb/vfw97Zv+67pmr6bX/+gcko&cssminifyyes typetext/css mediaall />style idwp-emoji-styles-inline-css> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; }/style>link crossoriginanonymous relstylesheet idall-css-2-1 hrefhttps://s1.wp.com/_static/??-eJylzFsKgCAQQNENlVMJhh/RWtIGs0YNH4W7L9pCn5cLB+6z1cFn9BlOKsb6BKa8qTCa90SEq5dsYB2oYmkFRUEfLVkVl1gh5UrIdEoN/IPyhu6DZjf14yCE4FzK/QEljDhi&cssminifyyes typetext/css mediaall />style idwp-block-library-inline-css>.has-text-align-justify { text-align:justify;}.has-text-align-justify{text-align:justify;}/style>link crossoriginanonymous relstylesheet idall-css-4-1 hrefhttps://s2.wp.com/_static/??-eJzTLy/QzcxLzilNSS3WzyrWz01NyUxMzUnNTc0rQeEU5CRWphbp5qSmJyZX6uVm5uklFxfr6OPTDpRD5sM02efaGpoZmFkYGRuZGmQBAHPvL0Y&cssminifyyes typetext/css mediaall />style idjetpack-sharing-buttons-style-inline-css>.jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em}/style>link crossoriginanonymous relstylesheet idall-css-6-1 hrefhttps://s2.wp.com/_static/??-eJyVjEEOwiAQAD/ksgGN4sH4Fko3hJYCYZea/r49mF6Nx0lmBj8VfMlCWbCmHmJmDP3AgVqAIRU/M04k1fkZkttKFwgtjsiyJVKe+YL/LJqTmAP/yH35ZkZpqzRwXGoiaLSqG46R5TTgHL2Xl75bba/GPB/TDthVT3U&cssminifyyes typetext/css mediaall />style idclassic-theme-styles-inline-css>/*! This file is auto-generated */.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}/style>link crossoriginanonymous relstylesheet idall-css-8-1 hrefhttps://s2.wp.com/_static/??-eJx9jcEKg0AMRH+oaVhorR7Eb9E16IpZg8min2889FZ6GYbhPQYPgbhlo2zIBWQtU8qKcdvJd5be0AmmMfW0Ejv2jKoP/K0daZzIXNdvB6PzvyJ+A8MgO6mCJ6fCYLN/6e113IZXU9WfUL/DcgHSTkDo&cssminifyyes typetext/css mediaall />style idglobal-styles-inline-css>:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #fff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--green: #24890d;--wp--preset--color--dark-gray: #2b2b2b;--wp--preset--color--medium-gray: #767676;--wp--preset--color--light-gray: #f5f5f5;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-family--albert-sans: Albert Sans, sans-serif;--wp--preset--font-family--alegreya: Alegreya, serif;--wp--preset--font-family--arvo: Arvo, serif;--wp--preset--font-family--bodoni-moda: Bodoni Moda, serif;--wp--preset--font-family--bricolage-grotesque: Bricolage Grotesque, sans-serif;--wp--preset--font-family--cabin: Cabin, sans-serif;--wp--preset--font-family--chivo: Chivo, sans-serif;--wp--preset--font-family--commissioner: Commissioner, sans-serif;--wp--preset--font-family--cormorant: Cormorant, serif;--wp--preset--font-family--courier-prime: Courier Prime, monospace;--wp--preset--font-family--crimson-pro: Crimson Pro, serif;--wp--preset--font-family--dm-mono: DM Mono, monospace;--wp--preset--font-family--dm-sans: DM Sans, sans-serif;--wp--preset--font-family--dm-serif-display: DM Serif Display, serif;--wp--preset--font-family--domine: Domine, serif;--wp--preset--font-family--eb-garamond: EB Garamond, serif;--wp--preset--font-family--epilogue: Epilogue, sans-serif;--wp--preset--font-family--fahkwang: Fahkwang, sans-serif;--wp--preset--font-family--figtree: Figtree, sans-serif;--wp--preset--font-family--fira-sans: Fira Sans, sans-serif;--wp--preset--font-family--fjalla-one: Fjalla One, sans-serif;--wp--preset--font-family--fraunces: Fraunces, serif;--wp--preset--font-family--gabarito: Gabarito, system-ui;--wp--preset--font-family--ibm-plex-mono: IBM Plex Mono, monospace;--wp--preset--font-family--ibm-plex-sans: IBM Plex Sans, sans-serif;--wp--preset--font-family--ibarra-real-nova: Ibarra Real Nova, serif;--wp--preset--font-family--instrument-serif: Instrument Serif, serif;--wp--preset--font-family--inter: Inter, sans-serif;--wp--preset--font-family--josefin-sans: Josefin Sans, sans-serif;--wp--preset--font-family--jost: Jost, sans-serif;--wp--preset--font-family--libre-baskerville: Libre Baskerville, serif;--wp--preset--font-family--libre-franklin: Libre Franklin, sans-serif;--wp--preset--font-family--literata: Literata, serif;--wp--preset--font-family--lora: Lora, serif;--wp--preset--font-family--merriweather: Merriweather, serif;--wp--preset--font-family--montserrat: Montserrat, sans-serif;--wp--preset--font-family--newsreader: Newsreader, serif;--wp--preset--font-family--noto-sans-mono: Noto Sans Mono, sans-serif;--wp--preset--font-family--nunito: Nunito, sans-serif;--wp--preset--font-family--open-sans: Open Sans, sans-serif;--wp--preset--font-family--overpass: Overpass, sans-serif;--wp--preset--font-family--pt-serif: PT Serif, serif;--wp--preset--font-family--petrona: Petrona, serif;--wp--preset--font-family--piazzolla: Piazzolla, serif;--wp--preset--font-family--playfair-display: Playfair Display, serif;--wp--preset--font-family--plus-jakarta-sans: Plus Jakarta Sans, sans-serif;--wp--preset--font-family--poppins: Poppins, sans-serif;--wp--preset--font-family--raleway: Raleway, sans-serif;--wp--preset--font-family--roboto: Roboto, sans-serif;--wp--preset--font-family--roboto-slab: Roboto Slab, serif;--wp--preset--font-family--rubik: Rubik, sans-serif;--wp--preset--font-family--rufina: Rufina, serif;--wp--preset--font-family--sora: Sora, sans-serif;--wp--preset--font-family--source-sans-3: Source Sans 3, sans-serif;--wp--preset--font-family--source-serif-4: Source Serif 4, serif;--wp--preset--font-family--space-mono: Space Mono, monospace;--wp--preset--font-family--syne: Syne, sans-serif;--wp--preset--font-family--texturina: Texturina, serif;--wp--preset--font-family--urbanist: Urbanist, sans-serif;--wp--preset--font-family--work-sans: Work Sans, sans-serif;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-albert-sans-font-family{font-family: var(--wp--preset--font-family--albert-sans) !important;}.has-alegreya-font-family{font-family: var(--wp--preset--font-family--alegreya) !important;}.has-arvo-font-family{font-family: var(--wp--preset--font-family--arvo) !important;}.has-bodoni-moda-font-family{font-family: var(--wp--preset--font-family--bodoni-moda) !important;}.has-bricolage-grotesque-font-family{font-family: var(--wp--preset--font-family--bricolage-grotesque) !important;}.has-cabin-font-family{font-family: var(--wp--preset--font-family--cabin) !important;}.has-chivo-font-family{font-family: var(--wp--preset--font-family--chivo) !important;}.has-commissioner-font-family{font-family: var(--wp--preset--font-family--commissioner) !important;}.has-cormorant-font-family{font-family: var(--wp--preset--font-family--cormorant) !important;}.has-courier-prime-font-family{font-family: var(--wp--preset--font-family--courier-prime) !important;}.has-crimson-pro-font-family{font-family: var(--wp--preset--font-family--crimson-pro) !important;}.has-dm-mono-font-family{font-family: var(--wp--preset--font-family--dm-mono) !important;}.has-dm-sans-font-family{font-family: var(--wp--preset--font-family--dm-sans) !important;}.has-dm-serif-display-font-family{font-family: var(--wp--preset--font-family--dm-serif-display) !important;}.has-domine-font-family{font-family: var(--wp--preset--font-family--domine) !important;}.has-eb-garamond-font-family{font-family: var(--wp--preset--font-family--eb-garamond) !important;}.has-epilogue-font-family{font-family: var(--wp--preset--font-family--epilogue) !important;}.has-fahkwang-font-family{font-family: var(--wp--preset--font-family--fahkwang) !important;}.has-figtree-font-family{font-family: var(--wp--preset--font-family--figtree) !important;}.has-fira-sans-font-family{font-family: var(--wp--preset--font-family--fira-sans) !important;}.has-fjalla-one-font-family{font-family: var(--wp--preset--font-family--fjalla-one) !important;}.has-fraunces-font-family{font-family: var(--wp--preset--font-family--fraunces) !important;}.has-gabarito-font-family{font-family: var(--wp--preset--font-family--gabarito) !important;}.has-ibm-plex-mono-font-family{font-family: var(--wp--preset--font-family--ibm-plex-mono) !important;}.has-ibm-plex-sans-font-family{font-family: var(--wp--preset--font-family--ibm-plex-sans) !important;}.has-ibarra-real-nova-font-family{font-family: var(--wp--preset--font-family--ibarra-real-nova) !important;}.has-instrument-serif-font-family{font-family: var(--wp--preset--font-family--instrument-serif) !important;}.has-inter-font-family{font-family: var(--wp--preset--font-family--inter) !important;}.has-josefin-sans-font-family{font-family: var(--wp--preset--font-family--josefin-sans) !important;}.has-jost-font-family{font-family: var(--wp--preset--font-family--jost) !important;}.has-libre-baskerville-font-family{font-family: var(--wp--preset--font-family--libre-baskerville) !important;}.has-libre-franklin-font-family{font-family: var(--wp--preset--font-family--libre-franklin) !important;}.has-literata-font-family{font-family: var(--wp--preset--font-family--literata) !important;}.has-lora-font-family{font-family: var(--wp--preset--font-family--lora) !important;}.has-merriweather-font-family{font-family: var(--wp--preset--font-family--merriweather) !important;}.has-montserrat-font-family{font-family: var(--wp--preset--font-family--montserrat) !important;}.has-newsreader-font-family{font-family: var(--wp--preset--font-family--newsreader) !important;}.has-noto-sans-mono-font-family{font-family: var(--wp--preset--font-family--noto-sans-mono) !important;}.has-nunito-font-family{font-family: var(--wp--preset--font-family--nunito) !important;}.has-open-sans-font-family{font-family: var(--wp--preset--font-family--open-sans) !important;}.has-overpass-font-family{font-family: var(--wp--preset--font-family--overpass) !important;}.has-pt-serif-font-family{font-family: var(--wp--preset--font-family--pt-serif) !important;}.has-petrona-font-family{font-family: var(--wp--preset--font-family--petrona) !important;}.has-piazzolla-font-family{font-family: var(--wp--preset--font-family--piazzolla) !important;}.has-playfair-display-font-family{font-family: var(--wp--preset--font-family--playfair-display) !important;}.has-plus-jakarta-sans-font-family{font-family: var(--wp--preset--font-family--plus-jakarta-sans) !important;}.has-poppins-font-family{font-family: var(--wp--preset--font-family--poppins) !important;}.has-raleway-font-family{font-family: var(--wp--preset--font-family--raleway) !important;}.has-roboto-font-family{font-family: var(--wp--preset--font-family--roboto) !important;}.has-roboto-slab-font-family{font-family: var(--wp--preset--font-family--roboto-slab) !important;}.has-rubik-font-family{font-family: var(--wp--preset--font-family--rubik) !important;}.has-rufina-font-family{font-family: var(--wp--preset--font-family--rufina) !important;}.has-sora-font-family{font-family: var(--wp--preset--font-family--sora) !important;}.has-source-sans-3-font-family{font-family: var(--wp--preset--font-family--source-sans-3) !important;}.has-source-serif-4-font-family{font-family: var(--wp--preset--font-family--source-serif-4) !important;}.has-space-mono-font-family{font-family: var(--wp--preset--font-family--space-mono) !important;}.has-syne-font-family{font-family: var(--wp--preset--font-family--syne) !important;}.has-texturina-font-family{font-family: var(--wp--preset--font-family--texturina) !important;}.has-urbanist-font-family{font-family: var(--wp--preset--font-family--urbanist) !important;}.has-work-sans-font-family{font-family: var(--wp--preset--font-family--work-sans) !important;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}/style>link relstylesheet idtwentyfourteen-lato-css hrefhttps://fonts-api.wp.com/css?familyLato%3A300%2C400%2C700%2C900%2C300italic%2C400italic%2C700italic&subsetlatin%2Clatin-ext&displayfallback mediaall />link crossoriginanonymous relstylesheet idall-css-12-1 hrefhttps://s0.wp.com/_static/??-eJyVjbEOwjAQQ3+IYhWlFQyIT0H0dC1pk0vUu6jq3xMhBgYWNtt6trHlhpIYiyGWJocyeVHMbPlBy8cjpiS4eyFMLLz62tDf8kiqB3yN2pMjK3IZYFsN9jGV1ZgFanvgP/hKYgiJlvfJLV7b/ty1p4tzbn4B7OpLBw&cssminifyyes typetext/css mediaall />!--if lt IE 9>link relstylesheet idtwentyfourteen-ie-css hrefhttps://s2.wp.com/wp-content/themes/pub/twentyfourteen/css/ie.css?m1405358337i&ver20140701 mediaall />!endif-->link crossoriginanonymous relstylesheet idall-css-14-1 hrefhttps://s1.wp.com/_static/??-eJx9y0EOAiEMheELidVM1LAwnmWGdBBTWkJLyNxedKNu3L3/JR/04oKwIRvYHTMqlLaA9XFsq7RqiAxBFdQ2QtdLkLwfvYMvmZsr1GJihYoLSRwzvtUn/6GI4kjCbEn4J9xKc6ovesvX4/kwTRfv/enxBDp+RCg&cssminifyyes typetext/css mediaall />link crossoriginanonymous relstylesheet idprint-css-15-1 hrefhttps://s1.wp.com/wp-content/mu-plugins/global-print/global-print.css?m1465851035i&cssminifyyes typetext/css mediaprint />link crossoriginanonymous relstylesheet idall-css-16-1 hrefhttps://s1.wp.com/wp-content/mu-plugins/jetpack-plugin/moon/modules/infinite-scroll/themes/twentyfourteen.css?m1685131895i&cssminifyyes typetext/css mediaall />style idjetpack-global-styles-frontend-style-inline-css>:root { --font-headings: unset; --font-base: unset; --font-headings-default: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; --font-base-default: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;}/style>link crossoriginanonymous relstylesheet idall-css-18-1 hrefhttps://s2.wp.com/_static/??-eJyNjcEKwjAQRH/IuA1aehI/ReImJKmb3eAmFP9eW3oRL16GeTC8gaUaFG6BG5RuKvWYWWEOrTp87AxFZA3fKShocs/gnfevrWaOR1Q9wP+mW2YEFcyODEkU/YIfW0uhfH7TGSLJ3dE6uJaLneww2mkYT/MbUOlJHA&cssminifyyes typetext/css mediaall />script idmedia-video-jwt-bridge-js-extra>var videopressAjax {ajaxUrl:https:\/\/emeryblogger.wordpress.com\/wp-admin\/admin-ajax.php,bridgeUrl:\/wp-content\/mu-plugins\/jetpack-plugin\/moon\/jetpack_vendor\/automattic\/jetpack-videopress\/build\/lib\/token-bridge.js,post_id:519};/script>script idwpcom-actionbar-placeholder-js-extra>var actionbardata {siteID:9784426,postID:0,siteURL:https:\/\/emeryblogger.com,xhrURL:https:\/\/emeryblogger.com\/wp-admin\/admin-ajax.php,nonce:f68ac8cfb2,isLoggedIn:,statusMessage:,subsEmailDefault:instantly,proxyScriptUrl:https:\/\/s0.wp.com\/wp-content\/js\/wpcom-proxy-request.js?ver20211021,i18n:{followedText:New posts from this site will now appear in your a href\https:\/\/wordpress.com\/read\>Reader\/a>,foldBar:Collapse this bar,unfoldBar:Expand this bar}};/script>script idjetpack-mu-wpcom-settings-js-before>var JETPACK_MU_WPCOM_SETTINGS {assetsUrl:https:\/\/s1.wp.com\/wp-content\/mu-plugins\/jetpack-mu-wpcom-plugin\/moon\/vendor\/automattic\/jetpack-mu-wpcom\/src\/build\/};/script>script crossoriginanonymous typetext/javascript srchttps://s2.wp.com/_static/??-eJyFjs1OAzEMhF8IN6JS270gHgXlx0TeJnZwnC19e7aiWwEXTiPPfPbYXRpEYUM2N3dXJVBBGB3V59UD4nfZzf3J/ea0GDSVz+uWEccyEvZbOH8M1OtddpX4XwgqZfWGP+GtrQ5oZWTidQet+Xi+z+uzwpv3tiAnUeeHSfVmFB/0QgmlKfbuwqCSXKHgTM7IEJRSxr+NoUh+dF5Ek08dYvG9f78ea3PL/ibAwpBT0/XEa315Pu0P0zQdT4f5C6tJgEk>/script>script idrlt-proxy-js-after> rltInitialize( {token:null,iframeOrigins:https:\/\/widgets.wp.com} );/script>link relEditURI typeapplication/rsd+xml titleRSD hrefhttps://emeryblogger.wordpress.com/xmlrpc.php?rsd />meta namegenerator contentWordPress.com />link relshortlink hrefhttps://wp.me/F3nk />!-- Jetpack Open Graph Tags -->meta propertyog:type contentwebsite />meta propertyog:title contentEmery Blogger />meta propertyog:description contentEmery Berger's Blog />meta propertyog:url contenthttps://emeryblogger.com/ />meta propertyog:site_name contentEmery Blogger />meta propertyog:image contenthttps://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s200&ts1727886433 />meta propertyog:image:width content200 />meta propertyog:image:height content200 />meta propertyog:image:alt content />meta propertyog:locale contenten_US />meta nametwitter:creator content@emeryberger />!-- End Jetpack Open Graph Tags -->link relshortcut icon typeimage/x-icon hrefhttps://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s32 sizes16x16 />link relicon typeimage/x-icon hrefhttps://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s32 sizes16x16 />link relapple-touch-icon hrefhttps://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s114 />link relopenid.server hrefhttps://emeryblogger.com/?openidserver1 />link relopenid.delegate hrefhttps://emeryblogger.com/ />link relsearch typeapplication/opensearchdescription+xml hrefhttps://emeryblogger.com/osd.xml titleEmery Blogger />link relsearch typeapplication/opensearchdescription+xml hrefhttps://s1.wp.com/opensearch.xml titleWordPress.com />meta nametheme-color content#f5f5f5 />meta nameapplication-name contentEmery Blogger />meta namemsapplication-window contentwidthdevice-width;heightdevice-height />meta namemsapplication-tooltip contentEmery Berger's Blog />meta namedescription contentEmery Berger's Blog />script>var wa_smart { network_id: 3905, site_id: 474853, page_id: 1572546, blog_id: 9784426, post_id: null, theme: pub/twentyfourteen, target: wp_blog_id9784426;languageen, _: { title: Advertisement, privacy_settings: Privacy Settings }, inline: { enabled: false, adflow_enabled: true, format_id: 110354, max_slots: 20, max_blaze_slots: 20 }, belowpost: { enabled: false, adflow_enabled: true, format_id: 134071 }, bottom_sticky: { enabled: false, adflow_enabled: true, format_id: 117571 } }; wa_smart.cmd ;/script> script typetext/javascript> function __ATA_CC() {var v document.cookie.match((^|;) ?personalized-ads-consent(^;*)(;|$));return v ? 1 : 0;} var __ATA_PP { pt: 0, ht: 0, tn: twentyfourteen, uloggedin: 0, amp: false, consent: __ATA_CC(), gdpr_applies: false, ad: { label: { text: Advertisements }, reportAd: { text: Report this ad } }, disabled_slot_formats: , siteid: 8982, blogid: 9784426 }; var __ATA __ATA || {}; __ATA.cmd __ATA.cmd || ; __ATA.criteo __ATA.criteo || {}; __ATA.criteo.cmd __ATA.criteo.cmd || ; /script> script typetext/javascript> (function(){var gDate.now||function(){return+new Date};function h(a,b){a:{for(var ca.length,dstringtypeof a?a.split():a,e0;ec;e++)if(e in d&&b.call(void 0,de,e,a)){be;break a}b-1}return 0>b?null:stringtypeof a?a.charAt(b):ab};function k(a,b,c){cnull!c?+encodeURIComponent(String(c)):;if(b+c){ca.indexOf(#);0>c&&(ca.length);var da.indexOf(?);if(0>d||d>c){dc;var e}else ea.substring(d+1,c);aa.substr(0,d),e,a.substr(c);ca1;a1b?c?c+&+b:b:c;aa0+(a1??+a1:)+a2}return a};var l0;function m(a,b){var cdocument.createElement(script);c.srca;c.onloadfunction(){b&&b(void 0)};c.onerrorfunction(){b&&b(error)};adocument.getElementsByTagName(head);var d;a&&0!a.length?da0:ddocument.documentElement;d.appendChild(c)}function n(a){var bvoid 0b?document.cookie:b;return(bh(b.split(; ),function(c){return-1!c.indexOf(a+)}))?b.split()1:}function p(a){returnstringtypeof a&&0a.length} function r(a,b,c){bvoid 0b?:b;cvoid 0c?.:c;var d;Object.keys(a).forEach(function(e){var fae,qtypeof f;objectq&&null!f||functionq?d.push(r(f,b+e+c)):null!f&&void 0!f&&(eencodeURIComponent(b+e),d.push(e++encodeURIComponent(f)))});return d.filter(p).join(&)}function t(a,b){a||((window.__ATA||{}).configb.c,m(b.url))}var uMath.floor(1E13*Math.random()),vwindow.__ATA||{};window.__ATAv;window.__ATA.cmdv.cmd||;v.ridu;v.createdAtg();var wwindow.__ATA||{},xs.pubmine.com; w&&w.serverDomain&&(xw.serverDomain);var y//+x+/conf,zwindow.topwindow,Awindow.__ATA_PP&&window.__ATA_PP.gdpr_applies,Bbooleantypeof A?Number(A):null,Cwindow.__ATA_PP||null,Dz?document.referrer?document.referrer:null:null,Ez?window.location.href:document.referrer?document.referrer:null,F,Gn(__ATA_tuuid);FG?G:null;var Hwindow.innerWidth+x+window.innerHeight,In(usprivacy),Jr({gdpr:B,pp:C,rid:u,src:D,ref:E,tuuid:F,vp:H,us_privacy:I?I:null},,.); (function(a){var bvoid 0b?cb:b;l++;var ccallback__+g().toString(36)+_+l.toString(36);ak(a,b,c);windowcfunction(d){t(void 0,d)};m(a,function(d){d&&t(d)})})(y+?+J);}).call(this); /script> script> var sas_fallback sas_fallback || ; sas_fallback.push( { tag: <div id"atatags-26942-{{unique_id}}"></div><script>__ATA.cmd.push(function() {__ATA.initDynamicSlot({id: \atatags-26942-{{unique_id}}\,location: 120,formFactor: \001\,label: {text: \Advertisements\,},creative: {reportAd: {text: \Report this ad\,},privacySettings: {text: \Privacy\,}}});});</script>, type: belowpost }, { tag: <div id"atatags-26942-{{unique_id}}"></div><script>__ATA.cmd.push(function() {__ATA.initDynamicSlot({id: \atatags-26942-{{unique_id}}\,location: 310,formFactor: \001\,label: {text: \Advertisements\,},creative: {reportAd: {text: \Report this ad\,},privacySettings: {text: \Privacy\,}}});});</script>, type: inline } ); /script> script typetext/javascript> window.doNotSellCallback function() { var linkElements ahrefhttps://wordpress.com/?reffooter_blog, ahrefhttps://wordpress.com/?reffooter_website, ahrefhttps://wordpress.com/?refvertical_footer, ahref^https://wordpress.com/?reffooter_segment_, .join(,); var dnsLink document.createElement( a ); dnsLink.href https://wordpress.com/advertising-program-optout/; dnsLink.classList.add( do-not-sell-link ); dnsLink.rel nofollow; dnsLink.style.marginLeft 0.5em; dnsLink.textContent Do Not Sell or Share My Personal Information; var creditLinks document.querySelectorAll( linkElements ); if ( 0 creditLinks.length ) { return false; } Array.prototype.forEach.call( creditLinks, function( el ) { el.insertAdjacentElement( afterend, dnsLink ); }); return true; }; /script> script typetext/javascript> window.google_analytics_uacct UA-52447-2;/script>script typetext/javascript> var _gaq _gaq || ; _gaq.push(_setAccount, UA-52447-2); _gaq.push(_gat._anonymizeIp); _gaq.push(_setDomainName, none); _gaq.push(_setAllowLinker, true); _gaq.push(_initData); _gaq.push(_trackPageview); (function() { var ga document.createElement(script); ga.type text/javascript; ga.async true; ga.src (https: document.location.protocol ? https://ssl : http://www) + .google-analytics.com/ga.js; (document.getElementsByTagName(head)0 || document.getElementsByTagName(body)0).appendChild(ga); })();/script>/head>body classhome blog wp-embed-responsive customizer-styles-applied masthead-fixed list-view full-width grid jetpack-reblog-enabled>div idpage classhfeed site> header idmasthead classsite-header> div classheader-main> h1 classsite-title>a hrefhttps://emeryblogger.com/ relhome>Emery Blogger/a>/h1> div classsearch-toggle> a href#search-container classscreen-reader-text aria-expandedfalse aria-controlssearch-container>Search/a> /div> nav idprimary-navigation classsite-navigation primary-navigation> button classmenu-toggle>Primary Menu/button> a classscreen-reader-text skip-link href#content>Skip to content/a> div idprimary-menu classnav-menu>ul>li classpage_item page-item-2>a hrefhttps://emeryblogger.com/about/>About/a>/li>/ul>/div> /nav> /div> div idsearch-container classsearch-box-wrapper hide> div classsearch-box> form rolesearch methodget classsearch-form actionhttps://emeryblogger.com/> label> span classscreen-reader-text>Search for:/span> input typesearch classsearch-field placeholderSearch … value names /> /label> input typesubmit classsearch-submit valueSearch /> /form> /div> /div> /header>!-- #masthead --> div idmain classsite-main>div idmain-content classmain-content> div idprimary classcontent-area> div idcontent classsite-content rolemain> article idpost-519 classpost-519 post type-post status-publish format-standard hentry category-miscellaneous> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://emeryblogger.com/category/miscellaneous/ relcategory tag>Miscellaneous/a>/span> /div> h1 classentry-title>a hrefhttps://emeryblogger.com/2018/03/22/reviewing-guidelines-for-program-committee-members/ relbookmark>Reviewing Guidelines for Program Committee Members/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://emeryblogger.com/2018/03/22/reviewing-guidelines-for-program-committee-members/ relbookmark>time classentry-date datetime2018-03-22T10:35:04-04:00>March 22, 2018/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://emeryblogger.com/author/emeryberger/ relauthor>emeryberger/a>/span>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> p>I prepared these guidelines for the PLDI Program Committee when I was program chair in 2016. I am posting this lightly-edited version in the hopes that it will be useful to other program chairs. Feel free to adapt some or all of it for your own use; if you do so, I just ask that you cite this page and point me to your page in the hopes of providing an easy go-to for future program chairs and PC members. Thanks!/p>hr />p>strong>Reviewing Guidelines/strong>/p>p>All committee members are expected to:/p>ul>li>Personally read and write reviews all of their assigned papers. The reviews should be entirely of the reviewer’s own devising. If you want to invite someone for a supplementary review, let me know and I will handle it./li>li>Write positive, detailed, and constructive reviews that will help the authors revise their papers and make them better./li>li>Not seek to break double-blind reviewing by Googling (or Binging, for those of you who do that) or other means./li>li>Turn your reviews in ON TIME./li>li>Actively participate in all on-line discussions of the papers, and (for EPC members), participate in a teleconference to discuss PC papers prior to the physical PC meeting./li>/ul>p>Reviews will take the following questions into account:/p>ul>li>Is the paper well-motivated? What problem does it address, and is it an important problem?/li>li>Does the paper significantly advance the state of the art or break new ground?/li>li>What are the paper’s key insights?/li>li>What are the paper’s key scientific and technical contributions?/li>li>Does the paper credibly support its claimed contributions?/li>li>What did you learn from the paper?/li>li>Is the paper sufficiently clear that most PLDI attendees will be able to read and understand it?/li>li>Does the paper clearly establish its context with respect to prior work? Does it discuss prior work accurately and completely? Are comparisons with previous work clear and explicit?/li>li>Does the paper describe something that has actually been implemented? If so, has it been evaluated properly? Is it publicly available so that these results can be verified?/li>li>What impact is this paper likely to have (on theory & practice)?/li>li>Is the work of broad appeal and interest to the PLDI community?/li>/ul>p>A key part of ensuring quality reviews is making sure that papers are reviewed by experts. All reviewers will indicate specifically what the nature of their expertise is with respect to each paper, e.g., “I have written papers (X, Y, & Z) on this topic.”/p>p>em>Guardians: /em>One reviewer will be appointed as a “guardian” to lead all discussions and ensure that author responses are read and addressed. The guardian will also ensure that final reviews include a summary of the online and/or PC discussion to explain decisions for acceptance/rejection./p>p>strong>BIDDING/strong>/p>p>em>This section is adapted from the bidding instructions from POPL 2015./em>/p>p>Bidding will be carried out in a hrefhttps://pldi16.hotcrp.com/reviewprefs>HotCRP/a>. Each PC, EPC, and ERC member should enter a bid for every paper. A bid (called a em>review preference/em> in HotCRP) is a combination of two things:/p>ul>li>an integer between 3 and -3, inclusive, or -100 for a conflict, which indicates how much you would like to review the paper.ul>li>3: I would really like to review this paper!/li>li>2: I would like to review this paper a lot, but it isn’t one of my absolute top favorites./li>li>1: I would like to review this paper more than average/li>li>0: I don’t care one way or the other/li>li>-1: I would like to review this paper less than average/li>li>-2: I do not want to review this paper very much at all, but doing so won’t kill me./li>li>-3: I really don’t want to review this paper!/li>/ul>/li>li>a letter (X, Y, Z) that indicates how much expertise you em>expect/em> to have concerning a paperul>li>X: I expect to be an expert reviewer for this paper. Experts should be able to understand the technical content of the paper (unless the paper is particularly poorly written) and are acutely aware of related research in the area (i.e., you have written a paper on the topic)./li>li>Y: I expect to be a more knowledgeable reviewer than most for this paper, because I generally follow the literature in this area./li>li>Z: I am an outsider. I do not expect to have any special knowledge of the topics discussed in this paper./li>/ul>/li>/ul>p>Positive numbers in your review preference mean you have greater than average desire to review the paper. Negative numbers mean you have a less than average desire to review the paper. A score of −100 means you think you have a conflict. Examples:/p>ul>li>A preference of 3X means you really want to review the paper a lot and expect to be an expert./li>li>A preference of 2Z indicates you want to review this paper somewhat less than the one you scored a 3, but you still want to review it a lot and you expect to be an outsider./li>li>A score of -3X means you really do not want to review this paper at all, but expect to be an expert on the topic./li>li>A score of 0Z means you do not care very much one way or the other whether you are assigned this paper or not, and expect to be an outsider./li>/ul>p>There are probably a number of ways to game this preference system. Please don’t try. For example, if you assign 20 papers a 3 and every other paper a -3, you won’t get those 20 and I won’t know which ones you really want or don’t want. (We will automatically check the distribution of scores, and if you do this, you will make the program chair unhappy.) I’d like everyone to be excited about the stack of papers they receive to review but naturally, I will have to balance that against the need to ensure papers have proper expertise assigned to them./p>p>When bidding, you won’t have to read the entire paper (though, of course, you are free to look at any paper in depth when bidding), so you are only estimating your expertise. If, when you review a paper, you find you have made a mistake in your estimate, that is just fine, and is bound to happen from time to time. If you find yourself downgrading your expertise from an X, we might find a paper suddenly lacking expert reviewers. In such a case, feel free to alert the PC chair. I’ll see what I can do./p>p>b>Entering bids in HotCRP:/b> There is more than one way you can enter bids in to HotCRP. One way to begin is to go the a hrefhttps://pldi16.hotcrp.com/reviewprefs>reviewer preferences page/a>. There, you will see a list that shows all submitted papers. You may enter your preferences in the text boxes here. Alternatively, you may flip through the paper pages (use keys k and j to flip forwards and backwards through the paper pages efficiently). If you go through the papers in numeric order, flip a coin first to decide whether you will go through them back to front or front to back. You may also upload preferences from a text file; see the “Download” and “Upload” links below the paper list on your review preferences page./p>p>strong>SHEPHERDING/strong>/p>p>PLDI 2016 will be shepherding em>all/em> accepted papers. Please write your reviews taking this into account. We are doing this for a variety of reasons, including improving paper quality and letting us accept papers with flaws that can easily be fixed. Shepherding will enforce that all *minor* changes requested by reviewers are incorporated in the final paper. Making this apply to all papers means that there will be no stigma attached to having a paper shepherded./p>p>This approach will let us accept papers, for example, that do not cite certain related papers that reviewers feel should be discussed. We can also require that authors address minor stylistic issues to enhance readability, so those kind of things should not be deal-breakers for acceptance./p>p>However, there is a limit to how much we can expect of the shepherding process. For example, if a paper’s evaluation is unacceptable, that is probably not something that can be salvaged during shepherding. The same is true for cases when the technical core of the paper is impenetrable./p>p>In your reviews (either in the comments to authors, the PC, or both), please feel free to point out things that will need to be addressed during shepherding./p>p>strong>FAQ/strong>/p>ol>li>Who is reviewing PC member submissions?ul>li>The new em>External Program Committee/em> will be responsible for reviewing all PC submissions./li>/ul>/li>li>What’s the role of the External Program Committee?ul>li>The External Program Committee is an innovation that was recently approved by the PLDI Steering Committee. Its aim is to guarantee an extremely high quality reviewing process by forming a committee composed of the leaders of our field. This approach is inspired by the standard practice in the systems community, where senior members of the community are invited to serve on a “light” Program Committee that reviews fewer papers (e.g., 10) than the “heavy” Program Committee and does not attend or participate in the physical meeting. In addition to providing a group of distinguished experts who can be counted upon to provide expert reviews across the areas of PLDI, the External Program Committee will review and make the decisions for all Program Committee submissions, making its job incredibly important./li>/ul>/li>li>What is the role of the ERC?ul>li>In a departure from recent PLDIs, this year the ERC will serve primarily as a stable for obtaining expert reviews as needed, and not as a load-shedding mechanism or as a means of handling PC submissions (which now are handled by the EPC). The ERC is also going to be wider than usual, including experienced senior graduate students./li>/ul>/li>li>How long should my reviews be?ul>li>You should aim for your reviews to be approximately 500 words long. HotCRP has a feature that enables searching for reviews by the number of words: you can see all of your reviews with fewer than 500 words by entering this in the search bar: “re:me:words<500”./li>/ul>/li>li>What does “expertise” mean for the purposes of reviewing?ul>li>You should enter a sentence or two explaining what your expertise level is for each paper you review. The working definition of “expert” is that you have written one or more papers on the topic – you should indicate the titles and dates. Knowledgeable means that you follow the literature on this topic but may have missed recent developments./li>/ul>/li>li>Are we doing two rounds of reviewing?ul>li>Yes. There will be two rounds, immediately followed by an author response period./li>/ul>/li>li>When will authors be unblinded?ul>li>Only em>accepted /em>papers will be unblinded to preserve the integrity of double-blind reviewing for future submissions. The author responses will also be anonymous./li>/ul>/li>li>Can I enlist a student (or trusted colleague) to work with me on reviewing a paper?ul>li>Briefly, no. In more detail: every committee member is expected to write their own, independent reviews for every paper. If you believe that having a student do an expert review of a paper would be helpful, please let me know and if it is appropriate (e.g., there are no conflicts), they can always be invited as an expert reviewers. Also, please do not distribute your assignments to anyone without vetting by the chair; because of double-blind reviewing, there may be authorship conflicts you are not aware of. Just send the chair a note. Because having students write reviews is an important part of the training process, this year we are specifically opening up the ERC to senior graduate students for this exact reason. If you do not want a student to actually submit a review but just want them to write a “test” review (one that will not actually be sent to the authors), that can also be arranged, but again, please vet this with the chair./li>/ul>/li>li>How should I avoid breaking double-blind reviewing when searching for related work? For instance, reading the cited previous paper that sounds like it is most technically similar, and finding a figure that’s identical to the paper I’m reviewing is a pretty strong indication about authorship.ul>li>Inadvertent discovery of authorship is sometimes unavoidable. Here are some ways of reducing the risk of stumbling across something and thus breaking double-blind.ul>li>Initially read the paper off-line and write a preliminary review assuming that the authors have done their homework properly (in terms of scholarship, citing previous work, etc.)./li>li>Look for related work as a matter of due diligence after writing that review, and revise if needed./li>li>To avoid accidentally unblinding the authors, don’t type the title into Google./li>/ul>/li>/ul>/li>li>How long will the author response be? Will there be a hard limit on the number of words? (I have lots of questions I’d like the authors to answer.)ul>li>The author response will only have a soft limit, but reviewers are strong>required/strong> to only read the first 600 words (roughly one page of text). Here’s the message that will be sent out to the authors.br />hr />p>em>The authors’ response should address reviewer concerns and correct misunderstandings. In particular, respond to explicit questions by reviewers. Make it short and to the point; the conference deadline has passed. Try to stay within 600 words. You may write more words but reviewers are only required to read the first 600 words, so address your key points first./em>/li>/ul>/li>/ol> div idatatags-26942-66fd746144a68>/div> script> __ATA.cmd.push(function() { __ATA.initDynamicSlot({ id: atatags-26942-66fd746144a68, location: 120, formFactor: 001, label: { text: Advertisements, }, creative: { reportAd: { text: Report this ad, }, privacySettings: { text: Privacy, } } }); }); /script>div idjp-post-flair classsharedaddy sd-like-enabled sd-sharing-enabled>div classsharedaddy sd-sharing-enabled>div classrobots-nocontent sd-block sd-social sd-social-icon-text sd-sharing>div classsd-content>ul>li classshare-email>a relnofollow noopener noreferrer data-shared classshare-email sd-button share-icon hrefmailto:?subject%5BShared%20Post%5D%20Reviewing%20Guidelines%20for%20Program%20Committee%20Members&bodyhttps%3A%2F%2Femeryblogger.com%2F2018%2F03%2F22%2Freviewing-guidelines-for-program-committee-members%2F&shareemail target_blank titleClick to email a link to a friend data-email-share-error-titleDo you have email set up? data-email-share-error-textIf you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself. data-email-share-nonce77189d7271 data-email-share-track-urlhttps://emeryblogger.com/2018/03/22/reviewing-guidelines-for-program-committee-members/?shareemail>span>Email/span>/a>/li>li classshare-print>a relnofollow noopener noreferrer data-shared classshare-print sd-button share-icon hrefhttps://emeryblogger.com/2018/03/22/reviewing-guidelines-for-program-committee-members/ target_blank titleClick to print >span>Print/span>/a>/li>li classshare-facebook>a relnofollow noopener noreferrer data-sharedsharing-facebook-519 classshare-facebook sd-button share-icon hrefhttps://emeryblogger.com/2018/03/22/reviewing-guidelines-for-program-committee-members/?sharefacebook target_blank titleClick to share on Facebook >span>Facebook/span>/a>/li>li classshare-linkedin>a relnofollow noopener noreferrer data-sharedsharing-linkedin-519 classshare-linkedin sd-button share-icon hrefhttps://emeryblogger.com/2018/03/22/reviewing-guidelines-for-program-committee-members/?sharelinkedin target_blank titleClick to share on LinkedIn >span>LinkedIn/span>/a>/li>li classshare-twitter>a relnofollow noopener noreferrer data-sharedsharing-twitter-519 classshare-twitter sd-button share-icon hrefhttps://emeryblogger.com/2018/03/22/reviewing-guidelines-for-program-committee-members/?sharetwitter target_blank titleClick to share on Twitter >span>Twitter/span>/a>/li>li classshare-end>/li>/ul>/div>/div>/div>div classsharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded idlike-post-wrapper-9784426-519-66fd746145574 data-src//widgets.wp.com/likes/index.html?ver20241002#blog_id9784426&post_id519&originemeryblogger.wordpress.com&obj_id9784426-519-66fd746145574&domainemeryblogger.com data-namelike-post-frame-9784426-519-66fd746145574 data-titleLike or Reblog>div classlikes-widget-placeholder post-likes-widget-placeholder styleheight: 55px;>span classbutton>span>Like/span>/span> span classloading>Loading.../span>/div>span classsd-text-color>/span>a classsd-link-color>/a>/div>/div> /div>!-- .entry-content --> /article>!-- #post-519 -->article idpost-470 classpost-470 post type-post status-publish format-standard hentry category-miscellaneous> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://emeryblogger.com/category/miscellaneous/ relcategory tag>Miscellaneous/a>/span> /div> h1 classentry-title>a hrefhttps://emeryblogger.com/2016/06/08/a-guide-for-session-chairs/ relbookmark>A Guide for Session Chairs/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://emeryblogger.com/2016/06/08/a-guide-for-session-chairs/ relbookmark>time classentry-date datetime2016-06-08T00:12:26-04:00>June 8, 2016/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://emeryblogger.com/author/emeryberger/ relauthor>emeryberger/a>/span>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> p>I just sent this message as a guide to the program committee members who will be chairing sessions for PLDI 2016 (I figure it’s the first time for some of them). A few people suggested I post it, so here it is (lightly edited). Additions or other suggestions welcome./p>ul>li>strong>Find your speakers/strong> before the session begins. You will have to talk to them about some stuff – see below./li>li>Find out strong>how to pronounce their names/strong> properly./li>li>Find out istrong>f they are on the market next year/strong> – sometimes people like the advertisement that they will be graduating soon./li>li>Have them strong>check their equipment/strong> (particularly if they are using Linux…). To be on the safe side, strong>carry a spare Mac VGI dongle/strong> – speakers forget this shockingly oftenstrong>./strong> You should consider writing your name on it in Sharpie (or do what one of my students does – cover it in bright pink fingernail polish). This greatly increases the odds you will get your dongle back after the session./li>li>Before each session, strong>introduce the entire session/strong> (as in, “I am So-and-So, from Wherever University; welcome to the session on drone-based programming languages.”/li>li>Before each talk, strong>introduce each speaker/strong>. I personally recommend em>not/em> reading their title, since lots of speakers are on autopilot and will just repeat everything you said. You can instead say something like “This is Foo Bar, who will be talking about verifying clown car drivers.” In fact, come to think of it, you could just say that for every talk./li>li>strong>Keep track of time/strong>. For PLDI this year, speakers get 25 minutes, and then there are 5 minutes for questions. If you have an iPad, a hrefhttps://itunes.apple.com/us/app/presentation-clock/id391324914?mt8>there’s an app I have used/a> to display time to speakers (big giant numbers, you can set it to change colors when you hit 5 min or 1 min till the end). You can of course always go old school and hold up a sheet of paper indicating when time is drawing near. I recommend doing this when there are 5 minutes left and 1 minute left. Let the speakers know you will be doing this./li>li>When the speaker is done, if it hasn’t happened already,strong> make sure /strong>strong>everyone applauds/strong> by saying “Let’s thank our speaker” and start applauding. Then strong>strong>open the floor to questions.br />/strong>/strong>/li>li>strong>COME PREPARED WITH A QUESTION./strong> The worst thing ever is when the talk del>is a /del>del>disaster/del> does not go well and no one has any questions for the speaker, and then: <crickets>. Read over each paper so you have at least a couple of questions planned for this eventuality. Hopefully it won’t come to this and em>someone /em>will ask em>something/em>, but it happens sometimes, and it’s great if you can save the day. It’s still a good idea to ask a question or two in case there are very few questions from the audience./li>li>Make sure people who ask questions strong>use the mic/strong> and strong>state their name and affiliation/strong>./li>li>You may also have to strong>clarify the question/strong> for the speaker, repeat the question, etc. Understanding questioners can occasionally be a challenge for non-native English speakers: it’s a stressful time, and the questioners may have unfamiliar accents, etc. strong>Be prepared to give the speaker a helping hand/strong>./li>li>strong>Be prepared to cut off a questioner/strong>. YOU ARE IN CHARGE OF THE SESSION. If a questioner won’t give up the mic and keeps asking questions and is burning time, rambling, etc., you are empowered to move on to the next questioner (e.g., by suggesting “how about we take this off-line”)./li>li>Hopefully this won’t be an issue you will have to deal with, but strong>questioners who are belligerent or insulting must not be tolerated/strong>. Cut them off and report them to the program chair (me) or the general chair. I sincerely hope and expect that this will not happen, but I want you to realize you are empowered to take action immediately. You can read over a hrefhttp://www.sigplan.org/Resources/Policies/CodeOfConduct/>SIGPLAN’s non-harassment policy here/a>, which is based on ACM’s: a hrefhttp://www.sigplan.org/Resources/Policies/CodeOfConduct/>http://www.sigplan.org/Resources/Policies/CodeOfConduct//a>./li>li>To make sure things run smoothly, strong>have the next speaker on deck/strong> with their laptop a minute or so before question times end. Ideally, they will be setting up while the current speaker is wrapping up questions./li>li>Finally, when questions are over, say “Let’s thank our speaker again” strong>and applaud./strong>/li>li>At the end of the session, strong>tell everyone what’s next/strong> (e.g., “next is lunch, and talks will resume at 1:30pm”)./li>/ul>p>And thanks again to all the session chairs for volunteering!/p>p> /p>div idatatags-370373-66fd746145e96> script typetext/javascript> __ATA.cmd.push(function() { __ATA.initVideoSlot(atatags-370373-66fd746145e96, { sectionId: 370373, format: inread }); }); /script> /div>div idjp-post-flair classsharedaddy sd-like-enabled sd-sharing-enabled>div classsharedaddy sd-sharing-enabled>div classrobots-nocontent sd-block sd-social sd-social-icon-text sd-sharing>div classsd-content>ul>li classshare-email>a relnofollow noopener noreferrer data-shared classshare-email sd-button share-icon hrefmailto:?subject%5BShared%20Post%5D%20A%20Guide%20for%20Session%20Chairs&bodyhttps%3A%2F%2Femeryblogger.com%2F2016%2F06%2F08%2Fa-guide-for-session-chairs%2F&shareemail target_blank titleClick to email a link to a friend data-email-share-error-titleDo you have email set up? data-email-share-error-textIf you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself. data-email-share-nonce22f2191893 data-email-share-track-urlhttps://emeryblogger.com/2016/06/08/a-guide-for-session-chairs/?shareemail>span>Email/span>/a>/li>li classshare-print>a relnofollow noopener noreferrer data-shared classshare-print sd-button share-icon hrefhttps://emeryblogger.com/2016/06/08/a-guide-for-session-chairs/ target_blank titleClick to print >span>Print/span>/a>/li>li classshare-facebook>a relnofollow noopener noreferrer data-sharedsharing-facebook-470 classshare-facebook sd-button share-icon hrefhttps://emeryblogger.com/2016/06/08/a-guide-for-session-chairs/?sharefacebook target_blank titleClick to share on Facebook >span>Facebook/span>/a>/li>li classshare-linkedin>a relnofollow noopener noreferrer data-sharedsharing-linkedin-470 classshare-linkedin sd-button share-icon hrefhttps://emeryblogger.com/2016/06/08/a-guide-for-session-chairs/?sharelinkedin target_blank titleClick to share on LinkedIn >span>LinkedIn/span>/a>/li>li classshare-twitter>a relnofollow noopener noreferrer data-sharedsharing-twitter-470 classshare-twitter sd-button share-icon hrefhttps://emeryblogger.com/2016/06/08/a-guide-for-session-chairs/?sharetwitter target_blank titleClick to share on Twitter >span>Twitter/span>/a>/li>li classshare-end>/li>/ul>/div>/div>/div>div classsharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded idlike-post-wrapper-9784426-470-66fd746146615 data-src//widgets.wp.com/likes/index.html?ver20241002#blog_id9784426&post_id470&originemeryblogger.wordpress.com&obj_id9784426-470-66fd746146615&domainemeryblogger.com data-namelike-post-frame-9784426-470-66fd746146615 data-titleLike or Reblog>div classlikes-widget-placeholder post-likes-widget-placeholder styleheight: 55px;>span classbutton>span>Like/span>/span> span classloading>Loading.../span>/div>span classsd-text-color>/span>a classsd-link-color>/a>/div>/div> /div>!-- .entry-content --> /article>!-- #post-470 -->article idpost-467 classpost-467 post type-post status-publish format-standard hentry category-miscellaneous> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://emeryblogger.com/category/miscellaneous/ relcategory tag>Miscellaneous/a>/span> /div> h1 classentry-title>a hrefhttps://emeryblogger.com/2015/10/14/coz-finding-code-that-counts-with-causal-profiling/ relbookmark>Coz: Finding code that counts with causal profiling/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://emeryblogger.com/2015/10/14/coz-finding-code-that-counts-with-causal-profiling/ relbookmark>time classentry-date datetime2015-10-14T20:20:57-04:00>October 14, 2015/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://emeryblogger.com/author/emeryberger/ relauthor>emeryberger/a>/span>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> div classwpcom-reblog-snapshot>div classreblogger-note>div classreblogger-note-content>blockquote>p>Nice summary of Coz./p>/blockquote>/div>/div>div classreblog-post>p classreblog-from>img alt srchttps://0.gravatar.com/avatar/3a354cf7a8268ff825f87b3c13e24831e4d773c637ee1a81895ed8e861fa8f1d?s32&dhttps%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&rG classavatar avatar-32 height32 width32 loadinglazy />a hrefhttp://blog.acolyer.org/2015/10/14/coz-finding-code-that-counts-with-causal-profling>the morning paper/a>/p>div classreblogged-content>p>a hrefhttp://www.sigops.org/sosp/sosp15/current/2015-Monterey/printable/090-curtsinger.pdf>Coz: Finding code that counts with causal profiling/a> – Curtsinger & Berger 2015/p>p>em>update: fixed typo in paper title/em>/p>p>Sticking to the theme of ‘understanding what our systems are doing,’ but focusing on a single process, Coz is a em>causal/em> profiler. In essence, it makes the output of a profiler much more useful to you by showing you where optimisations would genuinely have a beneficial effect (which doesn’t always equate with the places programs spend the most time). Interestingly, it can also show you places where locally optimising performance will actually em>slow down/em> the overall system. That might sound counter-intuitive: the a hrefhttp://blog.acolyer.org/2015/04/29/applying-the-universal-scalability-law-to-organisations/>Universal Scalability Law/a> gives us some clues as to why this might be. The understanding gained from finding such locations is also very useful in optimising the application overall./p>blockquote>p> Conventional profilers rank code by its contribution to total execution time. Prominent examples include oprofile, perf, and gprof. Unfortunately, even…/p>/blockquote>/div>p classreblog-source>a hrefhttp://blog.acolyer.org/2015/10/14/coz-finding-code-that-counts-with-causal-profling>View original post/a> span classmore-words>1,647 more words/span>/p>/div>/div>div idjp-post-flair classsharedaddy sd-like-enabled sd-sharing-enabled>div classsharedaddy sd-sharing-enabled>div classrobots-nocontent sd-block sd-social sd-social-icon-text sd-sharing>div classsd-content>ul>li classshare-email>a relnofollow noopener noreferrer data-shared classshare-email sd-button share-icon hrefmailto:?subject%5BShared%20Post%5D%20Coz%3A%20Finding%20code%20that%20counts%20with%20causal%20profiling&bodyhttps%3A%2F%2Femeryblogger.com%2F2015%2F10%2F14%2Fcoz-finding-code-that-counts-with-causal-profiling%2F&shareemail target_blank titleClick to email a link to a friend data-email-share-error-titleDo you have email set up? data-email-share-error-textIf you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself. data-email-share-nonceb74c385605 data-email-share-track-urlhttps://emeryblogger.com/2015/10/14/coz-finding-code-that-counts-with-causal-profiling/?shareemail>span>Email/span>/a>/li>li classshare-print>a relnofollow noopener noreferrer data-shared classshare-print sd-button share-icon hrefhttps://emeryblogger.com/2015/10/14/coz-finding-code-that-counts-with-causal-profiling/ target_blank titleClick to print >span>Print/span>/a>/li>li classshare-facebook>a relnofollow noopener noreferrer data-sharedsharing-facebook-467 classshare-facebook sd-button share-icon hrefhttps://emeryblogger.com/2015/10/14/coz-finding-code-that-counts-with-causal-profiling/?sharefacebook target_blank titleClick to share on Facebook >span>Facebook/span>/a>/li>li classshare-linkedin>a relnofollow noopener noreferrer data-sharedsharing-linkedin-467 classshare-linkedin sd-button share-icon hrefhttps://emeryblogger.com/2015/10/14/coz-finding-code-that-counts-with-causal-profiling/?sharelinkedin target_blank titleClick to share on LinkedIn >span>LinkedIn/span>/a>/li>li classshare-twitter>a relnofollow noopener noreferrer data-sharedsharing-twitter-467 classshare-twitter sd-button share-icon hrefhttps://emeryblogger.com/2015/10/14/coz-finding-code-that-counts-with-causal-profiling/?sharetwitter target_blank titleClick to share on Twitter >span>Twitter/span>/a>/li>li classshare-end>/li>/ul>/div>/div>/div>div classsharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded idlike-post-wrapper-9784426-467-66fd746149624 data-src//widgets.wp.com/likes/index.html?ver20241002#blog_id9784426&post_id467&originemeryblogger.wordpress.com&obj_id9784426-467-66fd746149624&domainemeryblogger.com data-namelike-post-frame-9784426-467-66fd746149624 data-titleLike or Reblog>div classlikes-widget-placeholder post-likes-widget-placeholder styleheight: 55px;>span classbutton>span>Like/span>/span> span classloading>Loading.../span>/div>span classsd-text-color>/span>a classsd-link-color>/a>/div>/div> /div>!-- .entry-content --> /article>!-- #post-467 -->article idpost-461 classpost-461 post type-post status-publish format-standard has-post-thumbnail hentry category-javascript category-programming-languages> a classpost-thumbnail hrefhttps://emeryblogger.com/2014/11/15/doppio-selected-as-sigplan-research-highlight/ aria-hiddentrue> img width640 height427 srchttps://emeryblogger.com/wp-content/uploads/2014/11/espresso.jpg?w640&h427&crop1 classattachment-twentyfourteen-full-width size-twentyfourteen-full-width wp-post-image alt decodingasync data-attachment-id463 data-permalinkhttps://emeryblogger.com/2014/11/15/doppio-selected-as-sigplan-research-highlight/espresso/ data-orig-filehttps://emeryblogger.com/wp-content/uploads/2014/11/espresso.jpg data-orig-size640,427 data-comments-opened0 data-image-meta{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"} data-image-titleespresso data-image-description data-image-caption data-medium-filehttps://emeryblogger.com/wp-content/uploads/2014/11/espresso.jpg?w300 data-large-filehttps://emeryblogger.com/wp-content/uploads/2014/11/espresso.jpg?w474 tabindex0 rolebutton /> /a> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://emeryblogger.com/category/javascript/ relcategory tag>JavaScript/a>, a hrefhttps://emeryblogger.com/category/programming-languages/ relcategory tag>Programming Languages/a>/span> /div> h1 classentry-title>a hrefhttps://emeryblogger.com/2014/11/15/doppio-selected-as-sigplan-research-highlight/ relbookmark>Doppio Selected as SIGPLAN Research Highlight/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://emeryblogger.com/2014/11/15/doppio-selected-as-sigplan-research-highlight/ relbookmark>time classentry-date datetime2014-11-15T18:04:52-04:00>November 15, 2014/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://emeryblogger.com/author/emeryberger/ relauthor>emeryberger/a>/span>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> p>Doppio, our work on making it possible to run general-purpose applications inside the browser, recently won two awards. At PLDI, it received the a hrefhttp://pldi14-aec.cs.brown.edu/>strong>Distinguished Artifact Award/strong>/a>. SIGPLAN, the Special Interest Group of ACM that focuses on Programming Languages, just selected Doppio as a a hrefhttp://www.sigplan.org/Newsletters/CACM/Papers/>strong>Research Highlight/strong>/a>. These papers are chosen by a board from across the PL community; SIGPLAN highlights are also recommended for consideration for the a hrefhttp://cacm.acm.org/>CACM/a> Research Highlights section./p>p>Below is the citation. IMHO John did an extraordinary job on the paper and the system, and I am glad to see that the community agrees!/p>blockquote>p>Title: a hrefhttp://dl.acm.org/citation.cfm?id2594293>Doppio: Breaking the Browser Language Barrier/a>br />Authors: John Vilk, Emery Berger, University of Massachusettsbr />Venue: PLDI 2014/p>/blockquote>p>em>The authors build a JavaScript-based framework, Doppio, in which unmodified programs can be executed within a web browser. They do this by creating a runtime environment in JavaScript that supports basic services such as sockets, threading, and a filesystem that are not otherwise supported within the browser. The authors demonstrate the framework by implementing an in-browser JVM and an in-browser runtime for C++. The paper is an engineering tour de force. The paper should appeal to a wide audience because of the ubiquity of the browser (and thus the utility of their systems), and because it is broad in scope./em>/p>div idjp-post-flair classsharedaddy sd-like-enabled sd-sharing-enabled>div classsharedaddy sd-sharing-enabled>div classrobots-nocontent sd-block sd-social sd-social-icon-text sd-sharing>div classsd-content>ul>li classshare-email>a relnofollow noopener noreferrer data-shared classshare-email sd-button share-icon hrefmailto:?subject%5BShared%20Post%5D%20Doppio%20Selected%20as%20SIGPLAN%20Research%20Highlight&bodyhttps%3A%2F%2Femeryblogger.com%2F2014%2F11%2F15%2Fdoppio-selected-as-sigplan-research-highlight%2F&shareemail target_blank titleClick to email a link to a friend data-email-share-error-titleDo you have email set up? data-email-share-error-textIf you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself. data-email-share-noncee9a68e57dd data-email-share-track-urlhttps://emeryblogger.com/2014/11/15/doppio-selected-as-sigplan-research-highlight/?shareemail>span>Email/span>/a>/li>li classshare-print>a relnofollow noopener noreferrer data-shared classshare-print sd-button share-icon hrefhttps://emeryblogger.com/2014/11/15/doppio-selected-as-sigplan-research-highlight/ target_blank titleClick to print >span>Print/span>/a>/li>li classshare-facebook>a relnofollow noopener noreferrer data-sharedsharing-facebook-461 classshare-facebook sd-button share-icon hrefhttps://emeryblogger.com/2014/11/15/doppio-selected-as-sigplan-research-highlight/?sharefacebook target_blank titleClick to share on Facebook >span>Facebook/span>/a>/li>li classshare-linkedin>a relnofollow noopener noreferrer data-sharedsharing-linkedin-461 classshare-linkedin sd-button share-icon hrefhttps://emeryblogger.com/2014/11/15/doppio-selected-as-sigplan-research-highlight/?sharelinkedin target_blank titleClick to share on LinkedIn >span>LinkedIn/span>/a>/li>li classshare-twitter>a relnofollow noopener noreferrer data-sharedsharing-twitter-461 classshare-twitter sd-button share-icon hrefhttps://emeryblogger.com/2014/11/15/doppio-selected-as-sigplan-research-highlight/?sharetwitter target_blank titleClick to share on Twitter >span>Twitter/span>/a>/li>li classshare-end>/li>/ul>/div>/div>/div>div classsharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded idlike-post-wrapper-9784426-461-66fd74614b187 data-src//widgets.wp.com/likes/index.html?ver20241002#blog_id9784426&post_id461&originemeryblogger.wordpress.com&obj_id9784426-461-66fd74614b187&domainemeryblogger.com data-namelike-post-frame-9784426-461-66fd74614b187 data-titleLike or Reblog>div classlikes-widget-placeholder post-likes-widget-placeholder styleheight: 55px;>span classbutton>span>Like/span>/span> span classloading>Loading.../span>/div>span classsd-text-color>/span>a classsd-link-color>/a>/div>/div> /div>!-- .entry-content --> /article>!-- #post-461 -->article idpost-419 classpost-419 post type-post status-publish format-standard has-post-thumbnail hentry category-academia category-miscellaneous> a classpost-thumbnail hrefhttps://emeryblogger.com/2014/08/31/washington-post-take-down-this-article/ aria-hiddentrue> img width1009 height157 srchttps://emeryblogger.com/wp-content/uploads/2014/08/wapo.png?w1009&h157&crop1 classattachment-twentyfourteen-full-width size-twentyfourteen-full-width wp-post-image alt decodingasync data-attachment-id427 data-permalinkhttps://emeryblogger.com/wapo/ data-orig-filehttps://emeryblogger.com/wp-content/uploads/2014/08/wapo.png data-orig-size1009,157 data-comments-opened1 data-image-meta{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"} data-image-titleWaPo data-image-description data-image-caption data-medium-filehttps://emeryblogger.com/wp-content/uploads/2014/08/wapo.png?w300 data-large-filehttps://emeryblogger.com/wp-content/uploads/2014/08/wapo.png?w474 tabindex0 rolebutton /> /a> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://emeryblogger.com/category/academia/ relcategory tag>Academia/a>, a hrefhttps://emeryblogger.com/category/miscellaneous/ relcategory tag>Miscellaneous/a>/span> /div> h1 classentry-title>a hrefhttps://emeryblogger.com/2014/08/31/washington-post-take-down-this-article/ relbookmark>Washington Post, Take Down This Article!/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://emeryblogger.com/2014/08/31/washington-post-take-down-this-article/ relbookmark>time classentry-date datetime2014-08-31T11:44:42-04:00>August 31, 2014/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://emeryblogger.com/author/emeryberger/ relauthor>emeryberger/a>/span>/span> span classcomments-link>a hrefhttps://emeryblogger.com/2014/08/31/washington-post-take-down-this-article/#comments>1 Comment/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> p>img data-attachment-id427 data-permalinkhttps://emeryblogger.com/wapo/ data-orig-filehttps://emeryblogger.com/wp-content/uploads/2014/08/wapo.png data-orig-size1009,157 data-comments-opened1 data-image-meta{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"} data-image-titleWaPo data-image-description data-image-caption data-medium-filehttps://emeryblogger.com/wp-content/uploads/2014/08/wapo.png?w300 data-large-filehttps://emeryblogger.com/wp-content/uploads/2014/08/wapo.png?w474 tabindex0 rolebutton classalignnone size-full wp-image-427 srchttps://emeryblogger.com/wp-content/uploads/2014/08/wapo.png?w474 altWaPo srcsethttps://emeryblogger.com/wp-content/uploads/2014/08/wapo.png?w656&h102 656w, https://emeryblogger.com/wp-content/uploads/2014/08/wapo.png?w150&h23 150w, https://emeryblogger.com/wp-content/uploads/2014/08/wapo.png?w300&h47 300w, https://emeryblogger.com/wp-content/uploads/2014/08/wapo.png?w768&h120 768w, https://emeryblogger.com/wp-content/uploads/2014/08/wapo.png 1009w sizes(max-width: 660px) 100vw, 660px />/p>p>The Washington Post just published an article from a kid claiming he graduated at the top of his class at Penn State in Computer Science a hrefhttp://www.washingtonpost.com/posteverything/wp/2014/08/27/i-studied-engineering-not-english-i-still-cant-find-a-job/>but couldn’t find a job/a>. But his description of Computer Science classes is completely disconnected from reality. Turnspan classtext_exposed_show>s out, he graduated with a degree in Management Information Systems (a business degree) and not from the Penn State any reasonable person would assume, but rather a satellite campus. All this info is right a hrefhttps://www.linkedin.com/pub/casey-ark/23/194/668>on the dude’s own LinkedIn page/a> and a a hrefhttp://bit.ly/CaseyArkOriginalArticle>previous version of the article/a> from Sept. 2013. /span>strong>Washington Post, Take Down This Article!/strong>/p>p>span classtext_exposed_show>This was initially publicly posted on Facebook here:br /> /span>a hrefhttps://www.facebook.com/EmeryBerger/posts/10102236661609092 relnofollow>https://www.facebook.com/EmeryBerger/posts/10102236661609092/a>/p>hr />p>em>Update – I wrote a Letter to the Editor of the Washington Post. They did not choose to print it, though they did partially correct the article./em>/p>p> /p>p>Dear Editor:/p>p>A recent op-ed article by Casey Ark (“I studied computer science, not English. I still can’t find a job.”, August 31) is deceptive and misleading. Ark says he graduated at the top of his class at Penn State in Computer Science but found himself unable to find a job. All of these claims are false. An accurate headline would read “I studied business, not English. I had job opportunities, but I turned them down.”/p>p>Ark’s descriptions of his class experiences — non-rigorous, memorization-based, and non-technical — sound nothing like a Computer Science degree, and here’s why. A visit to his LinkedIn page (a hrefhttps://www.linkedin.com/pub/casey-ark/23/194/668 relnofollow>https://www.linkedin.com/pub/casey-ark/23/194/668/a>) shows that he graduated with a degree in Management Information Systems, a non-technical business degree that has little to do with Computer Science and is decidedly not a STEM (Science, Technology, Engineering, and Math) field./p>p>Ark also fails to mention that he attended a satellite campus rather than the more prestigious flagship University Park campus of Penn State, a fact included in an earlier version of this article that appeared on PennLive in September 2013br />(a hrefhttp://www.pennlive.com/opinion/index.ssf/2013/09/heres_why_why_more_and_more_college_grads_are_tossing_aside_their_resumes_and_embracing_entrepreneur.html relnofollow>http://www.pennlive.com/opinion/index.ssf/2013/09/heres_why_why_more_and_more_college_grads_are_tossing_aside_their_resumes_and_embracing_entrepreneur.html/a>). Regardless of its quality, leaving out the location leads readers to believe he graduated from the main campus./p>p>In this earlier article, Ark describes having chosen to not take two entry-level job options, but instead deciding to become an entrepreneur./p>p>I am surprised and chagrined that this op-ed made it through whatever fact-checking mechanisms exist at Washington Post, when a few moments with Google sufficed to discredit the central claims of the article./p>p>Professor Emery Bergerbr />School of Computer Sciencebr />University of Massachusetts Amherst/p>p>strong>em>ADDITIONAL SIGNATURES/em>/strong>/p>p>Professor Stephen A. Edwardsbr />Department of Computer Sciencebr />Columbia University in the City of New York/p>p>Asst. Professor Brandon Luciabr />Department of Electrical and Computer Engineeringbr />Carnegie Mellon University/p>p>Associate Professor Daniel A. Jiménezbr />Department of Computer Science & Engineeringbr />Texas A&M University/p>p>Assistant Professor David Van Hornbr />Department of Computer Sciencebr />University of Maryland, College Park/p>p>Assistant Professor Santosh Nagarakattebr />Department of Computer Sciencebr />Rutgers, The State University of New Jersey, New Brunswick/p>p>Assistant Professor Swarat Chaudhuribr />Department of Computer Sciencebr />Rice University/p>p>Associate Professor Dan Grossmanbr />Department of Computer Science & Engineeringbr />University of Washington/p>p>Professor Michael Hicks (B.S. Computer Science, Penn State ‘93)br />Department of Computer Sciencebr />University of Maryland/p>p>span>Associate Professor Matthew Hertz/span>br />span>Department of Computer Science/span>br />span>Canisius College/span>/p>p>span>Associate Professor Landon Cox/span>br />span>Department of Computer Science/span>br />span>Duke University/span>/p>p>span>Associate Professor Benjamin Liblit (B.S. Computer Science, Penn State ‘93)/span>br />span>Department of Computer Sciences/span>br />span>University of Wisconsin–Madison/span>/p>p>span>Associate Professor John Regehr/span>br />span>School of Computing/span>br />span>University of Utah/span>/p>p>span>Professor Jeff Foster/span>br />span>Department of Computer Science/span>br />span>University of Maryland, College Park/span>/p>p>span>Kaushik Veeraraghavan/span>br />span>Facebook/span>/p>hr />p>Some comments from the Facebook thread posted by my fellow Computer Science colleagues:/p>blockquote>p>a idjs_43 classUFICommentActorName _5f0v hrefhttps://www.facebook.com/daniel.angel.jimenez?frefufi>Daniel Ángel Jiménez/a> span classUFICommentBody>This kind of garbage causes lots of confusion. At my last job, almost all of the complaints from local industry about our CS graduates turned out to actually be about morons from the business school./span>/p>p>a classUFICommentActorName hrefhttps://www.facebook.com/shriram.krishnamurthi?frefufi>Shriram Krishnamurthi/a> span classUFICommentBody>“Correction: An earlier version of this story’s headline misidentified what the author studied. It has been corrected.” They changed “engineering” to “computer science”. Thanks, WaPo!/span>/p>p>a classUFICommentActorName hrefhttps://www.facebook.com/rob.ennals?frefufi>Rob Ennals/a> span classUFICommentBody>It seems that whenever I read a media article about something I actually know about, there is something fundamentally wrong with their understanding of the situation. This makes me worry about the accuracy of the information I’m getting about things I’m not knowledgable about./span>/p>p>a idjs_49 classUFICommentActorName hrefhttps://www.facebook.com/EmeryBerger?frefufi>Emery Berger/a> span classUFICommentBody>He laments “they’re looking for employees who can actually do things – like build iPhone apps…. I wish I’d been taught how to do those things in school, but my college had something different in mind.”/span>/p>p>PSU offers CMPSC 475, WHICH TEACHES iOS PROGRAMMING.br /> a class hrefhttp://bulletins.psu.edu/undergrad/courses/C/CMPSC/475/201314SP target_blank relnofollow>http://bulletins.psu.edu/und…/courses/C/CMPSC/475/201314SP/a>/p>p>a classUFICommentActorName hrefhttps://www.facebook.com/taoxiease?frefufi>Tao Xie/a> span classUFICommentBody>Another very important piece of information (from the original earlier post: a class hrefhttp://www.pennlive.com/opinion/index.ssf/2013/09/heres_why_why_more_and_more_college_grads_are_tossing_aside_their_resumes_and_embracing_entrepreneur.html target_blank relnofollow>http://www.pennlive.com/…/heres_why_why_more_and_more…/a>), “When I graduated from PSU’s Harrisburg campus in May, ….” This kid graduated from PSU Harrisburg Campus, **NOT** the State College campus!! There are 24 campuses of PSU (a class hrefhttp://www.psu.edu/academics/campuses target_blank relnofollow>http://www.psu.edu/academics/campuses/a>). Note that the Washington Post article (carefully?) “rephrased” the above quoted sentence to be “When I graduated from Penn State a year ago, …” smh../span>/p>p>a idjs_54 classUFICommentActorName _5f0v hrefhttps://www.facebook.com/stephen70edwards?frefufi>Stephen A. Edwards/a> span classUFICommentBody>Breathtaking naivete on display in this column. I have no idea what he was studying: any CS graduate shouldn’t have any idea about the difference between advertising and marketing. His lament about all the programming languages and tools I learned were years out of date is also laughable. Of course they’re out of date: everything in CS is more-or-less instantly. The thing is to make sure you understand the basic concepts so you can learn the new stuff faster. But I really got a chuckle about his suggestion that we be more lax about academic standards and hire better businesspeople. Absolutely that will improve the quality of your education, no question./span>/p>/blockquote>div idjp-post-flair classsharedaddy sd-like-enabled sd-sharing-enabled>div classsharedaddy sd-sharing-enabled>div classrobots-nocontent sd-block sd-social sd-social-icon-text sd-sharing>div classsd-content>ul>li classshare-email>a relnofollow noopener noreferrer data-shared classshare-email sd-button share-icon hrefmailto:?subject%5BShared%20Post%5D%20Washington%20Post%2C%20Take%20Down%20This%20Article%21&bodyhttps%3A%2F%2Femeryblogger.com%2F2014%2F08%2F31%2Fwashington-post-take-down-this-article%2F&shareemail target_blank titleClick to email a link to a friend data-email-share-error-titleDo you have email set up? data-email-share-error-textIf you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself. data-email-share-noncef586d03c15 data-email-share-track-urlhttps://emeryblogger.com/2014/08/31/washington-post-take-down-this-article/?shareemail>span>Email/span>/a>/li>li classshare-print>a relnofollow noopener noreferrer data-shared classshare-print sd-button share-icon hrefhttps://emeryblogger.com/2014/08/31/washington-post-take-down-this-article/ target_blank titleClick to print >span>Print/span>/a>/li>li classshare-facebook>a relnofollow noopener noreferrer data-sharedsharing-facebook-419 classshare-facebook sd-button share-icon hrefhttps://emeryblogger.com/2014/08/31/washington-post-take-down-this-article/?sharefacebook target_blank titleClick to share on Facebook >span>Facebook/span>/a>/li>li classshare-linkedin>a relnofollow noopener noreferrer data-sharedsharing-linkedin-419 classshare-linkedin sd-button share-icon hrefhttps://emeryblogger.com/2014/08/31/washington-post-take-down-this-article/?sharelinkedin target_blank titleClick to share on LinkedIn >span>LinkedIn/span>/a>/li>li classshare-twitter>a relnofollow noopener noreferrer data-sharedsharing-twitter-419 classshare-twitter sd-button share-icon hrefhttps://emeryblogger.com/2014/08/31/washington-post-take-down-this-article/?sharetwitter target_blank titleClick to share on Twitter >span>Twitter/span>/a>/li>li classshare-end>/li>/ul>/div>/div>/div>div classsharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded idlike-post-wrapper-9784426-419-66fd74614d5cc data-src//widgets.wp.com/likes/index.html?ver20241002#blog_id9784426&post_id419&originemeryblogger.wordpress.com&obj_id9784426-419-66fd74614d5cc&domainemeryblogger.com data-namelike-post-frame-9784426-419-66fd74614d5cc data-titleLike or Reblog>div classlikes-widget-placeholder post-likes-widget-placeholder styleheight: 55px;>span classbutton>span>Like/span>/span> span classloading>Loading.../span>/div>span classsd-text-color>/span>a classsd-link-color>/a>/div>/div> /div>!-- .entry-content --> /article>!-- #post-419 -->article idpost-285 classpost-285 post type-post status-publish format-standard has-post-thumbnail hentry category-crowdsourcing category-programming-languages> a classpost-thumbnail hrefhttps://emeryblogger.com/2012/12/06/new-scientist-coverage-of-our-automan-project/ aria-hiddentrue> img width300 height229 srchttps://emeryblogger.com/wp-content/uploads/2012/12/mg21628945-500-1_300.jpg?w300&h229&crop1 classattachment-twentyfourteen-full-width size-twentyfourteen-full-width wp-post-image alt decodingasync loadinglazy data-attachment-id299 data-permalinkhttps://emeryblogger.com/2012/12/06/new-scientist-coverage-of-our-automan-project/mg21628945-500-1_300/ data-orig-filehttps://emeryblogger.com/wp-content/uploads/2012/12/mg21628945-500-1_300.jpg data-orig-size300,229 data-comments-opened1 data-image-meta{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":""} data-image-titlemg21628945.500-1_300 data-image-description data-image-caption data-medium-filehttps://emeryblogger.com/wp-content/uploads/2012/12/mg21628945-500-1_300.jpg?w300 data-large-filehttps://emeryblogger.com/wp-content/uploads/2012/12/mg21628945-500-1_300.jpg?w300 tabindex0 rolebutton /> /a> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://emeryblogger.com/category/crowdsourcing/ relcategory tag>Crowdsourcing/a>, a hrefhttps://emeryblogger.com/category/programming-languages/ relcategory tag>Programming Languages/a>/span> /div> h1 classentry-title>a hrefhttps://emeryblogger.com/2012/12/06/new-scientist-coverage-of-our-automan-project/ relbookmark>New Scientist coverage of our AutoMan project/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://emeryblogger.com/2012/12/06/new-scientist-coverage-of-our-automan-project/ relbookmark>time classentry-date datetime2012-12-06T14:19:35-04:00>December 6, 2012/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://emeryblogger.com/author/emeryberger/ relauthor>emeryberger/a>/span>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> p>The New Scientist has ja hrefhttp://www.newscientist.com/article/mg21628945.500-your-next-boss-could-be-a-computer.html>ust published an article/a> covering our a hrefhttp://www.automan-lang.org>AutoMan/a> project, which makes it possible to em>program with people/em>. Full article below. Reasonably accurate, though it’s em>my/em> team, not Dan’s :). Also on the project are my student a hrefhttp://www.cs.umass.edu/~charlie>Charlie Curtsinger/a>, and my UMass colleague a hrefhttp://www.cs.umass.edu/~mcgregor>Andrew McGregor/a>./p>p>strong> a hrefhttps://emeryblogger.com/2012/12/06/new-scientist-coverage-of-our-automan-project/#more-285 classmore-link>Continue reading span classscreen-reader-text>New Scientist coverage of our AutoMan project/span> span classmeta-nav>→/span>/a>/strong>/p>div idjp-post-flair classsharedaddy sd-like-enabled sd-sharing-enabled>div classsharedaddy sd-sharing-enabled>div classrobots-nocontent sd-block sd-social sd-social-icon-text sd-sharing>div classsd-content>ul>li classshare-email>a relnofollow noopener noreferrer data-shared classshare-email sd-button share-icon hrefmailto:?subject%5BShared%20Post%5D%20New%20Scientist%20coverage%20of%20our%20AutoMan%20project&bodyhttps%3A%2F%2Femeryblogger.com%2F2012%2F12%2F06%2Fnew-scientist-coverage-of-our-automan-project%2F&shareemail target_blank titleClick to email a link to a friend data-email-share-error-titleDo you have email set up? data-email-share-error-textIf you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself. data-email-share-nonce1ea58d1135 data-email-share-track-urlhttps://emeryblogger.com/2012/12/06/new-scientist-coverage-of-our-automan-project/?shareemail>span>Email/span>/a>/li>li classshare-print>a relnofollow noopener noreferrer data-shared classshare-print sd-button share-icon hrefhttps://emeryblogger.com/2012/12/06/new-scientist-coverage-of-our-automan-project/ target_blank titleClick to print >span>Print/span>/a>/li>li classshare-facebook>a relnofollow noopener noreferrer data-sharedsharing-facebook-285 classshare-facebook sd-button share-icon hrefhttps://emeryblogger.com/2012/12/06/new-scientist-coverage-of-our-automan-project/?sharefacebook target_blank titleClick to share on Facebook >span>Facebook/span>/a>/li>li classshare-linkedin>a relnofollow noopener noreferrer data-sharedsharing-linkedin-285 classshare-linkedin sd-button share-icon hrefhttps://emeryblogger.com/2012/12/06/new-scientist-coverage-of-our-automan-project/?sharelinkedin target_blank titleClick to share on LinkedIn >span>LinkedIn/span>/a>/li>li classshare-twitter>a relnofollow noopener noreferrer data-sharedsharing-twitter-285 classshare-twitter sd-button share-icon hrefhttps://emeryblogger.com/2012/12/06/new-scientist-coverage-of-our-automan-project/?sharetwitter target_blank titleClick to share on Twitter >span>Twitter/span>/a>/li>li classshare-end>/li>/ul>/div>/div>/div>div classsharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded idlike-post-wrapper-9784426-285-66fd74614e8b8 data-src//widgets.wp.com/likes/index.html?ver20241002#blog_id9784426&post_id285&originemeryblogger.wordpress.com&obj_id9784426-285-66fd74614e8b8&domainemeryblogger.com data-namelike-post-frame-9784426-285-66fd74614e8b8 data-titleLike or Reblog>div classlikes-widget-placeholder post-likes-widget-placeholder styleheight: 55px;>span classbutton>span>Like/span>/span> span classloading>Loading.../span>/div>span classsd-text-color>/span>a classsd-link-color>/a>/div>/div> /div>!-- .entry-content --> /article>!-- #post-285 -->article idpost-277 classpost-277 post type-post status-publish format-link hentry category-security post_format-post-format-link> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://emeryblogger.com/category/security/ relcategory tag>Security/a>/span> /div>!-- .entry-meta --> h1 classentry-title>a hrefhttps://emeryblogger.com/2012/12/04/me-on-wgby-explaining-cyberattacks-on-banks/ relbookmark>Me on PBS, Explaining Cyberattacks on Banks/a>/h1> div classentry-meta> span classpost-format> a classentry-format hrefhttps://emeryblogger.com/type/link/>Link/a> /span> span classentry-date>a hrefhttps://emeryblogger.com/2012/12/04/me-on-wgby-explaining-cyberattacks-on-banks/ relbookmark>time classentry-date datetime2012-12-04T18:08:04-04:00>December 4, 2012/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://emeryblogger.com/author/emeryberger/ relauthor>emeryberger/a>/span>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> p>a titleMe on WGBY, Explaining Cyberattacks on Banks hrefhttp://video.wgby.org/video/2304224656>Me on PBS, Explaining Cyberattacks on Banks/a>/p>p>a hrefhttp://video.wgby.org/video/2304224656>img data-attachment-id389 data-permalinkhttps://emeryblogger.com/2012/12/04/me-on-wgby-explaining-cyberattacks-on-banks/screen-shot-2013-01-05-at-6-28-09-pm/ data-orig-filehttps://emeryblogger.com/wp-content/uploads/2012/12/screen-shot-2013-01-05-at-6-28-09-pm.png data-orig-size1280,800 data-comments-opened1 data-image-meta{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":""} data-image-titleScreen Shot 2013-01-05 at 6.28.09 PM data-image-description data-image-caption data-medium-filehttps://emeryblogger.com/wp-content/uploads/2012/12/screen-shot-2013-01-05-at-6-28-09-pm.png?w300 data-large-filehttps://emeryblogger.com/wp-content/uploads/2012/12/screen-shot-2013-01-05-at-6-28-09-pm.png?w474 tabindex0 rolebutton loadinglazy classalignright wp-image-389 altScreen Shot 2013-01-05 at 6.28.09 PM srchttps://emeryblogger.com/wp-content/uploads/2012/12/screen-shot-2013-01-05-at-6-28-09-pm.png?w282&h176 width282 height176 srcsethttps://emeryblogger.com/wp-content/uploads/2012/12/screen-shot-2013-01-05-at-6-28-09-pm.png?w282&h176 282w, https://emeryblogger.com/wp-content/uploads/2012/12/screen-shot-2013-01-05-at-6-28-09-pm.png?w564&h352 564w, https://emeryblogger.com/wp-content/uploads/2012/12/screen-shot-2013-01-05-at-6-28-09-pm.png?w150&h94 150w, https://emeryblogger.com/wp-content/uploads/2012/12/screen-shot-2013-01-05-at-6-28-09-pm.png?w300&h188 300w sizes(max-width: 282px) 100vw, 282px />/a>My latest appearance on our local PBS affiliate WGBY’s program Connecting Point, this time explaining cyberattacks on banks (not a how-to!) — first segment./p>div idjp-post-flair classsharedaddy sd-like-enabled sd-sharing-enabled>div classsharedaddy sd-sharing-enabled>div classrobots-nocontent sd-block sd-social sd-social-icon-text sd-sharing>div classsd-content>ul>li classshare-email>a relnofollow noopener noreferrer data-shared classshare-email sd-button share-icon hrefmailto:?subject%5BShared%20Post%5D%20Me%20on%20PBS%2C%20Explaining%20Cyberattacks%20on%20Banks&bodyhttps%3A%2F%2Femeryblogger.com%2F2012%2F12%2F04%2Fme-on-wgby-explaining-cyberattacks-on-banks%2F&shareemail target_blank titleClick to email a link to a friend data-email-share-error-titleDo you have email set up? data-email-share-error-textIf you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself. data-email-share-noncec02abb28be data-email-share-track-urlhttps://emeryblogger.com/2012/12/04/me-on-wgby-explaining-cyberattacks-on-banks/?shareemail>span>Email/span>/a>/li>li classshare-print>a relnofollow noopener noreferrer data-shared classshare-print sd-button share-icon hrefhttps://emeryblogger.com/2012/12/04/me-on-wgby-explaining-cyberattacks-on-banks/ target_blank titleClick to print >span>Print/span>/a>/li>li classshare-facebook>a relnofollow noopener noreferrer data-sharedsharing-facebook-277 classshare-facebook sd-button share-icon hrefhttps://emeryblogger.com/2012/12/04/me-on-wgby-explaining-cyberattacks-on-banks/?sharefacebook target_blank titleClick to share on Facebook >span>Facebook/span>/a>/li>li classshare-linkedin>a relnofollow noopener noreferrer data-sharedsharing-linkedin-277 classshare-linkedin sd-button share-icon hrefhttps://emeryblogger.com/2012/12/04/me-on-wgby-explaining-cyberattacks-on-banks/?sharelinkedin target_blank titleClick to share on LinkedIn >span>LinkedIn/span>/a>/li>li classshare-twitter>a relnofollow noopener noreferrer data-sharedsharing-twitter-277 classshare-twitter sd-button share-icon hrefhttps://emeryblogger.com/2012/12/04/me-on-wgby-explaining-cyberattacks-on-banks/?sharetwitter target_blank titleClick to share on Twitter >span>Twitter/span>/a>/li>li classshare-end>/li>/ul>/div>/div>/div>div classsharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded idlike-post-wrapper-9784426-277-66fd74615005f data-src//widgets.wp.com/likes/index.html?ver20241002#blog_id9784426&post_id277&originemeryblogger.wordpress.com&obj_id9784426-277-66fd74615005f&domainemeryblogger.com data-namelike-post-frame-9784426-277-66fd74615005f data-titleLike or Reblog>div classlikes-widget-placeholder post-likes-widget-placeholder styleheight: 55px;>span classbutton>span>Like/span>/span> span classloading>Loading.../span>/div>span classsd-text-color>/span>a classsd-link-color>/a>/div>/div> /div>!-- .entry-content --> /article>!-- #post-277 -->article idpost-269 classpost-269 post type-post status-publish format-standard has-post-thumbnail hentry category-memory-management> a classpost-thumbnail hrefhttps://emeryblogger.com/2012/10/28/most-influential-oopsla2012/ aria-hiddentrue> img width764 height576 srchttps://emeryblogger.com/wp-content/uploads/2011/12/influential-paper-oopsla.jpg?w764&h576&crop1 classattachment-twentyfourteen-full-width size-twentyfourteen-full-width wp-post-image alt decodingasync loadinglazy data-attachment-id356 data-permalinkhttps://emeryblogger.com/2011/12/25/automan/influential-paper-oopsla/ data-orig-filehttps://emeryblogger.com/wp-content/uploads/2011/12/influential-paper-oopsla.jpg data-orig-size764,1024 data-comments-opened1 data-image-meta{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":""} data-image-titleInfluential-Paper-OOPSLA data-image-description data-image-caption data-medium-filehttps://emeryblogger.com/wp-content/uploads/2011/12/influential-paper-oopsla.jpg?w224 data-large-filehttps://emeryblogger.com/wp-content/uploads/2011/12/influential-paper-oopsla.jpg?w474 tabindex0 rolebutton /> /a> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://emeryblogger.com/category/memory-management/ relcategory tag>Memory Management/a>/span> /div> h1 classentry-title>a hrefhttps://emeryblogger.com/2012/10/28/most-influential-oopsla2012/ relbookmark>Most Influential Paper of OOPSLA 2002: “Reconsidering Custom Memory Allocation”/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://emeryblogger.com/2012/10/28/most-influential-oopsla2012/ relbookmark>time classentry-date datetime2012-10-28T19:07:06-04:00>October 28, 2012/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://emeryblogger.com/author/emeryberger/ relauthor>emeryberger/a>/span>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> p>Our paper, a hrefhttp://dl.acm.org/citation.cfm?id582421>Reconsidering Custom Memory Allocation/a>, was just granted the a hrefhttp://www.sigplan.org/Awards/OOPSLA/>Most Influential OOPSLA Paper/a> award (given ten years after the paper appeared). Here’s the citation for the award.a hrefhttp://www.sigplan.org/Awards/Conferences/OOPSLA/Main>img data-attachment-id356 data-permalinkhttps://emeryblogger.com/2011/12/25/automan/influential-paper-oopsla/ data-orig-filehttps://emeryblogger.com/wp-content/uploads/2011/12/influential-paper-oopsla.jpg data-orig-size764,1024 data-comments-opened1 data-image-meta{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":""} data-image-titleInfluential-Paper-OOPSLA data-image-description data-image-caption data-medium-filehttps://emeryblogger.com/wp-content/uploads/2011/12/influential-paper-oopsla.jpg?w224 data-large-filehttps://emeryblogger.com/wp-content/uploads/2011/12/influential-paper-oopsla.jpg?w474 tabindex0 rolebutton loadinglazy classalignright wp-image-356 altInfluential-Paper-OOPSLA srchttps://emeryblogger.com/wp-content/uploads/2011/12/influential-paper-oopsla.jpg?w233&h312 width233 height312 srcsethttps://emeryblogger.com/wp-content/uploads/2011/12/influential-paper-oopsla.jpg?w233&h312 233w, https://emeryblogger.com/wp-content/uploads/2011/12/influential-paper-oopsla.jpg?w466&h624 466w, https://emeryblogger.com/wp-content/uploads/2011/12/influential-paper-oopsla.jpg?w112&h150 112w, https://emeryblogger.com/wp-content/uploads/2011/12/influential-paper-oopsla.jpg?w224&h300 224w sizes(max-width: 233px) 100vw, 233px />/a>/p>blockquote>p>em>Custom memory management is often used in systems software for the purpose of decreasing the cost of allocation and tightly controlling memory footprint of software. Until 2002, it was taken for granted that application-specific memory allocators were superior to general purpose libraries. Berger, Zorn and McKinley’s paper demonstrated through a rigorous empirical study that this assumption is not well-founded, and gave insights into the reasons why general purpose allocators can outperform handcrafted ones. The paper also stands out for the quality of its empirical methodology./em>/p>/blockquote>p>I am grateful to OOPSLA not only for the check for $333.33 :), but also for giving me the chance to publicly stand up and thank my wonderful co-authors: my excellent colleague a hrefhttp://research.microsoft.com/en-us/people/zorn/>Ben Zorn/a> and my awesome advisor, a hrefhttp://research.microsoft.com/en-us/people/mckinley/>Kathryn McKinley/a> (both now at Microsoft Research). The original paper actually did a bit more than the citation – here’s the abstract from the original paper./p>blockquote>p>em>Programmers hoping to achieve performance improvements often use custom memory allocators. This in-depth study examines eight applications that use custom allocators. Surprisingly, for six of these applications, a state-of-the-art general-purpose allocator (the Lea allocator) performs as well as or better than the custom allocators. The two exceptions use regions, which deliver higher performance (improvements of up to 44%). Regions also reduce programmer burden and eliminate a source of memory leaks. However, we show that the inability of programmers to free individual objects within regions can lead to a substantial increase in memory consumption. Worse, this limitation precludes the use of regions for common programming idioms, reducing their usefulness./em>/p>p>em>We present a generalization of general-purpose and region-based allocators that we call strong>reaps/strong>. Reaps are a combination of regions and heaps, providing a full range of region semantics with the addition of individual object deletion. We show that our implementation of reaps provides high performance, outperforming other allocators with region-like semantics. We then use a case study to demonstrate the space advantages and software engineering benefits of reaps in practice. Our results indicate that programmers needing fast regions should use reaps, and that most programmers considering custom allocators should instead use the Lea allocator./em>/p>/blockquote>p>Slight correction: they should instead use a hrefhttp://www.hoard.org>Hoard/a> :)./p>div idjp-post-flair classsharedaddy sd-like-enabled sd-sharing-enabled>div classsharedaddy sd-sharing-enabled>div classrobots-nocontent sd-block sd-social sd-social-icon-text sd-sharing>div classsd-content>ul>li classshare-email>a relnofollow noopener noreferrer data-shared classshare-email sd-button share-icon hrefmailto:?subject%5BShared%20Post%5D%20Most%20Influential%20Paper%20of%20OOPSLA%202002%3A%20%22Reconsidering%20Custom%20Memory%20Allocation%22&bodyhttps%3A%2F%2Femeryblogger.com%2F2012%2F10%2F28%2Fmost-influential-oopsla2012%2F&shareemail target_blank titleClick to email a link to a friend data-email-share-error-titleDo you have email set up? data-email-share-error-textIf you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself. data-email-share-nonce77d99e7aba data-email-share-track-urlhttps://emeryblogger.com/2012/10/28/most-influential-oopsla2012/?shareemail>span>Email/span>/a>/li>li classshare-print>a relnofollow noopener noreferrer data-shared classshare-print sd-button share-icon hrefhttps://emeryblogger.com/2012/10/28/most-influential-oopsla2012/ target_blank titleClick to print >span>Print/span>/a>/li>li classshare-facebook>a relnofollow noopener noreferrer data-sharedsharing-facebook-269 classshare-facebook sd-button share-icon hrefhttps://emeryblogger.com/2012/10/28/most-influential-oopsla2012/?sharefacebook target_blank titleClick to share on Facebook >span>Facebook/span>/a>/li>li classshare-linkedin>a relnofollow noopener noreferrer data-sharedsharing-linkedin-269 classshare-linkedin sd-button share-icon hrefhttps://emeryblogger.com/2012/10/28/most-influential-oopsla2012/?sharelinkedin target_blank titleClick to share on LinkedIn >span>LinkedIn/span>/a>/li>li classshare-twitter>a relnofollow noopener noreferrer data-sharedsharing-twitter-269 classshare-twitter sd-button share-icon hrefhttps://emeryblogger.com/2012/10/28/most-influential-oopsla2012/?sharetwitter target_blank titleClick to share on Twitter >span>Twitter/span>/a>/li>li classshare-end>/li>/ul>/div>/div>/div>div classsharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded idlike-post-wrapper-9784426-269-66fd746151999 data-src//widgets.wp.com/likes/index.html?ver20241002#blog_id9784426&post_id269&originemeryblogger.wordpress.com&obj_id9784426-269-66fd746151999&domainemeryblogger.com data-namelike-post-frame-9784426-269-66fd746151999 data-titleLike or Reblog>div classlikes-widget-placeholder post-likes-widget-placeholder styleheight: 55px;>span classbutton>span>Like/span>/span> span classloading>Loading.../span>/div>span classsd-text-color>/span>a classsd-link-color>/a>/div>/div> /div>!-- .entry-content --> /article>!-- #post-269 -->article idpost-267 classpost-267 post type-post status-publish format-standard has-post-thumbnail hentry category-concurrency category-fault-tolerance category-memory-management category-programming-languages> a classpost-thumbnail hrefhttps://emeryblogger.com/2012/07/24/acm-queue-article-software-needs-seatbelts-and-airbags/ aria-hiddentrue> img width250 height250 srchttps://emeryblogger.com/wp-content/uploads/2012/07/082012_cacmpg49_software-needs-t-large.jpg?w250&h250&crop1 classattachment-twentyfourteen-full-width size-twentyfourteen-full-width wp-post-image alt decodingasync loadinglazy data-attachment-id338 data-permalinkhttps://emeryblogger.com/2012/07/24/acm-queue-article-software-needs-seatbelts-and-airbags/082012_cacmpg49_software-needs-t-large/ data-orig-filehttps://emeryblogger.com/wp-content/uploads/2012/07/082012_cacmpg49_software-needs-t-large.jpg data-orig-size250,250 data-comments-opened1 data-image-meta{"aperture":"0","credit":"Hugh Talman","camera":"P 25","caption":"1970s Hybrid II crash test dummy (left) and 1980s Hybrid III crash test dummy (right)","created_timestamp":"1278503306","copyright":"This image was obtained from the Smithsonian Institution. The image or its contents may be protected by international copyright laws.","focal_length":"0","iso":"100","shutter_speed":"0","title":""} data-image-title082012_CACMpg49_Software-Needs-t.large data-image-description<p>1970s Hybrid II crash test dummy (left) and 1980s Hybrid III crash test dummy (right)</p> data-image-caption data-medium-filehttps://emeryblogger.com/wp-content/uploads/2012/07/082012_cacmpg49_software-needs-t-large.jpg?w250 data-large-filehttps://emeryblogger.com/wp-content/uploads/2012/07/082012_cacmpg49_software-needs-t-large.jpg?w250 tabindex0 rolebutton /> /a> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://emeryblogger.com/category/concurrency/ relcategory tag>Concurrency/a>, a hrefhttps://emeryblogger.com/category/fault-tolerance/ relcategory tag>Fault Tolerance/a>, a hrefhttps://emeryblogger.com/category/memory-management/ relcategory tag>Memory Management/a>, a hrefhttps://emeryblogger.com/category/programming-languages/ relcategory tag>Programming Languages/a>/span> /div> h1 classentry-title>a hrefhttps://emeryblogger.com/2012/07/24/acm-queue-article-software-needs-seatbelts-and-airbags/ relbookmark>ACM Queue article: “Software Needs Seatbelts and Airbags”/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://emeryblogger.com/2012/07/24/acm-queue-article-software-needs-seatbelts-and-airbags/ relbookmark>time classentry-date datetime2012-07-24T11:45:54-04:00>July 24, 2012/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://emeryblogger.com/author/emeryberger/ relauthor>emeryberger/a>/span>/span> span classcomments-link>a hrefhttps://emeryblogger.com/2012/07/24/acm-queue-article-software-needs-seatbelts-and-airbags/#comments>1 Comment/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> p>(Based on an a titleSoftware Needs Seatbelts and Airbags hrefhttps://emeryblogger.com/2012/05/31/software-needs-seatbelts-and-airbags/>earlier blog post/a>.)/p>p>ACM Queue, July 2012 – a hrefhttp://queue.acm.org/detail.cfm?id2333133>http://queue.acm.org/detail.cfm?id2333133/a>/p>h1>Software Needs Seatbelts and Airbags/h1>h2>Finding and fixing bugs in deployed software is difficult and time-consuming. Here are some alternatives./h2>div idjp-post-flair classsharedaddy sd-like-enabled sd-sharing-enabled>div classsharedaddy sd-sharing-enabled>div classrobots-nocontent sd-block sd-social sd-social-icon-text sd-sharing>div classsd-content>ul>li classshare-email>a relnofollow noopener noreferrer data-shared classshare-email sd-button share-icon hrefmailto:?subject%5BShared%20Post%5D%20ACM%20Queue%20article%3A%20%22Software%20Needs%20Seatbelts%20and%20Airbags%22&bodyhttps%3A%2F%2Femeryblogger.com%2F2012%2F07%2F24%2Facm-queue-article-software-needs-seatbelts-and-airbags%2F&shareemail target_blank titleClick to email a link to a friend data-email-share-error-titleDo you have email set up? data-email-share-error-textIf you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself. data-email-share-nonce4e5a3e6b10 data-email-share-track-urlhttps://emeryblogger.com/2012/07/24/acm-queue-article-software-needs-seatbelts-and-airbags/?shareemail>span>Email/span>/a>/li>li classshare-print>a relnofollow noopener noreferrer data-shared classshare-print sd-button share-icon hrefhttps://emeryblogger.com/2012/07/24/acm-queue-article-software-needs-seatbelts-and-airbags/ target_blank titleClick to print >span>Print/span>/a>/li>li classshare-facebook>a relnofollow noopener noreferrer data-sharedsharing-facebook-267 classshare-facebook sd-button share-icon hrefhttps://emeryblogger.com/2012/07/24/acm-queue-article-software-needs-seatbelts-and-airbags/?sharefacebook target_blank titleClick to share on Facebook >span>Facebook/span>/a>/li>li classshare-linkedin>a relnofollow noopener noreferrer data-sharedsharing-linkedin-267 classshare-linkedin sd-button share-icon hrefhttps://emeryblogger.com/2012/07/24/acm-queue-article-software-needs-seatbelts-and-airbags/?sharelinkedin target_blank titleClick to share on LinkedIn >span>LinkedIn/span>/a>/li>li classshare-twitter>a relnofollow noopener noreferrer data-sharedsharing-twitter-267 classshare-twitter sd-button share-icon hrefhttps://emeryblogger.com/2012/07/24/acm-queue-article-software-needs-seatbelts-and-airbags/?sharetwitter target_blank titleClick to share on Twitter >span>Twitter/span>/a>/li>li classshare-end>/li>/ul>/div>/div>/div>div classsharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded idlike-post-wrapper-9784426-267-66fd746152cbc data-src//widgets.wp.com/likes/index.html?ver20241002#blog_id9784426&post_id267&originemeryblogger.wordpress.com&obj_id9784426-267-66fd746152cbc&domainemeryblogger.com data-namelike-post-frame-9784426-267-66fd746152cbc data-titleLike or Reblog>div classlikes-widget-placeholder post-likes-widget-placeholder styleheight: 55px;>span classbutton>span>Like/span>/span> span classloading>Loading.../span>/div>span classsd-text-color>/span>a classsd-link-color>/a>/div>/div> /div>!-- .entry-content --> /article>!-- #post-267 -->article idpost-248 classpost-248 post type-post status-publish format-standard has-post-thumbnail hentry category-concurrency category-fault-tolerance category-memory-management category-programming-languages tag-software-development> a classpost-thumbnail hrefhttps://emeryblogger.com/2012/05/31/software-needs-seatbelts-and-airbags/ aria-hiddentrue> img width656 height463 srchttps://emeryblogger.com/wp-content/uploads/2012/05/airbag.jpg?w656&h463&crop1 classattachment-twentyfourteen-full-width size-twentyfourteen-full-width wp-post-image alt decodingasync loadinglazy data-attachment-id341 data-permalinkhttps://emeryblogger.com/2012/05/31/software-needs-seatbelts-and-airbags/airbag/ data-orig-filehttps://emeryblogger.com/wp-content/uploads/2012/05/airbag.jpg data-orig-size656,463 data-comments-opened1 data-image-meta{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":""} data-image-titleairbag data-image-description data-image-caption data-medium-filehttps://emeryblogger.com/wp-content/uploads/2012/05/airbag.jpg?w300 data-large-filehttps://emeryblogger.com/wp-content/uploads/2012/05/airbag.jpg?w474 tabindex0 rolebutton /> /a> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://emeryblogger.com/category/concurrency/ relcategory tag>Concurrency/a>, a hrefhttps://emeryblogger.com/category/fault-tolerance/ relcategory tag>Fault Tolerance/a>, a hrefhttps://emeryblogger.com/category/memory-management/ relcategory tag>Memory Management/a>, a hrefhttps://emeryblogger.com/category/programming-languages/ relcategory tag>Programming Languages/a>/span> /div> h1 classentry-title>a hrefhttps://emeryblogger.com/2012/05/31/software-needs-seatbelts-and-airbags/ relbookmark>Software Needs Seatbelts and Airbags/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://emeryblogger.com/2012/05/31/software-needs-seatbelts-and-airbags/ relbookmark>time classentry-date datetime2012-05-31T10:16:34-04:00>May 31, 2012/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://emeryblogger.com/author/emeryberger/ relauthor>emeryberger/a>/span>/span> span classcomments-link>a hrefhttps://emeryblogger.com/2012/05/31/software-needs-seatbelts-and-airbags/#comments>2 Comments/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> div>p>span stylecolor:#000000;>(This post is a draft version of an article slated to appear in ACM Queue.)/span>/p>p>em>Finding and fixing bugs in deployed software is difficult and time-consuming: here are some alternatives./em>/p>h3>Death, Taxes, and Bugs./h3>p>img classalignnone srchttps://i0.wp.com/www.danzfamily.com/archives/blogphotos/06/403-death-and-taxes.gif alt width388 height225 />/p>p>Like death and taxes, buggy code is an unfortunate fact of life. Nearly every program ships with known bugs, and probably all of them end up with bugs that are only discovered post-deployment. There are many reasons for this sad state of affairs./p>h3>Unsafe Languages./h3>p>One problem is that many applications are written in memory-unsafe languages. Variants of C, including C++ and Objective-C, are especially vulnerable to memory errors like buffer overflows and dangling pointers (use-after-free bugs). These bugs, which can lead to crashes, erroneous execution, and security vulnerabilities, are notoriously challenging to repair./p>h3>Safe Languages: No Panacea./h3>p>img classalignnone srchttps://i0.wp.com/www.kombuchakamp.com/wp/wp-content/uploads/2010/04/panacea.jpg alt width246 height205 />/p>p>Writing new applications in memory-safe languages like Java instead of C/C++ would go some way towards mitigating these problems. For example, because Java uses garbage collection, Java programs are not susceptible to use-after-free bugs; similarly, because Java always performs bounds-checking, Java applications cannot suffer memory corruption due to buffer overflows./p>p>That said, safe languages are no cure-all. Java programs still suffer from buffer overflows and null pointer dereferences, though they throw an exception as soon as they happen, unlike their C-based counterparts. The common recourse to these exceptions is to abort execution and print a stack trace (even to a web page!). Java is also just as vulnerable as any other language to concurrency errors like race conditions and deadlocks./p>p>There are both practical and technical reasons not to use safe languages. First, it is generally not feasible to rewrite existing code because of the cost and time involved, not to mention the risk of introducing new bugs. Second, languages that rely on garbage collection are not a good fit for programs that need high performance or which make extensive use of available physical memory, since garbage collection always requires some extra memory 5. These include OS-level services, database managers, search engines, and physics-based games./p>/div>div>h3>Are Tools the Answer?/h3>p>img classalignnone srchttps://emeryblogger.com/wp-content/uploads/2012/05/toolbox.jpg?w350&h277 alt width350 height277 />/p>p>While tools can help, they too cannot catch all bugs. Static analyzers have made enormous strides in recent years, but many bugs remain out of reach. Rather than swamp developers with false positive reports, most modern static analyzers report far fewer bugs than they could. In other words, they trade false negatives (failing to report real bugs) for lower false positive rates. That makes these tools more usable, but also means that they will fail to report real bugs. Dawson Engler and his colleagues made exactly this choice for Coverity’s “unsound” static analyzer (see the Communications of the ACM article on their experiences: em>A Few Billion Lines of Code Later: Using Static Analysis to Find Bugs in the Real World/em> 4./p>h3>Testing is Good but Not Enough./h3>p>a hrefhttps://emeryblogger.com/wp-content/uploads/2012/05/testing-code-is-for-wimps-real-men-test-in-production.jpg>img data-attachment-id254 data-permalinkhttps://emeryblogger.com/2012/05/31/software-needs-seatbelts-and-airbags/testing-code-is-for-wimps-real-men-test-in-production/ data-orig-filehttps://emeryblogger.com/wp-content/uploads/2012/05/testing-code-is-for-wimps-real-men-test-in-production.jpg data-orig-size550,636 data-comments-opened1 data-image-meta{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":""} data-image-titletesting-code-is-for-wimps-real-men-test-in-production data-image-description data-image-caption data-medium-filehttps://emeryblogger.com/wp-content/uploads/2012/05/testing-code-is-for-wimps-real-men-test-in-production.jpg?w259 data-large-filehttps://emeryblogger.com/wp-content/uploads/2012/05/testing-code-is-for-wimps-real-men-test-in-production.jpg?w474 tabindex0 rolebutton loadinglazy classalignright size-medium wp-image-254 titletesting-code-is-for-wimps-real-men-test-in-production srchttps://emeryblogger.com/wp-content/uploads/2012/05/testing-code-is-for-wimps-real-men-test-in-production.jpg?w259&h300 alt width259 height300 srcsethttps://emeryblogger.com/wp-content/uploads/2012/05/testing-code-is-for-wimps-real-men-test-in-production.jpg?w259 259w, https://emeryblogger.com/wp-content/uploads/2012/05/testing-code-is-for-wimps-real-men-test-in-production.jpg?w518 518w, https://emeryblogger.com/wp-content/uploads/2012/05/testing-code-is-for-wimps-real-men-test-in-production.jpg?w130 130w sizes(max-width: 259px) 100vw, 259px />/a>/p>p>The state of the art in testing tools has also advanced dramatically in the last decade. Randomized fuzz testing can be combined with static analysis to drive tests to explore paths that lead to failure. These tools are now in the mainstream: for example, a hrefhttp://msdn.microsoft.com/en- us/library/windows/hardware/gg487310.aspx>Microsoft’s Driver Verifier/a> can test device driver code for a wide variety of problems, and now includes randomized concurrency stress testing./p>p>But as Dijkstra famously remarked, “Program testing can be used to show the presence of bugs, but never to show their absence!” At some point, testing will fail to turn up new bugs, which will unfortunately be discovered only once the software has shipped./p>h3>Fixing Bugs: Risky (and Slow) Business./h3>p>img classalignright srchttps://emeryblogger.com/wp-content/uploads/2012/05/riskybusiness.jpg?w270&h180 alt width270 height180 />/p>p>Finding the bugs is only the first step. Once a bug is found, whether by inspection, testing, or analysis, fixing it remains a challenge. Any bug fix must be undertaken with extreme care, since any new code runs the risk of introducing yet more bugs. Developers must construct and carefully test a patch to ensure that it fixes the bug without introducing any new ones. This process can be costly and time-consuming. For example, according to Symantec, the average time between the discovery of a remotely exploitable memory error and the release of a patch for enterprise applications is 28 days 11./p>h3>Cut Bait and Ship./h3>p>At some point, it simply stops making economic sense to fix certain bugs. Tracking their source is often difficult and time consuming, even when the full memory state and all inputs to the program are available. Obviously, show-stopper bugs must be fixed. For other bugs, the benefits of fixing them may be outweighed by the risks of creating new bugs and the costs in programmer time and in delayed deployment./p>h3>Debugging at a Distance./h3>p>img classalignnone srchttps://i0.wp.com/images.nationalgeographic.com/wpf/media-live/photos/000/064/cache/color-earthrise_6429_600x450.jpg alt width360 height270 />/p>p>Once that faulty software has been deployed, the problem of chasing down and repairing bugs becomes exponentially more difficult. Users rarely provide detailed bug reports that allow developers to reproduce the problem./p>p>For deployed software on desktops or mobile devices, getting enough information to find a bug can be difficult. Sending an entire core file is generally impractical, especially over a mobile connection. Typically, the best one can hope for is some logging messages and a minidump consisting of a stack trace and information about thread contexts./p>/div>div>p>Even this limited information can provide valuable clues. If a particular function appears on many stack traces observed during crashes, then that function is a likely culprit. Microsoft Windows a hrefhttp://www.microsoft.com/about/technicalrecognition/watson-technologies-team.aspx>includes an application debugger/a> (formerly “Watson”, now “Windows Error Reporting”) that is used to perform this sort of triage not only for Microsoft but also for third-party applications via Microsoft’s a hrefhttp://winqual.microsoft.com/>Winqual program/a>. Google also has made available a hrefhttp://code.google.com/p/google-breakpad/>a cross-platform tool called Breakpad/a> that can be used to provide similar services for any application./p>p>However, for many bugs, the kind of information that these tools provide is of limited value. For example, memory corruption errors often trigger failures millions of instructions past the point of the actual error, making stack traces useless. The same is generally true for null dereference exceptions, where the error often happens long after the null pointer was stored./p>h3>Captain’s Log: Not Enough Information./h3>p>img classalignleft srchttps://i0.wp.com/www.eastsidepatch.com/wp-content/uploads/2010/02/capt-kirk_yellowCU-001_1196284873.jpg alt width288 height215 />On servers, the situation is somewhat improved. Server applications typically generate log messages, which may contain clues to why a program failed. Unfortunately, log files can be unmanageably large. Poring over logs and trying to correlate them to the source code can be extremely time-consuming. Even worse, that work may yield no useful results because the logs are incomplete; that is, the logs simply may not provide enough information to narrow down the source of a particular error because there were not enough or the right kind of log messages. Recent work at Illinois and UC San Diego may lead to tools that address some of these problems; SherLog 12 automates the process of tracing back bugs from log messages to buggy source code paths, and LogEnhancer 13 automatically extends log messages with information to help post-crash debugging. More information on logging appears in a recent Queue article, em>Advances and Challenges in Log Analysis/em> 10./p>h3>God Doesn’t Play Dice, but Your Computer Does./h3>p>Despite these advances, finding bugs has actually become harder than ever. Back when many programs were sequential it was already challenging to find bugs, but now the situation has become far worse. Multithreaded programs, asynchrony, and multiple cores are now a fact of life. Every execution of these non-deterministic programs is completely different from the last because of different timing of events and thread interleavings. This situation makes reproducing bugs impossible even with a complete log of all input events—something that would be too expensive to record in practice anyway./p>h3>Bumpers, Seatbelts and Airbags./h3>p>Let’s shift gears for a moment to talk about cars (we’ll get back to talking about software in a minute). As an analogy for the situation we find ourselves in, consider when cars first entered onto the scene. For years, safety was an after-thought at best. When designing new cars, the primary considerations were aesthetics and high performance (think tailfins and V-8 engines)./p>/div>div>p>img classalignnone srchttps://i0.wp.com/www.automotive-stock-images.com/photos/cadillac-series-62-convertible-1959-rear-tailfins.jpg alt width409 height275 />/p>p styletext-align:left;>Eventually, traffic fatalities led legislators and car manufacturers to take safety into account. Seatbelts became required standard equipment in US cars in the late 1960s, bumpers in the 1970s, and airbags in the 1980s. Modern cars incorporate a wide range of safety features, including laminated windshields, crumple zones, and anti-lock braking systems. It is now practically unthinkable that anyone would ship a car without these essential safety features./p>p styletext-align:left;>However, we routinely ship software with no safety measures of any kind. We are in a position similar to that of the automobile industry of the 1950s, delivering software with lots of horsepower and tailfins, complete with decorative spikes on the steering column to make sure that the user will suffer if their application crashes./p>h3>Drunk-Driving Through a Minefield./h3>p styletext-align:center;>img classaligncenter srchttps://i0.wp.com/farm3.staticflickr.com/2202/2060704683_315929dddd_b.jpg alt width614 height410 />/p>p styletext-align:left;>The potent cocktail of manual memory management mixed with unchecked memory accesses makes C and C++ applications susceptible to a wide range of memory errors. These errors can cause programs to crash or produce incorrect results. Attackers are also frequently able to exploit these memory errors to gain unauthorized access to systems. Since the vast majority of objects accessed by applications are on the heap, heap-related errors are especially serious./p>p styletext-align:left;>Numerous memory errors happen when programs incorrectly free objects. em>Dangling pointers/em> arise when a heap object is freed while it is still live, leading to use-after-free bugs. em>Invalid frees/em> happen when a program deallocates an object that was never returned by the allocator by inadvertently freeing a stack object or an address in the middle of a heap object. em>Double frees/em> are when a heap object is deallocated multiple times without an intervening allocation. This error may at first glance seem innocuous but, in many cases, leads to heap corruption or program termination./p>p>Other memory errors have to do with the use of allocated objects. When an object is allocated with a size that is not large enough, an em>out-of-bound error/em> can occur when the memory address to be read or written lies outside the object. Out-of-bound writes are also known as em>buffer overflows/em>. em>Uninitialized reads/em> happen when a program reads memory that has never been initialized; in many cases, uninitialized memory contains data from previously-allocated objects./p>h3>Airbags for Your Applications./h3>p>img classalignnone srchttps://i0.wp.com/www.sbboron.com/images/airbag.jpg alt width394 height278 />/p>p>Given that we know we will be shipping software with bugs and that the terrain is dangerous, it might make sense to equip it with seatbelts and airbags. What we’d like is to have both resilience and prompt corrective action for any problem that surfaces in our deployed applications./p>p>Let’s focus on C/C++/Objective-C applications—the lion’s share of applications running on servers, desktops, and mobile platforms—and memory errors, the number one headache for applications written in these languages. Safety-equipped memory allocators can play a crucial role in helping to protect your software against crashes./p>h3>The Garbage Collection Safety Net./h3>p>img classalignnone srchttps://i0.wp.com/www.gulfstreamshadecovers.com/assets/images/products/safety-net1.jpg alt width360 height239 />/p>p>Dealing with the first class of errors—those that happen because of the misuse of free or delete—can be remedied directly by using garbage collection. Garbage collection works by only reclaiming objects that it allocated, eliminating invalid frees. It only reclaims objects once there is no way to reach those objects anymore by traversing pointers from the “roots”: the globals and the stack. That eliminates dangling pointer errors, since by definition there can’t be any pointers around to reclaimed objects. Since it naturally only reclaims these objects once, a garbage collector also eliminates double frees./p>/div>div>p>While C and C++ were not designed with garbage collection in mind, it is possible to plug in a “conservative” garbage collector and entirely prevent free-related errors. The word “conservative” here means that because the garbage collector doesn’t necessarily know what values are pointers (since we are in C-land), it conservatively assumes that if a value looks like a pointer (it is in the right range and properly aligned), and it acts like a pointer (it only points to valid objects), then it may be a pointer./p>p>a hrefhttp://www.hpl.hp.com/personal/Hans Boehm/gc/>The Boehm-Demers-Weiser conservative garbage collector/a> is an excellent choice for this purpose: it is reasonably fast and space-efficient, and can be used to directly replace memory allocators by configuring it to treat calls to free as NOPs./p>h3>Slipping Through the Net./h3>p>img classalignnone srchttps://i0.wp.com/www.svenutcke.de/images/manhole.jpg alt width384 height256 />/p>p>While garbage collectors eliminate free-related errors, they cannot help prevent the second class of memory errors: those that have to do with the misuse of allocated objects such as buffer overflows./p>p>Runtime systems that can find buffer overflows often impose staggeringly high overheads, making them not particularly suitable for deployed code. Tools like a hrefhttp://valgrind.org/info/tools.html#memcheck>Valgrind’s MemCheck/a> are incredibly comprehensive and useful, but are heavyweight by design and slow execution by orders of magnitude 7./p>p>Compiler-based approaches can reduce overhead substantially by avoiding unnecessary checks, though they entail recompiling all of an application’s code, including libraries. Google has recently made available a hrefhttp://code.google.com/p/address-sanitizer/wiki/AddressSanitizer>AddressSanitizer/a>, a combination of compiler and runtime technology that can find a number of bugs, including overflows and use-after-free bugs. While it is much faster than Valgrind, its overhead remains relatively high (around 75%), making it primarily useful for testing./p>h3>Your Program Has Encountered An Error. Goodbye, Cruel World./h3>p>img classalignnone srchttps://i0.wp.com/www.fugly.com/media/IMAGES/Random/goodbye_cruel_world.jpg alt width450 height341 />/p>p>All of these approaches are based on the idea that the best thing to do upon encountering an error is to abort immediately. This fail-stop behavior is certainly desirable in testing. However, it is not usually what your users want. Most application programs are not safety-critical systems, and aborting them in midstream can be an unpleasant experience for users./p>p>Suppose you have been working on a Microsoft Word document for hours (and for some mysterious reason, auto-save has not been turned on). If Microsoft Word suddenly discovers that some error has occurred, what should it do? It could just pop up the window indicating that something terrible has happened and would you like it to send a note home to Redmond. That might be the best thing to do from a debugging perspective, but most people would prefer that Word do its damndest to save the current document rather than fall on its sword if it discovers a possible error. In short, users generally would prefer that their applications be fault tolerant whenever possible./p>h3>Bohr versus Heisenberg./h3>p>img classalignnone srchttps://emeryblogger.com/wp-content/uploads/2012/05/1.png?w345&h300 alt width345 height300 />/p>p>In fact, the exact behavior users do not want is for an error to happen consistently and repeatably. In his classic 1985 article “Why do computers stop and what can be done about it”, Jim Gray drew a distinction between two kinds of bugs. The first kind are bugs that behave predictably and repeatably—that is, ones that occur every time that the program encounters the same inputs and goes through the same sequence of steps. These are em>Bohr bugs/em>, by analogy with the classical atomic model where electrons circle around the nucleus in planetary-like orbits. Bohr bugs are great when debugging a program, since it makes it easier to reproduce the bug and find its root cause./p>/div>div>p>img classalignnone srchttps://i0.wp.com/www.simonb.com/media/uploads/2009/07/10/heisenbug.png alt width400 height412 />/p>p>The second kind of bugs are em>Heisenbugs/em>, meant to connote the inherit uncertainty in quantum mechanics, which are unpredictable and cannot be reliably reproduced. The most common Heisenbugs these days are concurrency errors, a.k.a. race conditions, which depend on the order and timing of scheduling events to appear. Heisenbugs are also often sensitive to the observer effect; attempts to find the bug by inserting debugging code or running in a debugger often disrupt the sequence of events that led to the bug, making it go away./p>p>Jim Gray makes the point that while Bohr bugs are great for debugging, what users want are Heisenbugs. Why? Because a Bohr bug is a showstopper for the user: every time the user does the same thing, they will encounter the same bug. But with Heisenbugs, the bugs often go away when you run the program again. If a program crashes, and the problem is a Heisenbug, then running the program again is likely to work. This is a perfect match for the way users already behave on the Web. If they go to a web page and it fails to respond, they just click “refresh” and that usually solves the problem./p>p>So one way we can make life better for users is to convert Bohr bugs into Heisenbugs, if we can figure out how to do that./p>h3>Defensive Driving with DieHard./h3>p>My graduate students at the University of Massachusetts Amherst and I, in collaboration with my colleague Ben Zorn at Microsoft Research, have been working for the past few years on ways to protect programs from bugs. The first fruit of that research is a system called strong>a hrefhttp://diehard-software.org/>DieHard/a>/strong> that makes memory errors less likely to impact users. DieHard eliminates some errors entirely and converts the others into (rare) Heisenbugs./p>p>img classalignright srchttps://i0.wp.com/www.rifftrax.com/files/iriffs-posters/die-hard-poster.jpg alt width240 height343 />/p>p>To explain how DieHard works, let’s go back to the car analogy. One way to make it less likely for cars to crash into each other is for them to be spaced further apart, providing adequate braking distance in case something goes wrong. DieHard provides this “defensive driving” by taking over all memory management operations and allocating objects in a space larger than required./p>p>This de facto padding increases the odds that a small overflow will end up in un- allocated space where it can do no harm. However, DieHard doesn’t just add a fixed amount of padding between objects. That would provide great protection against overflows that are small enough, and zero protection against the others. In other words, those overflows would still be Bohr bugs./p>p>Instead, DieHard provides probabilistic memory safety by randomly allocating objects on the heap. DieHard adaptively sizes its heap be a bit larger than the maximum needed by the application; the default is 1/3 2, 3. DieHard allocates memory from increasingly large chunks that we call miniheaps./p>/div>div>p>By randomly allocating objects across all the miniheaps (see a hrefhttps://emeryblogger.com/wp-content/uploads/2012/05/new-heap-diagram.pdf>this diagram for a detailed view/a>), DieHard makes many memory overflows benign, with a probability that naturally declines as the overflow increases in size and as the heap becomes full. The effect is that, in most cases when running with DieHard, a small overflow is likely to have no effect./p>p>DieHard’s random allocation approach also reduces the likelihood of the free-related errors that garbage collection addresses. DieHard uses bitmaps, stored outside the heap, to track allocated memory. A bit set to ’1’ indicates that a given block is in use, and ’0’ that it is available./p>p>This use of bitmaps to manage memory eliminates the risk of double frees, since resetting a bit to zero twice is the same as resetting in once. Keeping the heap metadata separate from the data in the heap makes it impossible to inadvertently corrupt the heap itself./p>p>Most importantly, DieHard drastically reduces the risk of dangling pointer errors, which effectively go away. If the heap has one million freed objects, the chances that you will immediately reuse one that was just freed is literally one in a million. Contrast this with most allocators, which immediately reclaim freed objects. With DieHard, even after 10,000 reallocations, there is still a 99% chance that the dangled object will not be reused./p>p>Because it performs its allocation in (amortized) constant time, DieHard can provide added safety with very little additional cost in performance. For example, using it in a browser results in no perceivable performance impact./p>h3>Tolerating Faults FTW with FTH./h3>p>At Microsoft Research, tests with a variant of DieHard resolved about 30% of all bugs in the Microsoft Office database, while having no perceivable impact on performance. Beginning with Windows 7, Microsoft Windows a hrefhttp://msdn.microsoft.com/en-us/library/dd744764(vvs.85).aspx>now ships with a Fault-Tolerant Heap (FTH)/a> that was directly inspired by DieHard. 8 Normally, applications use the default heap, but after a program crashes more than a certain number of times, the Fault-Tolerant Heap takes over. Like DieHard, the Fault-Tolerant Heap manages heap metadata separately from the heap. It also adds padding and delays allocations, though it does not provide DieHard’s probabilistic fault tolerance because it does not randomize allocations or deallocations. The Fault-Tolerant Heap approach is especially attractive because it acts like an airbag: effectively invisible and cost-free when everything is fine, but providing protection when they need it./p>h3>Exterminating the Bugs./h3>p>img classalignright srchttps://i0.wp.com/people.cs.umass.edu/~emery/exterminator.png alt width353 height200 />/p>p>Tolerating bugs is one way to improve the effective quality of deployed software. It would be even better if somehow the software could not only tolerate faults but also correct them. A follow-on to DieHard, called strong>Exterminator/strong>, does exactly that 8, 9. Exterminator uses a version of DieHard extended to detect errors, and uses statistical inference to compute what kind of error happened and where the error occurred. Exterminator not only can send this information back to programmers for them to repair the software, but it also automatically corrects the errors via runtime patches. For example, if it detects that a certain object was responsible for a buffer overflow of 8 bytes, it will always allocate such objects (distinguished by their call site and size) with an 8-byte pad. Exterminator can learn from the results of multiple runs or multiple users, so it could be used to proactively push out patches to prevent other users from experiencing errors it has already detected elsewhere./p>/div>div>h3>The Future: Safer, Self-Repairing Software./h3>p>img classalignnone srchttps://i0.wp.com/gallery.photo.net/photo/6522423-lg.jpg alt width266 height200 />/p>p>My group and others (notably Martin Rinard at MIT, Vikram Adve at Illinois, Yuanyuan Zhou at UC-San Diego, Shan Lu at Wisconsin, and Luis Ceze and Dan Grossman at Washington) have made great strides in building safety systems for other classes of errors. We have recently published work on a hrefhttp://dthreads.org>systems that prevent concurrency errors/a>, some of which we can eliminate automatically. strong>Grace/strong> is a runtime system that eliminates concurrency errors for concurrent programs that use “fork-join” parallelism. It hijacks the threads library, converting threads to processes “under the hood”, and uses virtual memory mapping and protection to enforce behavior that gives the illusion of a sequential execution, even on a multicore processor 1. strong>Dthreads/strong> (“Deterministic Threads”) is a full replacement for the POSIX threads library that enforces deterministic execution for multithreaded code 6. In other words, a multithreaded program running with dthreads never has races; every execution with the same inputs generates the same outputs./p>p>We look forward to a day in the not too distant future when such safer runtime systems are the norm. Just as we can now barely imagine cars without their myriad of safety features, we are finally adopting a similar philosophy for software. Buggy software is inevitable, and when possible, we should deploy safety systems that reduce their impact on users./p>h4>References/h4>ol>li>E. D. Berger, T. Yang, T. Liu, and G. Novark. a hrefhttp://doi.acm.org/10.1145/1640089.1640096>Grace: safe multithreaded programming for C/C++/a>. In S. Arora and G. T. Leavens, editors, OOPSLA, pages 81–96. ACM, 2009./li>li>E. D. Berger and B. G. Zorn. a hrefhttp://doi.acm.org/10.1145/1133981.1134000>DieHard: Probabilistic memory safety for unsafe languages/a>. In Proceedings of the 2006 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 158–168, New York, NY, USA, 2006. ACM Press./li>li>E. D. Berger and B. G. Zorn. Efficient probabilistic memory safety. Technical Report UMCS TR-2007-17, Department of Computer Science, University of Massachusetts Amherst, Mar. 2007./li>li>A.Bessey, K.Block, B.Chelf, A.Chou, B.Fulton, S.Hallem, C.Henri-Gros, A.Kamsky, S. McPeak, and D. Engler. A few billion lines of code later: using static analysis to find bugs in the real world. Commun. ACM, 53(2):66–75, Feb. 2010./li>li>M. Hertz and E. D. Berger. a hrefhttp://doi.acm.org/10.1145/1094811.1094836>Quantifying the performance of garbage collection vs. explicit memory management/a>. In OOPSLA ’05: Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, pages 313–326, New York, NY, USA, 2005. ACM Press./li>li>T.Liu, C.Curtsinger, and E.D.Berger. a hrefhttp://doi.acm.org/10.1145/2043556.2043587>Dthreads: Efficient Deterministic Multithreading/a>. In Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles, SOSP ’11, pages 327–336, New York, NY, USA, 2011. ACM./li>li>N. Nethercote and J. Seward. Valgrind: A framework for heavyweight dynamic binary instrumentation. In Proceedings of 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 89–100. ACM Press, June 2007./li>li>G. Novark, E. D. Berger, and B. G. Zorn. a hrefhttp://doi.acm.org/10.1145/1250734.1250736>Exterminator: automatically correcting memory errors with high probability/a>. In Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 1–11, New York, NY, USA, 2007. ACM Press./li>li>G. Novark, E. D. Berger, and B. G. Zorn. a hrefhttp://doi.acm.org/10.1145/1409360.1409382>Exterminator: Automatically correcting memory errors with high probability/a>. Communications of the ACM, 51(12):87–95, 2008./li>li>A. Oliner, A. Ganapathi, and W. Xu. Advances and challenges in log analysis. Commun. ACM, 55(2):55–61, Feb. 2012./li>li>Symantec. Internet security threat report.a hrefhttp://www.symantec.com/enterprise/threatreport/index.jsp> http://www.symantec.com/enterprise/threatreport/index.jsp/a>, Sept. 2006./li>li>D. Yuan, H. Mai, W. Xiong, L. Tan, Y. Zhou, and S. Pasupathy. Sherlog: error diagnosis by connecting clues from run-time logs. In Proceedings of the fifteenth edition of ASPLOS on Architectural support for programming languages and operating systems, ASPLOS ’10, pages 143–154, New York, NY, USA, 2010. ACM./li>li>D. Yuan, J. Zheng, S. Park, Y. Zhou, and S. Savage. Improving software diagnosability via log enhancement. ACM Trans. Comput. Syst., 30(1):4:1–4:28, Feb. 2012./li>/ol>/div>div idjp-post-flair classsharedaddy sd-like-enabled sd-sharing-enabled>div classsharedaddy sd-sharing-enabled>div classrobots-nocontent sd-block sd-social sd-social-icon-text sd-sharing>div classsd-content>ul>li classshare-email>a relnofollow noopener noreferrer data-shared classshare-email sd-button share-icon hrefmailto:?subject%5BShared%20Post%5D%20Software%20Needs%20Seatbelts%20and%20Airbags&bodyhttps%3A%2F%2Femeryblogger.com%2F2012%2F05%2F31%2Fsoftware-needs-seatbelts-and-airbags%2F&shareemail target_blank titleClick to email a link to a friend data-email-share-error-titleDo you have email set up? data-email-share-error-textIf you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself. data-email-share-nonce5af435ee79 data-email-share-track-urlhttps://emeryblogger.com/2012/05/31/software-needs-seatbelts-and-airbags/?shareemail>span>Email/span>/a>/li>li classshare-print>a relnofollow noopener noreferrer data-shared classshare-print sd-button share-icon hrefhttps://emeryblogger.com/2012/05/31/software-needs-seatbelts-and-airbags/ target_blank titleClick to print >span>Print/span>/a>/li>li classshare-facebook>a relnofollow noopener noreferrer data-sharedsharing-facebook-248 classshare-facebook sd-button share-icon hrefhttps://emeryblogger.com/2012/05/31/software-needs-seatbelts-and-airbags/?sharefacebook target_blank titleClick to share on Facebook >span>Facebook/span>/a>/li>li classshare-linkedin>a relnofollow noopener noreferrer data-sharedsharing-linkedin-248 classshare-linkedin sd-button share-icon hrefhttps://emeryblogger.com/2012/05/31/software-needs-seatbelts-and-airbags/?sharelinkedin target_blank titleClick to share on LinkedIn >span>LinkedIn/span>/a>/li>li classshare-twitter>a relnofollow noopener noreferrer data-sharedsharing-twitter-248 classshare-twitter sd-button share-icon hrefhttps://emeryblogger.com/2012/05/31/software-needs-seatbelts-and-airbags/?sharetwitter target_blank titleClick to share on Twitter >span>Twitter/span>/a>/li>li classshare-end>/li>/ul>/div>/div>/div>div classsharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded idlike-post-wrapper-9784426-248-66fd746157598 data-src//widgets.wp.com/likes/index.html?ver20241002#blog_id9784426&post_id248&originemeryblogger.wordpress.com&obj_id9784426-248-66fd746157598&domainemeryblogger.com data-namelike-post-frame-9784426-248-66fd746157598 data-titleLike or Reblog>div classlikes-widget-placeholder post-likes-widget-placeholder styleheight: 55px;>span classbutton>span>Like/span>/span> span classloading>Loading.../span>/div>span classsd-text-color>/span>a classsd-link-color>/a>/div>/div> /div>!-- .entry-content --> footer classentry-meta>span classtag-links>a hrefhttps://emeryblogger.com/tag/software-development/ reltag>software-development/a>/span>/footer>/article>!-- #post-248 --> nav classnavigation paging-navigation> h1 classscreen-reader-text>Posts navigation/h1> div classpagination loop-pagination> span aria-currentpage classpage-numbers current>1/span>a classpage-numbers hrefhttps://emeryblogger.com/page/2/>2/a>span classpage-numbers dots>…/span>a classpage-numbers hrefhttps://emeryblogger.com/page/5/>5/a>a classnext page-numbers hrefhttps://emeryblogger.com/page/2/>Next →/a> /div>!-- .pagination --> /nav>!-- .navigation --> /div>!-- #content --> /div>!-- #primary --> /div>!-- #main-content -->div idsecondary> h2 classsite-description>Emery Berger's Blog/h2> div idprimary-sidebar classprimary-sidebar widget-area rolecomplementary> aside idtext-3 classwidget widget_text>h1 classwidget-title>About/h1> div classtextwidget>img srchttps://i0.wp.com/www.cs.umass.edu/~emery/emery-face.png height150 width150>br />strong>a hrefhttp://www.emeryberger.org/>Emery Berger/a>/strong>, Professor of a hrefhttp://www.cs.umass.edu>Computer Science/a> at the a hrefhttp://www.umass.edu>University of Massachusetts Amherst/a>.br />a hrefhttp://www.cs.umass.edu/~emery>Home page/a>/div> /aside>aside idtwitter_timeline-2 classwidget widget_twitter_timeline>a classtwitter-timeline data-width225 data-height400 data-themelight data-border-color#e8e8e8 data-tweet-limit5 data-langEN data-partnerjetpack data-widget-id506199049007927298 hrefhttps://twitter.com/506199049007927298>My Tweets/a>/aside>aside idrss_links-3 classwidget widget_rss_links>h1 classwidget-title>Subscribe/h1>p classsize-small>a classfeed-image-link hrefhttps://emeryblogger.com/feed/ titleSubscribe to Posts>img srchttps://emeryblogger.com/i/rss/red-small.png altRSS Feed />/a> a hrefhttps://emeryblogger.com/feed/ titleSubscribe to Posts>RSS - Posts/a>/p>/aside>aside idblog_subscription-3 classwidget widget_blog_subscription jetpack_subscription_widget>h1 classwidget-title>label forsubscribe-field>E-mail/label>/h1> div classwp-block-jetpack-subscriptions__container> form actionhttps://subscribe.wordpress.com methodpost accept-charsetutf-8 data-blog9784426 data-post_access_leveleverybody idsubscribe-blog > p>Enter your email address to subscribe to this blog and receive notifications of new posts by email./p> p idsubscribe-email> label idsubscribe-field-label forsubscribe-field classscreen-reader-text > Email Address: /label> input typeemail nameemail stylewidth: 95%; padding: 1px 10px placeholderEmail Address value idsubscribe-field required /> /p> p idsubscribe-submit > input typehidden nameaction valuesubscribe/> input typehidden nameblog_id value9784426/> input typehidden namesource valuehttps://emeryblogger.com//> input typehidden namesub-type valuewidget/> input typehidden nameredirect_fragment valuesubscribe-blog/> input typehidden id_wpnonce name_wpnonce valueb73797936a /> button typesubmit classwp-block-button__link > Sign up /button> /p> /form> div classwp-block-jetpack-subscriptions__subscount> Join 1,724 other subscribers /div> /div> /aside> aside idrecent-posts-2 classwidget widget_recent_entries> h1 classwidget-title>Posts/h1>nav aria-labelPosts> ul> li> a hrefhttps://emeryblogger.com/2018/03/22/reviewing-guidelines-for-program-committee-members/>Reviewing Guidelines for Program Committee Members/a> /li> li> a hrefhttps://emeryblogger.com/2016/06/08/a-guide-for-session-chairs/>A Guide for Session Chairs/a> /li> li> a hrefhttps://emeryblogger.com/2015/10/14/coz-finding-code-that-counts-with-causal-profiling/>Coz: Finding code that counts with causal profiling/a> /li> li> a hrefhttps://emeryblogger.com/2014/11/15/doppio-selected-as-sigplan-research-highlight/>Doppio Selected as SIGPLAN Research Highlight/a> /li> li> a hrefhttps://emeryblogger.com/2014/08/31/washington-post-take-down-this-article/>Washington Post, Take Down This Article!/a> /li> /ul> /nav>/aside>aside idrss-2 classwidget widget_rss>h1 classwidget-title>a classrsswidget hrefhttp://feeds.feedburner.com/UMassCSSystemsLunch titleSyndicate this content>img stylebackground: orange; color: white; border: none; width14 height14 srchttps://s-ssl.wordpress.com/wp-includes/images/rss.png?m1354137473i altRSS />/a> a classrsswidget href title>UMass CS Systems Lunch/a>/h1>ul>li>An error has occurred; the feed is probably down. Try again later./li>/ul>/aside>aside idlinkcat-1356 classwidget widget_links>h1 classwidget-title>Blogroll/h1> ul classxoxo blogroll>li>a hrefhttp://blogs.azulsystems.com/cliff/>Cliff Click's Blog/a>/li>li>a hrefhttp://blog.regehr.org/ relcolleague>Embedded in Academia (John Regehr)/a>/li>li>a hrefhttp://kevinfu.blogspot.com/ relfriend colleague noopener titleKevin Fu’s blog (security, privacy, and bread) target_blank>Kevin Fu's blog/a>/li>li>a hrefhttp://css.cs.umass.edu/blog/ relcolleague noopener titleHanna Wallach’s blog on computational social science, machine learning, etc. target_blank>Logistic Aggression (Hanna Wallach)/a>/li>li>a hrefhttp://matt.might.net/articles/>Matt Might's blog/a>/li>li>a hrefhttp://mybiasedcoin.blogspot.com/ titleMichael Mitzenmacher’s Blog>My Biased Coin (Michael Mitzenmacher)/a>/li>li>a hrefhttp://polylogblog.wordpress.com/ relcolleague noopener titleAndrew McGregor’s blog about streaming and more target_blank>The Polylogblog (Andrew McGregor)/a>/li>li>a hrefhttp://matt-welsh.blogspot.com/ relcolleague>Volatile and Decentralized (Matt Welsh)/a>/li> /ul>/aside> div idatatags-286348-66fd7461d862c>/div> script> __ATA.cmd.push(function() { __ATA.initDynamicSlot({ id: atatags-286348-66fd7461d862c, location: 140, formFactor: 003, label: { text: Advertisements, }, creative: { reportAd: { text: Report this ad, }, privacySettings: { text: Privacy, } } }); }); /script> /div>!-- #primary-sidebar --> /div>!-- #secondary --> /div>!-- #main --> footer idcolophon classsite-footer> div classsite-info> a hrefhttps://wordpress.com/?reffooter_blog relnofollow>Blog at WordPress.com./a> /div>!-- .site-info --> /footer>!-- #colophon --> /div>!-- #page --> script typetext/javascript> var infiniteScroll {settings:{id:content,ajaxurl:https:\/\/emeryblogger.com\/?infinityscrolling,type:scroll,wrapper:true,wrapper_class:infinite-wrap,footer:page,click_handle:1,text:Older posts,totop:Scroll back to top,currentday:31.05.12,order:DESC,scripts:,styles:,google_analytics:false,offset:1,history:{host:emeryblogger.com,path:\/page\/%d\/,use_trailing_slashes:true,parameters:},query_args:{error:,m:,p:0,post_parent:,subpost:,subpost_id:,attachment:,attachment_id:0,name:,pagename:,page_id:0,second:,minute:,hour:,day:0,monthnum:0,year:0,w:0,category_name:,tag:,cat:,tag_id:,author:,author_name:,feed:,tb:,paged:0,meta_key:,meta_value:,preview:,s:,sentence:,title:,fields:,menu_order:,embed:,category__in:,category__not_in:,category__and:,post__in:,post__not_in:,post_name__in:,tag__in:,tag__not_in:,tag__and:,tag_slug__in:,tag_slug__and:,post_parent__in:,post_parent__not_in:,author__in:,author__not_in:,search_columns:,lazy_load_term_meta:false,posts_per_page:10,ignore_sticky_posts:false,suppress_filters:false,cache_results:true,update_post_term_cache:true,update_menu_item_cache:false,update_post_meta_cache:true,post_type:,nopaging:false,comments_per_page:50,no_found_rows:false,order:DESC},query_before:2024-10-02 12:27:13,last_post_date:2012-05-31 10:16:34,body_class:infinite-scroll neverending,loading_text:Loading new page,stats:blog9784426&vwpcom&tz-4&user_id0&subdemeryblogger&x_pagetypeinfinite}}; /script> !-- -->script src//0.gravatar.com/js/hovercards/hovercards.min.js?ver202440448e29c9ec460f70535c7958cd60e9e2980f935c5309d61d08f40d080a876779 idgrofiles-cards-js>/script>script idwpgroho-js-extra>var WPGroHo {my_hash:};/script>script crossoriginanonymous typetext/javascript srchttps://s2.wp.com/wp-content/mu-plugins/gravatar-hovercards/wpgroho.js?m1610363240i>/script> script> // Initialize and attach hovercards to all gravatars ( function() { function init() { if ( typeof Gravatar undefined ) { return; } if ( typeof Gravatar.init ! function ) { return; } Gravatar.profile_cb function ( hash, id ) { WPGroHo.syncProfileData( hash, id ); }; Gravatar.my_hash WPGroHo.my_hash; Gravatar.init( body, #wp-admin-bar-my-account, { i18n: { Edit your profile: Edit your profile, View profile: View profile, Sorry, we are unable to load this Gravatar profile.: Sorry, we are unable to load this Gravatar profile., Too Many Requests.: Too Many Requests., Internal Server Error.: Internal Server Error., }, } ); } if ( document.readyState ! loading ) { init(); } else { document.addEventListener( DOMContentLoaded, init ); } } )(); /script> div styledisplay:none> div classgrofile-hash-map-a795b4f89a6d096f314fc0a2c80479c1> /div> div classgrofile-hash-map-ef7468f0b37dca98b539f321225ee583> /div> /div> div idinfinite-footer> div classcontainer> div classblog-info> a idinfinity-blog-title hrefhttps://emeryblogger.com/ relhome> Emery Blogger /a> /div> div classblog-credits> a hrefhttps://wordpress.com/?reffooter_website relnofollow>Create a free website or blog at WordPress.com./a> /div> /div> /div>!-- #infinite-footer --> script typetext/javascript> ( function() { function init() { document.body.addEventListener( is.post-load, function() { if ( typeof __ATA.insertInlineAds function ) { __ATA.insertInlineAds(); } } ); } if ( document.readyState ! loading ) { init(); } else { document.addEventListener( DOMContentLoaded, init ); } } )(); /script> !-- CCPA start --> script typetext/javascript> ( function () { var setupPrivacy function() { // Minimal Mozilla Cookie library // https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie/Simple_document.cookie_framework var cookieLib window.cookieLib {getItem:function(e){return e&&decodeURIComponent(document.cookie.replace(new RegExp((?:(?:^|.*;)\\s*+encodeURIComponent(e).replace(/\-\.\+\*/g,\\$&)+\\s*\\\\s*(^;*).*$)|^.*$),$1))||null},setItem:function(e,o,n,t,r,i){if(!e||/^(?:expires|max\-age|path|domain|secure)$/i.test(e))return!1;var c;if(n)switch(n.constructor){case Number:cn1/0?; expiresFri, 31 Dec 9999 23:59:59 GMT:; max-age+n;break;case String:c; expires+n;break;case Date:c; expires+n.toUTCString()}returnrootDomain!r&&.rootDomain!r||(r(.rootDomainr?.:)+document.location.hostname.split(.).slice(-2).join(.)),document.cookieencodeURIComponent(e)++encodeURIComponent(o)+c+(r?; domain+r:)+(t?; path+t:)+(i?; secure:),!0}}; // Implement IAB USP API. window.__uspapi function( command, version, callback ) { // Validate callback. if ( typeof callback ! function ) { return; } // Validate the given command. if ( command ! getUSPData || version ! 1 ) { callback( null, false ); return; } // Check for GPC. If set, override any stored cookie. if ( navigator.globalPrivacyControl ) { callback( { version: 1, uspString: 1YYN }, true ); return; } // Check for cookie. var consent cookieLib.getItem( usprivacy ); // Invalid cookie. if ( null consent ) { callback( null, false ); return; } // Everything checks out. Fire the provided callback with the consent data. callback( { version: 1, uspString: consent }, true ); }; // Initialization. document.addEventListener( DOMContentLoaded, function() { // Internal functions. var setDefaultOptInCookie function() { var value 1YNN; var domain .wordpress.com location.hostname.slice( -14 ) ? .rootDomain : location.hostname; cookieLib.setItem( usprivacy, value, 365 * 24 * 60 * 60, /, domain ); }; var setDefaultOptOutCookie function() { var value 1YYN; var domain .wordpress.com location.hostname.slice( -14 ) ? .rootDomain : location.hostname; cookieLib.setItem( usprivacy, value, 24 * 60 * 60, /, domain ); }; var setDefaultNotApplicableCookie function() { var value 1---; var domain .wordpress.com location.hostname.slice( -14 ) ? .rootDomain : location.hostname; cookieLib.setItem( usprivacy, value, 24 * 60 * 60, /, domain ); }; var setCcpaAppliesCookie function( applies ) { var domain .wordpress.com location.hostname.slice( -14 ) ? .rootDomain : location.hostname; cookieLib.setItem( ccpa_applies, applies, 24 * 60 * 60, /, domain ); } var maybeCallDoNotSellCallback function() { if ( function typeof window.doNotSellCallback ) { return window.doNotSellCallback(); } return false; } // Look for usprivacy cookie first. var usprivacyCookie cookieLib.getItem( usprivacy ); // Found a usprivacy cookie. if ( null ! usprivacyCookie ) { // If the cookie indicates that CCPA does not apply, then bail. if ( 1--- usprivacyCookie ) { return; } // CCPA applies, so call our callback to add Do Not Sell link to the page. maybeCallDoNotSellCallback(); // Were all done, no more processing needed. return; } // We dont have a usprivacy cookie, so check to see if we have a CCPA applies cookie. var ccpaCookie cookieLib.getItem( ccpa_applies ); // No CCPA applies cookie found, so well need to geolocate if this visitor is from California. // This needs to happen client side because we do not have region geo data in our $SERVER headers, // only country data -- therefore we cant vary cache on the region. if ( null ccpaCookie ) { var request new XMLHttpRequest(); request.open( GET, https://public-api.wordpress.com/geo/, true ); request.onreadystatechange function () { if ( 4 this.readyState ) { if ( 200 this.status ) { // Got a geo response. Parse out the region data. var data JSON.parse( this.response ); var region data.region ? data.region.toLowerCase() : ; var ccpa_applies california, colorado, connecticut, delaware, indiana, iowa, montana, new jersey, oregon, tennessee, texas, utah, virginia.indexOf( region ) > -1; // Set CCPA applies cookie. This keeps us from having to make a geo request too frequently. setCcpaAppliesCookie( ccpa_applies ); // Check if CCPA applies to set the proper usprivacy cookie. if ( ccpa_applies ) { if ( maybeCallDoNotSellCallback() ) { // Do Not Sell link added, so set default opt-in. setDefaultOptInCookie(); } else { // Failed showing Do Not Sell link as required, so default to opt-OUT just to be safe. setDefaultOptOutCookie(); } } else { // CCPA does not apply. setDefaultNotApplicableCookie(); } } else { // Could not geo, so lets assume for now that CCPA applies to be safe. setCcpaAppliesCookie( true ); if ( maybeCallDoNotSellCallback() ) { // Do Not Sell link added, so set default opt-in. setDefaultOptInCookie(); } else { // Failed showing Do Not Sell link as required, so default to opt-OUT just to be safe. setDefaultOptOutCookie(); } } } }; // Send the geo request. request.send(); } else { // We found a CCPA applies cookie. if ( ccpaCookie true ) { if ( maybeCallDoNotSellCallback() ) { // Do Not Sell link added, so set default opt-in. setDefaultOptInCookie(); } else { // Failed showing Do Not Sell link as required, so default to opt-OUT just to be safe. setDefaultOptOutCookie(); } } else { // CCPA does not apply. setDefaultNotApplicableCookie(); } } } ); }; // Kickoff initialization. if ( window.defQueue && defQueue.isLOHP && defQueue.isLOHP 2020 ) { defQueue.items.push( setupPrivacy ); } else { setupPrivacy(); } } )(); /script> !-- CCPA end --> div classwidget widget_eu_cookie_law_widget>div classhide-on-button ads-active data-hide-timeout30 data-consent-expiration180 ideu-cookie-law styledisplay: none> form methodpost> input typesubmit valueClose and accept classaccept /> Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use. br />To find out more, including how to control cookies, see here: a hrefhttps://automattic.com/cookies/ relnofollow> Cookie Policy /a> /form>/div>/div> div idactionbar styledisplay: none; classactnbr-pub-twentyfourteen actnbr-has-follow> ul> li classactnbr-btn actnbr-hidden> a classactnbr-action actnbr-actn-follow href> svg classgridicon height20 width20 xmlnshttp://www.w3.org/2000/svg viewBox0 0 20 20>path clip-ruleevenodd dm4 4.5h12v6.5h1.5v-6.5-1.5h-1.5-12-1.5v1.5 10.5c0 1.1046.89543 2 2 2h7v-1.5h-7c-.27614 0-.5-.2239-.5-.5zm10.5 2h-9v1.5h9zm-5 3h-4v1.5h4zm3.5 1.5h-1v1h1zm-1-1.5h-1.5v1.5 1 1.5h1.5 1 1.5v-1.5-1-1.5h-1.5zm-2.5 2.5h-4v1.5h4zm6.5 1.25h1.5v2.25h2.25v1.5h-2.25v2.25h-1.5v-2.25h-2.25v-1.5h2.25z fill-ruleevenodd>/path>/svg> span>Subscribe/span> /a> a classactnbr-action actnbr-actn-following no-display href> svg classgridicon height20 width20 xmlnshttp://www.w3.org/2000/svg viewBox0 0 20 20>path fill-ruleevenodd clip-ruleevenodd dM16 4.5H4V15C4 15.2761 4.22386 15.5 4.5 15.5H11.5V17H4.5C3.39543 17 2.5 16.1046 2.5 15V4.5V3H4H16H17.5V4.5V12.5H16V4.5ZM5.5 6.5H14.5V8H5.5V6.5ZM5.5 9.5H9.5V11H5.5V9.5ZM12 11H13V12H12V11ZM10.5 9.5H12H13H14.5V11V12V13.5H13H12H10.5V12V11V9.5ZM5.5 12H9.5V13.5H5.5V12Z fill#008A20>/path>path classfollowing-icon-tick dM13.5 16L15.5 18L19 14.5 stroke#008A20 stroke-width1.5>/path>/svg> span>Subscribed/span> /a> div classactnbr-popover tip tip-top-left actnbr-notice idfollow-bubble> div classtip-arrow>/div> div classtip-inner actnbr-follow-bubble> ul> li classactnbr-sitename> a hrefhttps://emeryblogger.com> img alt srchttps://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s50&dhttps%3A%2F%2Fs2.wp.com%2Fi%2Flogo%2Fwpcom-gray-white.png srcsethttps://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s50&dhttps%3A%2F%2Fs2.wp.com%2Fi%2Flogo%2Fwpcom-gray-white.png 1x, https://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s75&dhttps%3A%2F%2Fs2.wp.com%2Fi%2Flogo%2Fwpcom-gray-white.png 1.5x, https://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s100&dhttps%3A%2F%2Fs2.wp.com%2Fi%2Flogo%2Fwpcom-gray-white.png 2x, https://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s150&dhttps%3A%2F%2Fs2.wp.com%2Fi%2Flogo%2Fwpcom-gray-white.png 3x, https://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s200&dhttps%3A%2F%2Fs2.wp.com%2Fi%2Flogo%2Fwpcom-gray-white.png 4x classavatar avatar-50 height50 width50 /> Emery Blogger /a> /li> div classactnbr-message no-display>/div> form methodpost actionhttps://subscribe.wordpress.com accept-charsetutf-8 styledisplay: none;> div classactnbr-follow-count>Join 28 other subscribers/div> div> input typeemail nameemail placeholderEnter your email address classactnbr-email-field aria-labelEnter your email address /> /div> input typehidden nameaction valuesubscribe /> input typehidden nameblog_id value9784426 /> input typehidden namesource valuehttps://emeryblogger.com/ /> input typehidden namesub-type valueactionbar-follow /> input typehidden id_wpnonce name_wpnonce valueb73797936a /> div classactnbr-button-wrap> button typesubmit valueSign me up> Sign me up /button> /div> /form> li classactnbr-login-nudge> div> Already have a WordPress.com account? a hrefhttps://wordpress.com/log-in?redirect_tohttps%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Femeryblogger.com%252F2018%252F03%252F22%252Freviewing-guidelines-for-program-committee-members%252F>Log in now./a> /div> /li> /ul> /div> /div> /li> li classactnbr-ellipsis actnbr-hidden> svg classgridicon gridicons-ellipsis height24 width24 xmlnshttp://www.w3.org/2000/svg viewBox0 0 24 24>g>path dM7 12c0 1.104-.896 2-2 2s-2-.896-2-2 .896-2 2-2 2 .896 2 2zm12-2c-1.104 0-2 .896-2 2s.896 2 2 2 2-.896 2-2-.896-2-2-2zm-7 0c-1.104 0-2 .896-2 2s.896 2 2 2 2-.896 2-2-.896-2-2-2z/>/g>/svg> div classactnbr-popover tip tip-top-left actnbr-more> div classtip-arrow>/div> div classtip-inner> ul> li classactnbr-sitename> a hrefhttps://emeryblogger.com> img alt srchttps://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s50&dhttps%3A%2F%2Fs2.wp.com%2Fi%2Flogo%2Fwpcom-gray-white.png srcsethttps://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s50&dhttps%3A%2F%2Fs2.wp.com%2Fi%2Flogo%2Fwpcom-gray-white.png 1x, https://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s75&dhttps%3A%2F%2Fs2.wp.com%2Fi%2Flogo%2Fwpcom-gray-white.png 1.5x, https://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s100&dhttps%3A%2F%2Fs2.wp.com%2Fi%2Flogo%2Fwpcom-gray-white.png 2x, https://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s150&dhttps%3A%2F%2Fs2.wp.com%2Fi%2Flogo%2Fwpcom-gray-white.png 3x, https://secure.gravatar.com/blavatar/7fcd137214eb0138494561e2782e1f8586d9a715394258cb2dbe1af3ef11618d?s200&dhttps%3A%2F%2Fs2.wp.com%2Fi%2Flogo%2Fwpcom-gray-white.png 4x classavatar avatar-50 height50 width50 /> Emery Blogger /a> /li> li classactnbr-folded-customize> a hrefhttps://emeryblogger.wordpress.com/wp-admin/customize.php?urlhttps%3A%2F%2Femeryblogger.wordpress.com%2F> svg classgridicon gridicons-customize height20 width20 xmlnshttp://www.w3.org/2000/svg viewBox0 0 24 24>g>path dM2 6c0-1.505.78-3.08 2-4 0 .845.69 2 2 2 1.657 0 3 1.343 3 3 0 .386-.08.752-.212 1.09.74.594 1.476 1.19 2.19 1.81L8.9 11.98c-.62-.716-1.214-1.454-1.807-2.192C6.753 9.92 6.387 10 6 10c-2.21 0-4-1.79-4-4zm12.152 6.848l1.34-1.34c.607.304 1.283.492 2.008.492 2.485 0 4.5-2.015 4.5-4.5 0-.725-.188-1.4-.493-2.007L18 9l-2-2 3.507-3.507C18.9 3.188 18.225 3 17.5 3 15.015 3 13 5.015 13 7.5c0 .725.188 1.4.493 2.007L3 20l2 2 6.848-6.848c1.885 1.928 3.874 3.753 5.977 5.45l1.425 1.148 1.5-1.5-1.15-1.425c-1.695-2.103-3.52-4.092-5.448-5.977z/>/g>/svg> span>Customize/span> /a> /li> li classactnbr-folded-follow> a classactnbr-action actnbr-actn-follow href> svg classgridicon height20 width20 xmlnshttp://www.w3.org/2000/svg viewBox0 0 20 20>path clip-ruleevenodd dm4 4.5h12v6.5h1.5v-6.5-1.5h-1.5-12-1.5v1.5 10.5c0 1.1046.89543 2 2 2h7v-1.5h-7c-.27614 0-.5-.2239-.5-.5zm10.5 2h-9v1.5h9zm-5 3h-4v1.5h4zm3.5 1.5h-1v1h1zm-1-1.5h-1.5v1.5 1 1.5h1.5 1 1.5v-1.5-1-1.5h-1.5zm-2.5 2.5h-4v1.5h4zm6.5 1.25h1.5v2.25h2.25v1.5h-2.25v2.25h-1.5v-2.25h-2.25v-1.5h2.25z fill-ruleevenodd>/path>/svg> span>Subscribe/span> /a> a classactnbr-action actnbr-actn-following no-display href> svg classgridicon height20 width20 xmlnshttp://www.w3.org/2000/svg viewBox0 0 20 20>path fill-ruleevenodd clip-ruleevenodd dM16 4.5H4V15C4 15.2761 4.22386 15.5 4.5 15.5H11.5V17H4.5C3.39543 17 2.5 16.1046 2.5 15V4.5V3H4H16H17.5V4.5V12.5H16V4.5ZM5.5 6.5H14.5V8H5.5V6.5ZM5.5 9.5H9.5V11H5.5V9.5ZM12 11H13V12H12V11ZM10.5 9.5H12H13H14.5V11V12V13.5H13H12H10.5V12V11V9.5ZM5.5 12H9.5V13.5H5.5V12Z fill#008A20>/path>path classfollowing-icon-tick dM13.5 16L15.5 18L19 14.5 stroke#008A20 stroke-width1.5>/path>/svg> span>Subscribed/span> /a> /li> li classactnbr-signup>a hrefhttps://wordpress.com/start/>Sign up/a>/li> li classactnbr-login>a hrefhttps://wordpress.com/log-in?redirect_tohttps%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Femeryblogger.com%252F2018%252F03%252F22%252Freviewing-guidelines-for-program-committee-members%252F>Log in/a>/li> li classflb-report> a hrefhttps://wordpress.com/abuse/?report_urlhttps://emeryblogger.com target_blank relnoopener noreferrer> Report this content /a> /li> li classactnbr-reader> a hrefhttps://wordpress.com/read/feeds/1299600> View site in Reader /a> /li> li classactnbr-subs> a hrefhttps://subscribe.wordpress.com/>Manage subscriptions/a> /li> li classactnbr-fold>a href>Collapse this bar/a>/li> /ul> /div> /div> /li> /ul> /div> script>window.addEventListener( load, function( event ) { var link document.createElement( link ); link.href https://s0.wp.com/wp-content/mu-plugins/actionbar/actionbar.css?v20240822; link.type text/css; link.rel stylesheet; document.head.appendChild( link ); var script document.createElement( script ); script.src https://s0.wp.com/wp-content/mu-plugins/actionbar/actionbar.js?v20231122; script.defer true; document.body.appendChild( script );} );/script> script typetext/javascript> window.WPCOM_sharing_counts {https:\/\/emeryblogger.com\/2018\/03\/22\/reviewing-guidelines-for-program-committee-members\/:519,https:\/\/emeryblogger.com\/2016\/06\/08\/a-guide-for-session-chairs\/:470,https:\/\/emeryblogger.com\/2015\/10\/14\/coz-finding-code-that-counts-with-causal-profiling\/:467,https:\/\/emeryblogger.com\/2014\/11\/15\/doppio-selected-as-sigplan-research-highlight\/:461,https:\/\/emeryblogger.com\/2014\/08\/31\/washington-post-take-down-this-article\/:419,https:\/\/emeryblogger.com\/2012\/12\/06\/new-scientist-coverage-of-our-automan-project\/:285,https:\/\/emeryblogger.com\/2012\/12\/04\/me-on-wgby-explaining-cyberattacks-on-banks\/:277,https:\/\/emeryblogger.com\/2012\/10\/28\/most-influential-oopsla2012\/:269,https:\/\/emeryblogger.com\/2012\/07\/24\/acm-queue-article-software-needs-seatbelts-and-airbags\/:267,https:\/\/emeryblogger.com\/2012\/05\/31\/software-needs-seatbelts-and-airbags\/:248}; /script> div idjp-carousel-loading-overlay> div idjp-carousel-loading-wrapper> span idjp-carousel-library-loading> /span> /div> /div> div classjp-carousel-overlay styledisplay: none;> div classjp-carousel-container> !-- The Carousel Swiper --> div classjp-carousel-wrap swiper-container jp-carousel-swiper-container jp-carousel-transitions itemscope itemtypehttps://schema.org/ImageGallery> div classjp-carousel swiper-wrapper>/div> div classjp-swiper-button-prev swiper-button-prev> svg width25 height24 viewBox0 0 25 24 fillnone xmlnshttp://www.w3.org/2000/svg> mask idmaskPrev mask-typealpha maskUnitsuserSpaceOnUse x8 y6 width9 height12> path dM16.2072 16.59L11.6496 12L16.2072 7.41L14.8041 6L8.8335 12L14.8041 18L16.2072 16.59Z fillwhite/> /mask> g maskurl(#maskPrev)> rect x0.579102 width23.8823 height24 fill#FFFFFF/> /g> /svg> /div> div classjp-swiper-button-next swiper-button-next> svg width25 height24 viewBox0 0 25 24 fillnone xmlnshttp://www.w3.org/2000/svg> mask idmaskNext mask-typealpha maskUnitsuserSpaceOnUse x8 y6 width8 height12> path dM8.59814 16.59L13.1557 12L8.59814 7.41L10.0012 6L15.9718 12L10.0012 18L8.59814 16.59Z fillwhite/> /mask> g maskurl(#maskNext)> rect x0.34375 width23.8822 height24 fill#FFFFFF/> /g> /svg> /div> /div> !-- The main close buton --> div classjp-carousel-close-hint> svg width25 height24 viewBox0 0 25 24 fillnone xmlnshttp://www.w3.org/2000/svg> mask idmaskClose mask-typealpha maskUnitsuserSpaceOnUse x5 y5 width15 height14> path dM19.3166 6.41L17.9135 5L12.3509 10.59L6.78834 5L5.38525 6.41L10.9478 12L5.38525 17.59L6.78834 19L12.3509 13.41L17.9135 19L19.3166 17.59L13.754 12L19.3166 6.41Z fillwhite/> /mask> g maskurl(#maskClose)> rect x0.409668 width23.8823 height24 fill#FFFFFF/> /g> /svg> /div> !-- Image info, comments and meta --> div classjp-carousel-info> div classjp-carousel-info-footer> div classjp-carousel-pagination-container> div classjp-swiper-pagination swiper-pagination>/div> div classjp-carousel-pagination>/div> /div> div classjp-carousel-photo-title-container> h2 classjp-carousel-photo-caption>/h2> /div> div classjp-carousel-photo-icons-container> a href# classjp-carousel-icon-btn jp-carousel-icon-info aria-labelToggle photo metadata visibility> span classjp-carousel-icon> svg width25 height24 viewBox0 0 25 24 fillnone xmlnshttp://www.w3.org/2000/svg> mask idmaskInfo mask-typealpha maskUnitsuserSpaceOnUse x2 y2 width21 height20> path fill-ruleevenodd clip-ruleevenodd dM12.7537 2C7.26076 2 2.80273 6.48 2.80273 12C2.80273 17.52 7.26076 22 12.7537 22C18.2466 22 22.7046 17.52 22.7046 12C22.7046 6.48 18.2466 2 12.7537 2ZM11.7586 7V9H13.7488V7H11.7586ZM11.7586 11V17H13.7488V11H11.7586ZM4.79292 12C4.79292 16.41 8.36531 20 12.7537 20C17.142 20 20.7144 16.41 20.7144 12C20.7144 7.59 17.142 4 12.7537 4C8.36531 4 4.79292 7.59 4.79292 12Z fillwhite/> /mask> g maskurl(#maskInfo)> rect x0.8125 width23.8823 height24 fill#FFFFFF/> /g> /svg> /span> /a> a href# classjp-carousel-icon-btn jp-carousel-icon-comments aria-labelToggle photo comments visibility> span classjp-carousel-icon> svg width25 height24 viewBox0 0 25 24 fillnone xmlnshttp://www.w3.org/2000/svg> mask idmaskComments mask-typealpha maskUnitsuserSpaceOnUse x2 y2 width21 height20> path fill-ruleevenodd clip-ruleevenodd dM4.3271 2H20.2486C21.3432 2 22.2388 2.9 22.2388 4V16C22.2388 17.1 21.3432 18 20.2486 18H6.31729L2.33691 22V4C2.33691 2.9 3.2325 2 4.3271 2ZM6.31729 16H20.2486V4H4.3271V18L6.31729 16Z fillwhite/> /mask> g maskurl(#maskComments)> rect x0.34668 width23.8823 height24 fill#FFFFFF/> /g> /svg> span classjp-carousel-has-comments-indicator aria-labelThis image has comments.>/span> /span> /a> /div> /div> div classjp-carousel-info-extra> div classjp-carousel-info-content-wrapper> div classjp-carousel-photo-title-container> h2 classjp-carousel-photo-title>/h2> /div> div classjp-carousel-comments-wrapper> div idjp-carousel-comments-loading> span>Loading Comments.../span> /div> div classjp-carousel-comments>/div> div idjp-carousel-comment-form-container> span idjp-carousel-comment-form-spinner> /span> div idjp-carousel-comment-post-results>/div> form idjp-carousel-comment-form> label forjp-carousel-comment-form-comment-field classscreen-reader-text>Write a Comment.../label> textarea namecomment classjp-carousel-comment-form-field jp-carousel-comment-form-textarea idjp-carousel-comment-form-comment-field placeholderWrite a Comment... >/textarea> div idjp-carousel-comment-form-submit-and-info-wrapper> div idjp-carousel-comment-form-commenting-as> fieldset> label forjp-carousel-comment-form-email-field>Email (Required)/label> input typetext nameemail classjp-carousel-comment-form-field jp-carousel-comment-form-text-field idjp-carousel-comment-form-email-field /> /fieldset> fieldset> label forjp-carousel-comment-form-author-field>Name (Required)/label> input typetext nameauthor classjp-carousel-comment-form-field jp-carousel-comment-form-text-field idjp-carousel-comment-form-author-field /> /fieldset> fieldset> label forjp-carousel-comment-form-url-field>Website/label> input typetext nameurl classjp-carousel-comment-form-field jp-carousel-comment-form-text-field idjp-carousel-comment-form-url-field /> /fieldset> /div> input typesubmit namesubmit classjp-carousel-comment-form-button idjp-carousel-comment-form-button-submit valuePost Comment /> /div> /form> /div> /div> div classjp-carousel-image-meta> div classjp-carousel-title-and-caption> div classjp-carousel-photo-info> h3 classjp-carousel-caption itempropcaption description>/h3> /div> div classjp-carousel-photo-description>/div> /div> ul classjp-carousel-image-exif styledisplay: none;>/ul> a classjp-carousel-image-download href# target_blank styledisplay: none;> svg width25 height24 viewBox0 0 25 24 fillnone xmlnshttp://www.w3.org/2000/svg> mask idmask0 mask-typealpha maskUnitsuserSpaceOnUse x3 y3 width19 height18> path fill-ruleevenodd clip-ruleevenodd dM5.84615 5V19H19.7775V12H21.7677V19C21.7677 20.1 20.8721 21 19.7775 21H5.84615C4.74159 21 3.85596 20.1 3.85596 19V5C3.85596 3.9 4.74159 3 5.84615 3H12.8118V5H5.84615ZM14.802 5V3H21.7677V10H19.7775V6.41L9.99569 16.24L8.59261 14.83L18.3744 5H14.802Z fillwhite/> /mask> g maskurl(#mask0)> rect x0.870605 width23.8823 height24 fill#FFFFFF/> /g> /svg> span classjp-carousel-download-text>/span> /a> div classjp-carousel-image-map styledisplay: none;>/div> /div> /div> /div> /div> /div> /div> link crossoriginanonymous relstylesheet idall-css-0-2 hrefhttps://s2.wp.com/_static/??-eJyljUsKhDAQRC80mXZGDLiQOUsmaSTa+ZBOI95eBN260E3BK4pXsGRlU6wYKwRRmWT0kWHCmo2dD4aQ0h5OCBmsKUkYCXjxGYv6S3SEb8v8gge2c3QWd4XVEzo1GiIs6xXtB78wfHT/7Zu203raAHg3ZXE&cssminifyyes typetext/css mediaall />script idjetpack-carousel-js-extra>var jetpackSwiperLibraryPath {url:https:\/\/s2.wp.com\/wp-content\/mu-plugins\/jetpack-plugin\/moon\/_inc\/build\/carousel\/swiper-bundle.min.js};var jetpackCarouselStrings {widths:370,700,1000,1200,1400,2000,is_logged_in:,lang:en,ajaxurl:https:\/\/emeryblogger.com\/wp-admin\/admin-ajax.php,nonce:6c5a3a1410,display_exif:1,display_comments:1,single_image_gallery:1,single_image_gallery_media_file:,background_color:black,comment:Comment,post_comment:Post Comment,write_comment:Write a Comment...,loading_comments:Loading Comments...,download_original:View full size span class\photo-size\>{0}span class\photo-size-times\>\u00d7\/span>{1}\/span>,no_comment_text:Please be sure to submit some text with your comment.,no_comment_email:Please provide an email address to comment.,no_comment_author:Please provide your name to comment.,comment_post_error:Sorry, but there was an error posting your comment. Please try again later.,comment_approved:Your comment was approved.,comment_unapproved:Your comment is in moderation.,camera:Camera,aperture:Aperture,shutter_speed:Shutter Speed,focal_length:Focal Length,copyright:Copyright,comment_registration:0,require_name_email:1,login_url:https:\/\/emeryblogger.wordpress.com\/wp-login.php?redirect_tohttps%3A%2F%2Femeryblogger.com%2F2014%2F08%2F31%2Fwashington-post-take-down-this-article%2F,blog_id:9784426,meta_data:camera,aperture,shutter_speed,focal_length,copyright,stats_query_args:blog9784426&vwpcom&tz-4&user_id0&subdemeryblogger,is_public:1};/script>script idsharing-js-js-extra>var sharing_js_options {lang:en,counts:1,is_stats_active:1};/script>script crossoriginanonymous typetext/javascript srchttps://s2.wp.com/_static/??-eJylUtFOxCAQ/CG5zZm7+GT8FENh2267LBWWkP69aKyaxlRzhhdmmJllCFAX46IoikLHcTALl4EkQ43JW5+NY5szZpgaZZVPU76Db55QvhzkB9QMWNppnAkN2wqKYWGruOMPcpjmpn4pWHC04hnTgXhCXaybPzCEGAWeSRx0hdgDSU9Ciia7FJk3vJ4CyT5VRwxt8FI60NqItY8lKaK8de+LOKUo+Za7aCVVTEYpIJPg7X2cTbFk5E/dRvxU6O+xSozeDJbbY69H6H9j8mgTtl/l1/ctyfBL3tbO1MXFsIPN9xQezw/3bV3O18v0CmHrDp8>/script>script idsharing-js-js-after>var windowOpen; ( function () { function matches( el, sel ) { return !! ( el.matches && el.matches( sel ) || el.msMatchesSelector && el.msMatchesSelector( sel ) ); } document.body.addEventListener( click, function ( event ) { if ( ! event.target ) { return; } var el; if ( matches( event.target, a.share-facebook ) ) { el event.target; } else if ( event.target.parentNode && matches( event.target.parentNode, a.share-facebook ) ) { el event.target.parentNode; } if ( el ) { event.preventDefault(); // If theres another sharing window open, close it. if ( typeof windowOpen ! undefined ) { windowOpen.close(); } windowOpen window.open( el.getAttribute( href ), wpcomfacebook, menubar1,resizable1,width600,height400 ); return false; } } ); } )();var windowOpen; ( function () { function matches( el, sel ) { return !! ( el.matches && el.matches( sel ) || el.msMatchesSelector && el.msMatchesSelector( sel ) ); } document.body.addEventListener( click, function ( event ) { if ( ! event.target ) { return; } var el; if ( matches( event.target, a.share-linkedin ) ) { el event.target; } else if ( event.target.parentNode && matches( event.target.parentNode, a.share-linkedin ) ) { el event.target.parentNode; } if ( el ) { event.preventDefault(); // If theres another sharing window open, close it. if ( typeof windowOpen ! undefined ) { windowOpen.close(); } windowOpen window.open( el.getAttribute( href ), wpcomlinkedin, menubar1,resizable1,width580,height450 ); return false; } } ); } )();var windowOpen; ( function () { function matches( el, sel ) { return !! ( el.matches && el.matches( sel ) || el.msMatchesSelector && el.msMatchesSelector( sel ) ); } document.body.addEventListener( click, function ( event ) { if ( ! event.target ) { return; } var el; if ( matches( event.target, a.share-twitter ) ) { el event.target; } else if ( event.target.parentNode && matches( event.target.parentNode, a.share-twitter ) ) { el event.target.parentNode; } if ( el ) { event.preventDefault(); // If theres another sharing window open, close it. if ( typeof windowOpen ! undefined ) { windowOpen.close(); } windowOpen window.open( el.getAttribute( href ), wpcomtwitter, menubar1,resizable1,width600,height350 ); return false; } } ); } )();/script> script typetext/javascript> (function () { var wpcom_reblog { source: toolbar, toggle_reblog_box_flair: function (obj_id, post_id) { // Go to site selector. This will redirect to their blog if they only have one. const postEndpoint `https://wordpress.com/post`; // Ideally we would use the permalink here, but fortunately this will be replaced with the // post permalink in the editor. const originalURL `${ document.location.href }?page_id${ post_id }`; const url postEndpoint + ?url + encodeURIComponent( originalURL ) + &is_post_sharetrue + &v5; const redirect function () { if ( ! window.open( url, _blank ) ) { location.href url; } }; if ( /Firefox/.test( navigator.userAgent ) ) { setTimeout( redirect, 0 ); } else { redirect(); } }, }; window.wpcom_reblog wpcom_reblog; })(); /script>script typetext/javascript>// !CDATA(function() {try{ if ( window.external &&msIsSiteMode in window.external) { if (window.external.msIsSiteMode()) { var jl document.createElement(script); jl.typetext/javascript; jl.asynctrue; jl.src/wp-content/plugins/ie-sitemode/custom-jumplist.php; var s document.getElementsByTagName(script)0; s.parentNode.insertBefore(jl, s); } }}catch(e){}})();// >/script> script typetext/javascript> (function() { var extend function(out) { out out || {}; for (var i 1; i arguments.length; i++) { if (!argumentsi) continue; for (var key in argumentsi) { if (argumentsi.hasOwnProperty(key)) outkey argumentsikey; } } return out; }; extend( window.infiniteScroll.settings.scripts, mobile-useragent-info,jetpack-mu-wpcom-settings,rlt-proxy,jquery-core,jquery-migrate,jquery,media-video-jwt-bridge,cmp-script-stub,wpcom-actionbar-placeholder,grofiles-cards,wpgroho,wordads-smart,eu-cookie-law-script,jetpack_likes_queuehandler,the-neverending-homepage,twentyfourteen-script,jetpack-twitter-timeline,jetpack-carousel,tiled-gallery,sharing-js,carousel-wpcom ); extend( window.infiniteScroll.settings.styles, wordads-global,wordads-twentyfourteen,eu-cookie-law-style,jetpack_likes,the-neverending-homepage,wp-block-library,wp-block-library-theme,mediaelement,wp-mediaelement,jetpack-layout-grid,jetpack-ratings,coblocks-frontend,wpcom-core-compat-playlist-styles,wpcom-text-widget-styles,wpcom-bbpress2-staff-css,genericons,twentyfourteen-style,twentyfourteen-block-style,twentyfourteen-wpcom-style,reblogging,geo-location-flair,a8c-global-print,infinity-twentyfourteen,sharedaddy,social-logos,h4-global,wp-emoji-styles,videopress-video-style,jetpack-sharing-buttons-style,classic-theme-styles,global-styles,twentyfourteen-lato,twentyfourteen-ie,jetpack-global-styles-frontend-style,jetpack-carousel-swiper-css,jetpack-carousel,tiled-gallery,core-block-supports-duotone ); })(); /script> span idinfinite-aria aria-livepolite>/span> iframe srchttps://widgets.wp.com/likes/master.html?ver20241002#ver20241002&originhttps://emeryblogger.com scrollingno idlikes-master namelikes-master styledisplay:none;>/iframe> div idlikes-other-gravatars classwpl-new-layout roledialog aria-hiddentrue tabindex-1> div classlikes-text> span>%d/span> /div> ul classwpl-avatars sd-like-gravatars>/ul> /div> script src//stats.wp.com/w.js?67 defer>/script> script typetext/javascript>_tkq window._tkq || ;_stq window._stq || ;_tkq.push(storeContext, {blog_id:9784426,blog_tz:-4,user_lang:en,blog_lang:en,user_id:0});_stq.push(view, {blog:9784426,v:wpcom,tz:-4,user_id:0,subd:emeryblogger});_stq.push(extra, {crypt:UE5XaGUuOTlwaD85flAmcm1mcmZsaDhkV11YdWtpP0NsWnVkPS9sL0ViLndld3BuVT01Uj14Ti1yYTBnR1N+UVJ+VkxET2R3Rzh1fCxhSGx8YWFMaEkxLi5sMkZOQi45S3x+M35aQWlqaHFZb3oscXc0Y21fLkFQVXRBbz0vSj1JRzJ4fm1UbFs/UFBVXyZbWGYxemF5XW5bL1AwVERsPTY1b3IlcEZPWS5wblt1REJlTmVBRnhKQy5VUT1Zd0t3UVlzQSxMRGZ2SjFEdGEzd0dhc0wyM255UFNuaFNsd1pCN3BbcW9+Ukh3WmUxREZ2VixrVWpOZyxdMkUmRUUuUHdPYXVjTmRVb28tbFo3Z2d6TjN6enJuTXpEa0t1PzMsbXVhT1tJZnclUS03WzFRVEJOMXV1SC9+QmxvQWtiSkgvWyw/});_stq.push( clickTrackerInit, 9784426, 0 );/script>noscript>img srchttps://pixel.wp.com/b.gif?vnoscript styleheight:1px;width:1px;overflow:hidden;position:absolute;bottom:1px; alt />/noscript>script>if ( object typeof wpcom_mobile_user_agent_info ) { wpcom_mobile_user_agent_info.init(); var mobileStatsQueryString ; if( false ! wpcom_mobile_user_agent_info.matchedPlatformName ) mobileStatsQueryString + &x_ + mobile_platforms + + wpcom_mobile_user_agent_info.matchedPlatformName; if( false ! wpcom_mobile_user_agent_info.matchedUserAgentName ) mobileStatsQueryString + &x_ + mobile_devices + + wpcom_mobile_user_agent_info.matchedUserAgentName; if( wpcom_mobile_user_agent_info.isIPad() ) mobileStatsQueryString + &x_ + ipad_views + + views; if( ! mobileStatsQueryString ) { new Image().src document.location.protocol + //pixel.wp.com/g.gif?vwpcom-no-pv + mobileStatsQueryString + &baba + Math.random(); } }/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]