PageSourceSearch

https://joannawng.com/bio/

html joannawng.com collected 2026-10-02 01:32:53 UTC 105,886 bytes, 1,278 lines download raw bytes

1<!DOCTYPE html>
2<!--[if IE 6]>
3<html id="ie6" lang="en">
4<![endif]-->
5<!--[if IE 7]>
6<html id="ie7" lang="en">
7<![endif]-->
8<!--[if IE 8]>
9<html id="ie8" lang="en">
10<![endif]-->
11<!--[if !(IE 6) & !(IE 7) & !(IE 8)]><!-->
12<html lang="en">
13<!--<![endif]-->
14<head>
15<meta charset="UTF-8" />
16<meta name="viewport" content="width=device-width" />
17<link rel="profile" href="http://gmpg.org/xfn/11" />
18<link rel="pingback" href="https://joannawng.com/xmlrpc.php" />
19<!--[if lt IE 9]>
20<script src="https://s2.wp.com/wp-content/themes/pub/forever/js/html5.js?m=1323451932i" type="text/javascript"></script>
20
21<![endif]-->
22
23<title>Bio &#8211; Joanna W. Ng</title>
24<meta name='robots' content='max-image-preview:large' />
25
26<!-- Async WordPress.com Remote Login -->
27<script id="wpcom_remote_login_js">
28var wpcom_remote_login_extra_auth = '';
29function wpcom_remote_login_remove_dom_node_id( element_id ) {
30	var dom_node = document.getElementById( element_id );
31	if ( dom_node ) { dom_node.parentNode.removeChild( dom_node ); }
32}
33function wpcom_remote_login_remove_dom_node_classes( class_name ) {
34	var dom_nodes = document.querySelectorAll( '.' + class_name );
35	for ( var i = 0; i < dom_nodes.length; i++ ) {
36		dom_nodes[ i ].parentNode.removeChild( dom_nodes[ i ] );
37	}
38}
39function wpcom_remote_login_final_cleanup() {
40	wpcom_remote_login_remove_dom_node_classes( "wpcom_remote_login_msg" );
41	wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_key" );
42	wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_validate" );
43	wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_js" );
44	wpcom_remote_login_remove_dom_node_id( "wpcom_request_access_iframe" );
45	wpcom_remote_login_remove_dom_node_id( "wpcom_request_access_styles" );
46}
47
48// Watch for messages back from the remote login
49window.addEventListener( "message", function( e ) {
50	if ( e.origin === "https://r-login.wordpress.com" ) {
51		var data = {};
52		try {
53			data = JSON.parse( e.data );
54		} catch( e ) {
55			wpcom_remote_login_final_cleanup();
56			return;
57		}
58
59		if ( data.msg === 'LOGIN' ) {
60			// Clean up the login check iframe
61			wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_key" );
62
63			var id_regex = new RegExp( /^[0-9]+$/ );
64			var token_regex = new RegExp( /^.*|.*|.*$/ );
65			if (
66				token_regex.test( data.token )
67				&& id_regex.test( data.wpcomid )
68			) {
69				// We have everything we need to ask for a login
70				var script = document.createElement( "script" );
71				script.setAttribute( "id", "wpcom_remote_login_validate" );
72				script.src = '/remote-login.php?wpcom_remote_login=validate'
73					+ '&wpcomid=' + data.wpcomid
74					+ '&token=' + encodeURIComponent( data.token )
75					+ '&host=' + window.location.protocol
76					+ '//' + window.location.hostname
77					+ '&postid=41'
78					+ '&is_singular=';
79				document.body.appendChild( script );
80			}
81
82			return;
83		}
84
85		// Safari ITP, not logged in, so redirect
86		if ( data.msg === 'LOGIN-REDIRECT' ) {
87			window.location = 'https://wordpress.com/log-in?redirect_to=' + window.location.href;
88			return;
89		}
90
91		// Safari ITP, storage access failed, remove the request
92		if ( data.msg === 'LOGIN-REMOVE' ) {
93			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; } }';
94			var style_zap = document.createElement( 'style' );
95			style_zap.type = 'text/css';
96			style_zap.appendChild( document.createTextNode( css_zap ) );
97			document.body.appendChild( style_zap );
98
99			var e = document.getElementById( 'wpcom_request_access_iframe' );
100			e.parentNode.removeChild( e );
101
102			document.cookie = 'wordpress_com_login_access=denied; path=/; max-age=31536000';
103
104			return;
105		}
106
107		// Safari ITP
108		if ( data.msg === 'REQUEST_ACCESS' ) {
109			console.log( 'request access: safari' );
110
111			// Check ITP iframe enable/disable knob
112			if ( wpcom_remote_login_extra_auth !== 'safari_itp_iframe' ) {
113				return;
114			}
115
116			// If we are in a "private window" there is no ITP.
117			var private_window = false;
118			try {
119				var opendb = window.openDatabase( null, null, null, null );
120			} catch( e ) {
121				private_window = true;
122			}
123
124			if ( private_window ) {
125				console.log( 'private window' );
126				return;
127			}
128
129			var iframe = document.createElement( 'iframe' );
130			iframe.id = 'wpcom_request_access_iframe';
131			iframe.setAttribute( 'scrolling', 'no' );
132			iframe.setAttribute( 'sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin allow-top-navigation-by-user-activation' );
133			iframe.src = 'https://r-login.wordpress.com/remote-login.php?wpcom_remote_login=request_access&origin=' + encodeURIComponent( data.origin ) + '&wpcomid=' + encodeURIComponent( data.wpcomid );
134
135			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; } ';
136
137			var style = document.createElement( 'style' );
138			style.type = 'text/css';
139			style.id = 'wpcom_request_access_styles';
140			style.appendChild( document.createTextNode( css ) );
141			document.body.appendChild( style );
142
143			document.body.appendChild( iframe );
144		}
145
146		if ( data.msg === 'DONE' ) {
147			wpcom_remote_login_final_cleanup();
148		}
149	}
150}, false );
151
152// Inject the remote login iframe after the page has had a chance to load
153// more critical resources
154window.addEventListener( "DOMContentLoaded", function( e ) {
155	var iframe = document.createElement( "iframe" );
156	iframe.style.display = "none";
157	iframe.setAttribute( "scrolling", "no" );
158	iframe.setAttribute( "id", "wpcom_remote_login_key" );
159	iframe.src = "https://r-login.wordpress.com/remote-login.php"
160		+ "?wpcom_remote_login=key"
161		+ "&origin=aHR0cHM6Ly9qb2FubmF3bmcuY29t"
162		+ "&wpcomid=76957057"
163		+ "&time=" + Math.floor( Date.now() / 1000 );
164	document.body.appendChild( iframe );
165}, false );
166</script>
166
167<link rel='dns-prefetch' href='//s1.wp.com' />
168<link rel='dns-prefetch' href='//s2.wp.com' />
169<link rel='dns-prefetch' href='//widgets.wp.com' />
170<link rel='dns-prefetch' href='//wordpress.com' />
171<link rel='dns-prefetch' href='//fonts-api.wp.com' />
172<link rel='dns-prefetch' href='//s0.wp.com' />
173<link rel='dns-prefetch' href='//af.pubmine.com' />
174<link rel="alternate" type="application/rss+xml" title="Joanna W. Ng &raquo; Feed" href="https://joannawng.com/feed/" />
175<link rel="alternate" type="application/rss+xml" title="Joanna W. Ng &raquo; Comments Feed" href="https://joannawng.com/comments/feed/" />
176<link rel="alternate" type="application/rss+xml" title="Joanna W. Ng &raquo; Bio Comments Feed" href="https://joannawng.com/bio/feed/" />
177	
177<script type="text/javascript">
178		/* <![CDATA[ */
179		function addLoadEvent(func) {
180			var oldonload = window.onload;
181			if (typeof window.onload != 'function') {
182				window.onload = func;
183			} else {
184				window.onload = function () {
185					oldonload();
186					func();
187				}
188			}
189		}
190		/* ]]> */
191	</script>
191
192	<style id="wp-img-auto-sizes-contain-inline-css">
193img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
194/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
195</style>
196<link crossorigin='anonymous' rel='stylesheet' id='all-css-2-1' href='/_static/??/wp-content/mu-plugins/widgets/eu-cookie-law/templates/style.css,/wp-content/mu-plugins/likes/jetpack-likes.css?m=1743883414j&cssminify=yes' type='text/css' media='all' />
197<style id="wp-emoji-styles-inline-css">
198
199	img.wp-smiley, img.emoji {
200		display: inline !important;
201		border: none !important;
202		box-shadow: none !important;
203		height: 1em !important;
204		width: 1em !important;
205		margin: 0 0.07em !important;
206		vertical-align: -0.1em !important;
207		background: none !important;
208		padding: 0 !important;
209	}
210/*# sourceURL=wp-emoji-styles-inline-css */
211</style>
212<style id="wp-block-library-inline-css">
213:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
213--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
214
215/*# sourceURL=/wp-content/plugins/gutenberg-core/v24.0.0/build/styles/block-library/common.min.css */
216</style>
217<style id="wp-block-paragraph-inline-css">
218.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:var(--wp--style--block-background-padding,1.25em 2.375em)}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
219/*# sourceURL=/wp-content/plugins/gutenberg-core/v24.0.0/build/styles/block-library/paragraph/style.min.css */
220</style>
221<style id="wp-block-library-inline-css-extra">
222.has-text-align-justify {
223	text-align:justify;
224}
225.has-text-align-justify{text-align:justify;}
226/*# sourceURL=wp-block-library-inline-css */
227</style>
228
229<style id="classic-theme-styles-inline-css">
230.wp-block-button__link{background-color:#32373c;border-radius:9999px;box-shadow:none;color:#fff;font-size:1.125em;padding:calc(.667em + 2px) calc(1.333em + 2px);text-decoration:none}.wp-block-file__button{background:#32373c;color:#fff}.wp-block-accordion-heading{margin:0}.wp-block-accordion-heading__toggle{background-color:inherit!important;color:inherit!important}.wp-block-accordion-heading__toggle:not(:focus-visible){outline:none}.wp-block-accordion-heading__toggle:focus,.wp-block-accordion-heading__toggle:hover{background-color:inherit!important;border:none;box-shadow:none;color:inherit;padding:var(--wp--preset--spacing--20,1em) 0;text-decoration:none}.wp-block-accordion-heading__toggle:focus-visible{outline:auto;outline-offset:0}.wp-block-tab:not(.has-text-color){color:inherit!important}.wp-block-tab:not(.has-background){background-color:inherit!important}.wp-block-tab:focus,.wp-block-tab:hover{text-decoration:none}.wp-block-tab:focus-visible{outline:auto;outline-offset:0}
231/*# sourceURL=/wp-content/plugins/gutenberg-core/v24.0.0/build/styles/block-library/classic.min.css */
232</style>
233
234<style id="coblocks-inline-format-inline-css">
235.uppercase{text-transform:uppercase}
236/*# sourceURL=coblocks-inline-format-inline-css */
237</style>
238<link crossorigin='anonymous' rel='stylesheet' id='all-css-12-1' href='/_static/??-eJx9jEEOAiEQBD/kQECjeDC+ZWEnijIwYWA3/l72op689KFTVXplCCU3zE1z6reYRYfiUwlP0VYZpwxIJE4IFRd10HOU9iFA2iuhCiI7/ROiDt9WxfETT20jCOc4YUIa2D9t5eGA91xRBMZS7ATtPkTZvCtdzNEZt7f2fHq8Afl7R7w=&cssminify=yes' type='text/css' media='all' />
239<style id="global-styles-inline-css">
240: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: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--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--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 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,rgb(252,185,
2400) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 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 rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }: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;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.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;}
240.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;}
241/*# sourceURL=global-styles-inline-css */
242</style>
243
244<link crossorigin='anonymous' rel='stylesheet' id='all-css-14-1' href='/wp-content/mu-plugins/jetpack-mu-wpcom-plugin/sun/jetpack_vendor/automattic/jetpack-mu-wpcom/src/build/verbum-comments/verbum-comments.css?m=1790591968i&cssminify=yes' type='text/css' media='all' />
245<link rel='stylesheet' id='verbum-gutenberg-css-css' href='https://widgets.wp.com/verbum-block-editor/block-editor.css?ver=1771405207' media='all' />
246<link crossorigin='anonymous' rel='stylesheet' id='all-css-16-1' href='/_static/??-eJyNjNEOgjAMRX/I2czEgA/Gf3GpWli7hXUQ/t4iCSE+8daee++BKbuQRFEUuLoc65ukQEjMhlyk
246Hu0rf+Rs5AQEkpRsXbZjDXZO/SCbIdcnvNKAIw5AEqDoHNFN2axHJr/6Unzw3Tdt62++uVy7L5IMRfc=&cssminify=yes' type='text/css' media='all' />
247<link rel='stylesheet' id='raleway-css' href='https://fonts-api.wp.com/css?family=Raleway:100&#038;ver=7.2-alpha-63387' media='all' />
248<link crossorigin='anonymous' rel='stylesheet' id='all-css-18-1' href='/_static/??-eJzTLy/QTc7PK0nNK9HPLdUtyClNz8wr1i9KTcrJTwcy0/WTi5G5ekCujj52Temp+bo5+cmJJZn5eSgc3bScxMwikFb7XFtDE1NLExMLc0OTLACohS2q&cssminify=yes' type='text/css' media='all' />
249<link crossorigin='anonymous' rel='stylesheet' id='print-css-19-1' href='/wp-content/mu-plugins/global-print/global-print.css?m=1465851035i&cssminify=yes' type='text/css' media='print' />
250<style id="jetpack-global-styles-frontend-style-inline-css">
251: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;}
252/*# sourceURL=jetpack-global-styles-frontend-style-inline-css */
253</style>
254<link crossorigin='anonymous' rel='stylesheet' id='all-css-22-1' href='/_static/??-eJyNjcsKAjEMRX/ImhmUURfip0inLW3GNCmmQfx7H7gRN+7ugcs5cGsuCPfEHaq5RpaRFZbUmw+XD4MaQ5VolBS0+GuKPsb7eyLndVBdwd+iM3KA2ZAiqAT05Eiy6Bf8KHtJ9RkvW8gks6fX4VSP426/mQ7TMA7LA38FSqA=&cssminify=yes' type='text/css' media='all' />
255<script id="wpcom-actionbar-placeholder-js-extra">
256var actionbardata = {"siteID":"76957057","postID":"41","siteURL":"https://joannawng.com","xhrURL":"https://joannawng.com/wp-admin/admin-ajax.php","nonce":"4ca43495cc","isLoggedIn":"","statusMessage":"","subsEmailDefault":"instantly","proxyScriptUrl":"https://s0.wp.com/wp-content/js/wpcom-proxy-request.js?m=1513050504i&amp;ver=20211021","shortlink":"https://wp.me/P5cU2R-F","i18n":{"followedText":"New posts from this site will now appear in your \u003Ca href=\"https://wordpress.com/reader\"\u003EReader\u003C/a\u003E","foldBar":"Collapse this bar","unfoldBar":"Expand this bar","shortLinkCopied":"Copied to clipboard."}};
257//# sourceURL=wpcom-actionbar-placeholder-js-extra
258</script>
vendor: 1 bytes, line 258
258
259<script id="jetpack-mu-wpcom-settings-js-before">
260var JETPACK_MU_WPCOM_SETTINGS = {"assetsUrl":"https://s1.wp.com/wp-content/mu-plugins/jetpack-mu-wpcom-plugin/sun/jetpack_vendor/automattic/jetpack-mu-wpcom/src/build/"};
261//# sourceURL=jetpack-mu-wpcom-settings-js-before
262</script>
vendor: 1 bytes, line 262
262
263<script crossorigin='anonymous' type='text/javascript'  src='/_static/??/wp-content/js/rlt-proxy.js,/wp-content/blog-plugins/wordads-classes/js/cmp/v2/cmp-non-gdpr.js?m=1780567333j'></script>
vendor: 1 bytes, line 263
263
264<script id="rlt-proxy-js-after">
265	rltInitialize( {"token":null,"iframeOrigins":["https:\/\/widgets.wp.com"]} );
266//# sourceURL=rlt-proxy-js-after
267</script>
267
268<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://joannawng.wordpress.com/xmlrpc.php?rsd" />
269<meta name="generator" content="WordPress.com" />
270<link rel="canonical" href="https://joannawng.com/bio/" />
271<link rel='shortlink' href='https://wp.me/P5cU2R-F' />
272<link rel="alternate" type="application/json+oembed" href="https://public-api.wordpress.com/oembed/?format=json&amp;url=https%3A%2F%2Fjoannawng.com%2Fbio%2F&amp;for=wpcom-auto-discovery" /><link rel="alternate" type="application/xml+oembed" href="https://public-api.wordpress.com/oembed/?format=xml&amp;url=https%3A%2F%2Fjoannawng.com%2Fbio%2F&amp;for=wpcom-auto-discovery" />
273<!-- Jetpack Open Graph Tags -->
274<meta property="og:type" content="article" />
275<meta property="og:title" content="Bio" />
276<meta property="og:url" content="https://joannawng.com/bio/" />
277<meta property="og:description" content="Joanna Ng is the founder of Devarim Design. An ex-IBM-er, Joanna pivoted to innovate in an entrepreneurial start-up setting, focusing on Artificial Intelligence, specialized in Augmented Cognition,…" />
278<meta property="article:published_time" content="2014-10-15T17:55:23+00:00" />
279<meta property="article:modified_time" content="2022-11-03T17:46:11+00:00" />
280<meta property="og:site_name" content="Joanna W. Ng" />
281<meta property="og:image" content="https://joannawng.com/wp-content/uploads/2014/10/img_4055.jpg" />
282<meta property="og:image:width" content="4752" />
283<meta property="og:image:height" content="3168" />
284<meta property="og:image:alt" content="IMG_4055" />
285<meta property="og:locale" content="en_US" />
286<meta property="article:publisher" content="https://www.facebook.com/WordPresscom" />
287<meta name="twitter:text:title" content="Bio" />
288<meta name="twitter:card" content="summary" />
289
290<!-- End Jetpack Open Graph Tags -->
291<link rel="shortcut icon" type="image/x-icon" href="https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=32" sizes="16x16" />
292<link rel="icon" type="image/x-icon" href="https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=32" sizes="16x16" />
293<link rel="apple-touch-icon" href="https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=114" />
294<link rel='openid.server' href='https://joannawng.com/?openidserver=1' />
295<link rel='openid.delegate' href='https://joannawng.com/' />
296<link rel="search" type="application/opensearchdescription+xml" href="https://joannawng.com/osd.xml" title="Joanna W. Ng" />
297<link rel="search" type="application/opensearchdescription+xml" href="https://s1.wp.com/opensearch.xml" title="WordPress.com" />
298<meta name="theme-color" content="#f1ecdf" />
299		<style type="text/css">
300			.recentcomments a {
301				display: inline !important;
302				padding: 0 !important;
303				margin: 0 !important;
304			}
305
306			table.recentcommentsavatartop img.avatar, table.recentcommentsavatarend img.avatar {
307				border: 0px;
308				margin: 0;
309			}
310
311			table.recentcommentsavatartop a, table.recentcommentsavatarend a {
312				border: 0px !important;
313				background-color: transparent !important;
314			}
315
316			td.recentcommentsavatarend, td.recentcommentsavatartop {
317				padding: 0px 0px 1px 0px;
318				margin: 0px;
319			}
320
321			td.recentcommentstextend {
322				border: none !important;
323				padding: 0px 0px 2px 10px;
324			}
325
326			.rtl td.recentcommentstextend {
327				padding: 0px 10px 2px 0px;
328			}
329
330			td.recentcommentstexttop {
331				border: none;
332				padding: 0px 0px 0px 10px;
333			}
334
335			.rtl td.recentcommentstexttop {
336				padding: 0px 10px 0px 0px;
337			}
338		</style>
339		<meta name="description" content="Joanna Ng is the founder of Devarim Design. An ex-IBM-er, Joanna pivoted to innovate in an entrepreneurial start-up setting, focusing on Artificial Intelligence, specialized in Augmented Cognition, by integrating with IoT and Blockchain, applying to all of it her design-thinking methodology. Joanna’s niche is her capacity and insight in turning complex abstractions and theories and&hellip;" />
340	<style type="text/css">
341	#masthead img {
342		margin: 1.615em 0 0;
343	}
344	.custom-header {
345		display: block;
346		text-align: center;
347	}
348			#site-title a {
349			color: #1982d1;
350		}
351		</style>
352	<style id="custom-background-css">
353body.custom-background { background-color: #f1ecdf; background-image: url("https://joannawng.files.wordpress.com/2022/11/img_1706.jpeg"); background-position: right top; background-size: auto; background-repeat: repeat; background-attachment: scroll; }
354</style>
355<script>
356var wa_client = {}; wa_client.cmd = []; wa_client.config = { 'blog_id': 76957057, 'blog_language': 'en', 'is_wordads': false, 'hosting_type': 0, 'afp_account_id': null, 'afp_host_id': 5038568878849053, 'theme': 'pub/forever', '_': { 'title': 'Advertisement', 'privacy_settings': 'Privacy Settings' }, 'formats': [ 'inline', 'belowpost', 'bottom_sticky', 'sidebar_sticky_right', 'sidebar', 'gutenberg_rectangle', 'gutenberg_leaderboard', 'gutenberg_mobile_leaderboard', 'gutenberg_skyscraper' ] };
357</script>
357
358		
358<script type="text/javascript">
359
360			window.doNotSellCallback = function() {
361
362				var linkElements = [
363					'a[href="https://wordpress.com/?ref=footer_blog"]',
364					'a[href="https://wordpress.com/?ref=footer_website"]',
365					'a[href="https://wordpress.com/?ref=vertical_footer"]',
366					'a[href^="https://wordpress.com/?ref=footer_segment_"]',
367				].join(',');
368
369				var dnsLink = document.createElement( 'a' );
370				dnsLink.href = 'https://wordpress.com/advertising-program-optout/';
371				dnsLink.classList.add( 'do-not-sell-link' );
372				dnsLink.rel = 'nofollow';
373				dnsLink.style.marginLeft = '0.5em';
374				dnsLink.textContent = 'Do Not Sell or Share My Personal Information';
375
376				var creditLinks = document.querySelectorAll( linkElements );
377
378				if ( 0 === creditLinks.length ) {
379					return false;
380				}
381
382				Array.prototype.forEach.call( creditLinks, function( el ) {
383					el.insertAdjacentElement( 'afterend', dnsLink );
384				});
385
386				return true;
387			};
388
389		</script>
389
390		<style type="text/css" id="custom-colors-css">body { background-color: #F1ECDF;}
391a { color: #816D0D;}
392.entry-title a:focus, .entry-title a:active, .entry-title a:hover { color: #816D0D;}
393.recent-title a:focus, .recent-title a:active, .recent-title a:hover { color: #816D0D;}
394.entry-meta a { color: #816D0D;}
395.more-link a { color: #816D0D;}
396#page #site-title a { color: #816D0D;}
397.more-link a { color: #816D0D;}
398#site-description { color: #2A2A2A;}
399.recent-title a { color: #2A2A2A;}
400.entry-title a { color: #2A2A2A;}
401#secondary .widget-title { color: #2A2A2A;}
402</style>
403<script type="text/javascript">
404	window.google_analytics_uacct = "UA-52447-2";
405</script>
405
406
407<script type="text/javascript">
408	var _gaq = _gaq || [];
409	_gaq.push(['_setAccount', 'UA-52447-2']);
410	_gaq.push(['_gat._anonymizeIp']);
411	_gaq.push(['_setDomainName', 'none']);
412	_gaq.push(['_setAllowLinker', true]);
413	_gaq.push(['_initData']);
414	_gaq.push(['_trackPageview']);
415
416	(function() {
417		var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
418		ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
419		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
420	})();
421</script>
421
422<link crossorigin='anonymous' rel='stylesheet' id='all-css-0-5' href='/_static/??-eJyNjMEKgzAQBX9IfVpq60X8lGLXRaLJJrhZ/P1SUM8eZxgGeyopSmbJCFYmb7MTxcI5jbQeDDXBxwnh6yOtCt1d4q0i1QK3ByFO5llB4xZN2V/NKf6/IfTNu2sfzbPuXssPrlM6pw==&cssminify=yes' type='text/css' media='all' />
423
424</head>
425
426<body class="wp-singular page-template-default page page-id-41 custom-background wp-theme-pubforever customizer-styles-applied single-author jetpack-reblog-enabled">
427
428<div id="page" class="hfeed">
429
430		
431<header id="masthead" role="banner">
432	<h1 id="site-title"><a href="https://joannawng.com/" title="Joanna W. Ng" rel="home">Joanna W. Ng</a></h1>
433
434				<a class="custom-header" href="https://joannawng.com/" rel="home">
435			<img class="custom-header-image" src="https://joannawng.com/wp-content/uploads/2022/11/cropped-img_7706-1.jpg" width="885" height="666" alt="" />
436		</a>
437	
438	<nav id="access" role="navigation">
439		<h1 class="assistive-text section-heading">Main menu</h1>
440		<div class="skip-link assistive-text"><a href="#content" title="Skip to content">Skip to content</a></div>
441
442		<div class="menu-bio-container"><ul id="menu-bio" class="menu"><li id="menu-item-96" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-96"><a href="https://joannawng.com/about/">About</a></li>
443<li id="menu-item-42" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-41 current_page_item menu-item-42"><a href="https://joannawng.com/bio/" aria-current="page">Bio</a></li>
444<li id="menu-item-182" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-182"><a href="https://joannawng.com/thoughts-on-technologies/">Thoughts on New Technologlies</a></li>
445<li id="menu-item-38" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-38"><a href="https://joannawng.com/anecdotes-of-innovation/">Thoughts on Innovations</a></li>
446<li id="menu-item-89" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-89"><a href="https://joannawng.com/about-women-in-technology/">Thoughts on Women in Technology</a></li>
447<li id="menu-item-54" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-54"><a href="https://joannawng.com/why-a-blog-about-me/">Personal Anecdotes</a></li>
448<li id="menu-item-46" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-46"><a href="https://joannawng.com/patents/">Patents Issued</a></li>
449<li id="menu-item-50" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-50"><a href="https://joannawng.com/publications/">Publications</a></li>
450<li id="menu-item-71" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-71"><a href="https://joannawng.com/talks-presentations/">Talks &amp; Presentations</a></li>
451<li id="menu-item-83" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-83"><a href="https://joannawng.com/sources-of-inspiration/">Sources of Inspiration</a></li>
452<li id="menu-item-459" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-459"><a href="https://joannawng.com/stuff-i-think-about/">Stuff I Care About</a></li>
453</ul></div>	</nav><!-- #access -->
454</header><!-- #masthead -->
455	<div id="main">
456		<div id="primary">
457			<div id="content" role="main">
458
459				
460					
461<article id="post-41" class="post-41 page type-page status-publish hentry">
462	<header class="entry-header">
463		<h1 class="entry-title">Bio</h1>
464	</header><!-- .entry-header -->
465
466	<div class="entry-content">
467		<p><img data-attachment-id="32" data-permalink="https://joannawng.com/img_4055/" data-orig-file="https://joannawng.com/wp-content/uploads/2014/10/img_4055.jpg" data-orig-size="4752,3168" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;5.6&quot;,&quot;camera&quot;:&quot;Canon EOS REBEL T1i&quot;,&quot;created_timestamp&quot;:&quot;1413334758&quot;,&quot;focal_length&quot;:&quot;40&quot;,&quot;iso&quot;:&quot;400&quot;,&quot;shutter_speed&quot;:&quot;0.016666666666667&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="IMG_4055" data-image-description="" data-image-caption="" data-large-file="https://joannawng.com/wp-content/uploads/2014/10/img_4055.jpg?w=560" class="alignnone size-full wp-image-32" src="https://joannawng.com/wp-content/uploads/2014/10/img_4055.jpg" alt="IMG_4055" width="4752" height="3168" srcset="https://joannawng.com/wp-content/uploads/2014/10/img_4055.jpg 4752w, https://joannawng.com/wp-content/uploads/2014/10/img_4055.jpg?w=150&amp;h=100 150w, https://joannawng.com/wp-content/uploads/2014/10/img_4055.jpg?w=300&amp;h=200 300w, https://joannawng.com/wp-content/uploads/2014/10/img_4055.jpg?w=768&amp;h=512 768w, https://joannawng.com/wp-content/uploads/2014/10/img_4055.jpg?w=1024&amp;h=683 1024w, https://joannawng.com/wp-content/uploads/2014/10/img_4055.jpg?w=1440&amp;h=960 1440w" sizes="(max-width: 4752px) 100vw, 4752px" /></p>
468<p>Joanna Ng is the founder of Devarim Design. An ex-IBM-er, Joanna pivoted to innovate in an entrepreneurial start-up setting, focusing on Artificial Intelligence, specialized in Augmented Cognition, by integrating with IoT and Blockchain, applying to all of it her design-thinking methodology.</p>
469<p>Joanna’s niche is her capacity and insight in turning complex abstractions and theories and research outcome into useful products and s
469olutions. She held a seven-year tenure as the Head of Research and Director of the Centre for Advanced Studies, IBM Canada Lab; and accredited as an IBM Master Inventor.</p>
470<p>Professionally as an inventor and technologist, her portfolio includes:</p>
471<ul>
472<li>Being granted to her name forty-nine patents by U.S. and other countries’ Patent Offices</li>
473<li>Co-authored two computer science books with Springer: <a href="https://www.amazon.com/gp/product/3642166008/ref=dbs_a_def_rwt_bibl_vppi_i3" target="_blank" rel="noopener">The Smart Internet (2010)</a> and <a href="https://www.amazon.com/gp/product/3642399940/ref=dbs_a_def_rwt_bibl_vppi_i2" target="_blank" rel="noopener">The Personal Web (2013)</a></li>
474<li>Published and co-authored over twenty <a href="https://dblp.org/pid/63/8816.html" target="_blank" rel="noopener">peer-reviewed academic papers</a></li>
475</ul>
476<p>Some of Joanna&#8217;s inventions are highlighted below:</p>
477<ul>
478<li><a href="https://joannawng.com/wp-content/uploads/2014/10/cas-research-the-four-languages-of-innovation-april-2015-v2.pdf" target="_blank" rel="noopener">&#8220;The Four Languages of Innovation&#8221;</a></li>
479<li>&#8220;The Smart Internet&#8221;</li>
480<li>&#8220;The Personal Web&#8221;</li>
481<li>&#8220;Personalized Web Tasking&#8221;, &#8220;Web Tasking&#8221;</li>
482<li>Scribble on IISE</li>
483<li>SOSA (Social Ontology &amp; Semantic Actions)</li>
484<li>REAST (REpresentational Action State Transfer) and ROH (Resource Oriented Hypermedia)</li>
485<li>DIANE (Domain Informatics and ANalytics for Enterprise) aka Talk To Your Own Data</li>
486</ul>
487<p>Personally as a person of faith in Christ, her ministries in faith includes:</p>
488<ul>
489<li>Started a virtual and local hybrid faith community to promote the integration of  faith and work called  <a href="https://www.koe.community/" target="_blank" rel="noopener">KOE (Kingdom On Earth)</a></li>
490<li>Being a speaker at Lausanne Global Workplace Forum (GWF) at Manila, Philippines in June 2019. She gave two talks at its Media &amp; Technology Consultation; one on “Redeeming AI for God’s Kingdom” and the other one on “Using Mobile &amp; Social Computing for the Great Commission. She was also one of the main tent panelists on “AI at the Workplace”. </li>
491<li>Being a voice of faith in the tech-space: She published an article through Christianity Today, called <a href="https://www.christianitytoday.com/ct/2020/june-web-only/artificial-intelligence-todays-tower-of-babel-ai-ethics.html" target="_blank" rel="noopener">How Artificial Super Intelligence Is Today&#8217;s Tower of Babel</a></li>
492<li>Being interviewed by <a href="https://aiandfaith.org/meet-joanna-ng-ai-pioneer-computer-scientist-and-disciple-of-jesus/" target="_blank" rel="noopener">AI and Faith</a> and Alpha Asia <a href="https://www.youtube.com/watch?v=U5mzdgTL8_A" target="_blank" rel="noopener">Alpha Asia</a></li>
493<li>Profiled by Christianity Today as a <a href="https://www.christianitytoday.com/ct/2020/march/joanna-ng-computer-scientist-christian-women-in-science.html" target="_blank" rel="noopener">Computer Scientist and Technologist</a> and as a <a href="https://www.christianitytoday.org/stories/what-people-are-saying/2022/how-ct-encourages-ai-technologist-to-stand-firm-in-tough-ti.html" target="_blank" rel="noopener">partner and advocate</a></li>
494<li>Started a KOE book series</li>
495<li>Published her first book of the KOE series called <a href="https://www.amazon.com/dp/B0BGBFBBTH" target="_blank" rel="noopener">Being Christian 2.0: Instead of losing heart, Let&#8217;s start over (Oct 2022)</a></li>
496</ul>
497<p>Joanna earned her degree of Bachelor of Science from University of Calgary, majored in Computer Science, with a double major in Psychology. She also earned a degree of MBA from Queen&#8217;s University.</p>
498
499
500<p class="wp-block-paragraph"></p>
501<div id="atatags-370373-6abdd4041ae3c">
502		
502<script type="text/javascript">
503			__ATA = window.__ATA || {};
504			__ATA.cmd = window.__ATA.cmd || [];
505			__ATA.cmd.push(function() {
506				__ATA.initVideoSlot('atatags-370373-6abdd4041ae3c', {
507					sectionId: '370373',
508					format: 'inread'
509				});
510			});
511		</script>
511
512	</div><span id="wordads-inline-marker" style="display: none;"></span><div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"><div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-twitter"><a rel="nofollow noopener noreferrer"
513				data-shared="sharing-twitter-41"
514				class="share-twitter sd-button share-icon"
515				href="https://joannawng.com/bio/?share=twitter"
516				target="_blank"
517				aria-labelledby="sharing-twitter-41"
518				>
519				<span id="sharing-twitter-41" hidden>Share on X (Opens in new window)</span>
520				<span>X</span>
521			</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
522				data-shared="sharing-facebook-41"
523				class="share-facebook sd-button share-icon"
524				href="https://joannawng.com/bio/?share=facebook"
525				target="_blank"
526				aria-labelledby="sharing-facebook-41"
527				>
528				<span id="sharing-facebook-41" hidden>Share on Facebook (Opens in new window)</span>
529				<span>Facebook</span>
530			</a></li><li class="share-end"></li></ul></div></div></div><div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='like-post-wrapper-76957057-41-6abdd4041b326' data-src='//widgets.wp.com/likes/index.html?ver=20261001#blog_id=76957057&amp;post_id=41&amp;origin=joannawng.wordpress.com&amp;obj_id=76957057-41-6abdd4041b326&amp;domain=joannawng.com' data-name='like-post-frame-76957057-41-6abdd4041b326' data-title='Like or Reblog'><div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='button'><span>Like</span></span> <span class='loading'>Loading...</span></div><span class='sd-text-color'></span><a class='sd-link-color'></a></div></div>			</div><!-- .entry-content -->
531
532	
533</article><!-- #post-41 -->
534
535						<div id="comments">
536	
537	
538			<h2 id="comments-title">
539			One thought on &ldquo;<span>Bio</span>&rdquo;		</h2>
540
541		
542		<ol class="commentlist">
543				<li class="post pingback">
544		<p>Pingback: <a href="https://www.whatsyourtech.ca/2023/06/05/challenging-the-stereotypes-building-an-ecosystem-for-women-in-ip/" class="url" rel="ugc external nofollow">Challenging the Stereotypes, Building an Ecosystem for Women in IP | WhatsYourTech.ca</a></p>
545	</li><!-- #comment-## -->
546		</ol>
547
548		
549	
550	
551		<div id="respond" class="comment-respond">
552		<h3 id="reply-title" class="comment-reply-title">Leave a comment <small><a rel="nofollow" id="cancel-comment-reply-link" href="/bio/#respond" style="display:none;">Cancel reply</a></small></h3><form action="https://joannawng.com/wp-comments-post.php" method="post" id="commentform" class="comment-form">
553
554
555<div class="comment-form__verbum transparent"></div><div class="verbum-form-meta"><input type='hidden' name='comment_post_ID' value='41' id='comment_post_ID' />
556<input type='hidden' name='comment_parent' id='comment_parent' value='0' />
557
558			<input type="hidden" name="highlander_comment_nonce" id="highlander_comment_nonce" value="d63d29d3c8" />
559			<input type="hidden" name="verbum_show_subscription_modal" value="" /></div><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="0ae3be38cf" /></p><p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="124"/>
559<script>
560document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );
561</script>
561
562</p></form>	</div><!-- #respond -->
563	
564</div><!-- #comments -->
565
566				
567			</div><!-- #content -->
568		</div><!-- #primary -->
569
570		<div id="secondary" class="widget-area" role="complementary">
571						
572				<aside id="search" class="widget widget_search">
573						<form method="get" id="searchform" action="https://joannawng.com/">
574		<label for="s" class="assistive-text">Search</label>
575		<input type="text" class="field" name="s" id="s" placeholder="Search" />
576		<input type="submit" class="submit" name="submit" id="searchsubmit" value="Search" />
577	</form>
578				</aside>
579
580				<aside id="archives" class="widget">
581					<h1 class="widget-title">Archives</h1>
582					<ul>
583							<li><a href='https://joannawng.com/2023/11/'>November 2023</a></li>
584	<li><a href='https://joannawng.com/2018/05/'>May 2018</a></li>
585	<li><a href='https://joannawng.com/2017/09/'>September 2017</a></li>
586	<li><a href='https://joannawng.com/2017/04/'>April 2017</a></li>
587	<li><a href='https://joannawng.com/2016/01/'>January 2016</a></li>
588	<li><a href='https://joannawng.com/2015/11/'>November 2015</a></li>
589	<li><a href='https://joannawng.com/2015/10/'>October 2015</a></li>
590	<li><a href='https://joannawng.com/2015/07/'>July 2015</a></li>
591	<li><a href='https://joannawng.com/2014/12/'>December 2014</a></li>
592	<li><a href='https://joannawng.com/2014/11/'>November 2014</a></li>
593					</ul>
594				</aside>
595
596				<aside id="meta" class="widget">
597					<h1 class="widget-title">Meta</h1>
598					<ul>
599						<li><a class="click-register" href="https://wordpress.com/start?ref=wplogin">Create account</a></li>						<aside><a href="https://joannawng.wordpress.com/wp-login.php">Log in</a></aside>
600											</ul>
601				</aside>
602
603					</div><!-- #secondary .widget-area -->
604
605		
606	</div><!-- #main -->
607
608	
609	
610<footer id="colophon" role="contentinfo">
611	<div id="site-info">
612				<a href="https://wordpress.com/?ref=footer_website" rel="nofollow">Create a free website or blog at WordPress.com.</a>
613			</div>
614</footer><!-- #colophon --></div><!-- #page -->
615
616<!--  -->
617<script type="speculationrules">
618{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/files/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/pub/forever/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
619</script>
vendor: 1 bytes, line 619
619
620<script id="grofiles-cards-js" src="//0.gravatar.com/js/hovercards/hovercards.min.js?ver=202640d1133547e8a1f2801609f51cef12522abe7f6647d869e9fbc974fe356a37e613"></script>
vendor: 1 bytes, line 620
620
621<script id="wpgroho-js-extra">
622var WPGroHo = {"my_hash":""};
623//# sourceURL=wpgroho-js-extra
624</script>
vendor: 1 bytes, line 624
624
625<script crossorigin='anonymous' type='text/javascript'  src='/wp-content/mu-plugins/gravatar-hovercards/wpgroho.js?m=1610363240i'></script>
625
626
627	
627<script>
628		// Initialize and attach hovercards to all gravatars
629		( function() {
630			function init() {
631				if ( typeof Gravatar === 'undefined' ) {
632					return;
633				}
634
635				if ( typeof Gravatar.init !== 'function' ) {
636					return;
637				}
638
639				Gravatar.profile_cb = function ( hash, id ) {
640					WPGroHo.syncProfileData( hash, id );
641				};
642
643				Gravatar.my_hash = WPGroHo.my_hash;
644				Gravatar.init(
645					'body',
646					'#wp-admin-bar-my-account',
647					{
648						i18n: {
649							'Edit your profile →': 'Edit your profile →',
650							'View profile →': 'View profile →',
651							'Contact': 'Contact',
652							'Send money': 'Send money',
653							'Sorry, we are unable to load this Gravatar profile.': 'Sorry, we are unable to load this Gravatar profile.',
654							'Gravatar not found.': 'Gravatar not found.',
655							'Too Many Requests.': 'Too Many Requests.',
656							'Internal Server Error.': 'Internal Server Error.',
657							'Is this you?': 'Is this you?',
658							'Claim your free profile.': 'Claim your free profile.',
659							'Email': 'Email',
660							'Home Phone': 'Home Phone',
661							'Work Phone': 'Work Phone',
662							'Cell Phone': 'Cell Phone',
663							'Contact Form': 'Contact Form',
664							'Calendar': 'Calendar',
665						},
666					}
667				);
668			}
669
670			if ( document.readyState !== 'loading' ) {
671				init();
672			} else {
673				document.addEventListener( 'DOMContentLoaded', init );
674			}
675		} )();
676	</script>
676
677
678		<div style="display:none">
679	</div>
680		<!-- CCPA [start] -->
681		
681<script type="text/javascript">
682			( function () {
683
684				var setupPrivacy = function() {
685
686					// Minimal Mozilla Cookie library
687					// https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie/Simple_document.cookie_framework
688					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:c=n===1/0?"; expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+n;break;case String:c="; expires="+n;break;case Date:c="; expires="+n.toUTCString()}return"rootDomain"!==r&&".rootDomain"!==r||(r=(".rootDomain"===r?".":"")+document.location.hostname.split(".").slice(-2).join(".")),document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(o)+c+(r?"; domain="+r:"")+(t?"; path="+t:"")+(i?"; secure":""),!0}};
689
690					// Implement IAB USP API.
691					window.__uspapi = function( command, version, callback ) {
692
693						// Validate callback.
694						if ( typeof callback !== 'function' ) {
695							return;
696						}
697
698						// Validate the given command.
699						if ( command !== 'getUSPData' || version !== 1 ) {
700							callback( null, false );
701							return;
702						}
703
704						// Check for GPC. If set, override any stored cookie.
705						if ( navigator.globalPrivacyControl ) {
706							callback( { version: 1, uspString: '1YYN' }, true );
707							return;
708						}
709
710						// Check for cookie.
711						var consent = cookieLib.getItem( 'usprivacy' );
712
713						// Invalid cookie.
714						if ( null === consent ) {
715							callback( null, false );
716							return;
717						}
718
719						// Everything checks out. Fire the provided callback with the consent data.
720						callback( { version: 1, uspString: consent }, true );
721					};
722
723					// Initialization.
724					document.addEventListener( 'DOMContentLoaded', function() {
725
726						// Internal functions.
727						var setDefaultOptInCookie = function() {
728							var value = '1YNN';
729							var domain = '.wordpress.com' === location.hostname.slice( -14 ) ? '.rootDomain' : location.hostname;
730							cookieLib.setItem( 'usprivacy', value, 365 * 24 * 60 * 60, '/', domain );
731						};
732
733						var setDefaultOptOutCookie = function() {
734							var value = '1YYN';
735							var domain = '.wordpress.com' === location.hostname.slice( -14 ) ? '.rootDomain' : location.hostname;
736							cookieLib.setItem( 'usprivacy', value, 24 * 60 * 60, '/', domain );
737						};
738
739						var setDefaultNotApplicableCookie = function() {
740							var value = '1---';
741							var domain = '.wordpress.com' === location.hostname.slice( -14 ) ? '.rootDomain' : location.hostname;
742							cookieLib.setItem( 'usprivacy', value, 24 * 60 * 60, '/', domain );
743						};
744
745						var setCcpaAppliesCookie = function( applies ) {
746							var domain = '.wordpress.com' === location.hostname.slice( -14 ) ? '.rootDomain' : location.hostname;
747							cookieLib.setItem( 'ccpa_applies', applies, 24 * 60 * 60, '/', domain );
748						}
749
750						var maybeCallDoNotSellCallback = function() {
751							if ( 'function' === typeof window.doNotSellCallback ) {
752								return window.doNotSellCallback();
753							}
754
755							return false;
756						}
757
758						// Look for usprivacy cookie first.
759						var usprivacyCookie = cookieLib.getItem( 'usprivacy' );
760
761						// Found a usprivacy cookie.
762						if ( null !== usprivacyCookie ) {
763
764							// If the cookie indicates that CCPA does not apply, then bail.
765							if ( '1---' === usprivacyCookie ) {
766								return;
767							}
768
769							// CCPA applies, so call our callback to add Do Not Sell link to the page.
770							maybeCallDoNotSellCallback();
771
772							// We're all done, no more processing needed.
773							return;
774						}
775
776						// We don't have a usprivacy cookie, so check to see if we have a CCPA applies cookie.
777						var ccpaCookie = cookieLib.getItem( 'ccpa_applies' );
778
779						// No CCPA applies cookie found, so we'll need to geolocate if this visitor is from California.
780						// This needs to happen client side because we do not have region geo data in our $SERVER headers,
781						// only country data -- therefore we can't vary cache on the region.
782						if ( null === ccpaCookie ) {
783
784							var request = new XMLHttpRequest();
785							request.open( 'GET', 'https://public-api.wordpress.com/geo/', true );
786
787							request.onreadystatechange = function () {
788								if ( 4 === this.readyState ) {
789									if ( 200 === this.status ) {
790
791										// Got a geo response. Parse out the region data.
792										var data = JSON.parse( this.response );
793										var region      = data.region ? data.region.toLowerCase() : '';
794										var ccpa_applies = ['california', 'colorado', 'connecticut', 'delaware', 'indiana', 'iowa', 'montana', 'new jersey', 'oregon', 'tennessee', 'texas', 'utah', 'virginia'].indexOf( region ) > -1;
795										// Set CCPA applies cookie. This keeps us from having to make a geo request too frequently.
796										setCcpaAppliesCookie( ccpa_applies );
797
798										// Check if CCPA applies to set the proper usprivacy cookie.
799										if ( ccpa_applies ) {
800											if ( maybeCallDoNotSellCallback() ) {
801												// Do Not Sell link added, so set default opt-in.
802												setDefaultOptInCookie();
803											} else {
804												// Failed showing Do Not Sell link as required, so default to opt-OUT just to be safe.
805												setDefaultOptOutCookie();
806											}
807										} else {
808											// CCPA does not apply.
809											setDefaultNotApplicableCookie();
810										}
811									} else {
812										// Could not geo, so let's assume for now that CCPA applies to be safe.
813										setCcpaAppliesCookie( true );
814										if ( maybeCallDoNotSellCallback() ) {
815											// Do Not Sell link added, so set default opt-in.
816											setDefaultOptInCookie();
817										} else {
818											// Failed showing Do Not Sell link as required, so default to opt-OUT just to be safe.
819											setDefaultOptOutCookie();
820										}
821									}
822								}
823							};
824
825							// Send the geo request.
826							request.send();
827						} else {
828							// We found a CCPA applies cookie.
829							if ( ccpaCookie === 'true' ) {
830								if ( maybeCallDoNotSellCallback() ) {
831									// Do Not Sell link added, so set default opt-in.
832									setDefaultOptInCookie();
833								} else {
834									// Failed showing Do Not Sell link as required, so default to opt-OUT just to be safe.
835									setDefaultOptOutCookie();
836								}
837							} else {
838								// CCPA does not apply.
839								setDefaultNotApplicableCookie();
840							}
841						}
842					} );
843				};
844
845				// Kickoff initialization.
846				if ( window.defQueue && defQueue.isLOHP && defQueue.isLOHP === 2020 ) {
847					defQueue.items.push( setupPrivacy );
848				} else {
849					setupPrivacy();
850				}
851
852			} )();
853		</script>
853
854
855		<!-- CCPA [end] -->
856		<div class="widget widget_eu_cookie_law_widget">
857<div
858	class="hide-on-button ads-active"
859	data-hide-timeout="30"
860	data-consent-expiration="180"
861	id="eu-cookie-law"
862	style="display: none"
863>
864	<form method="post">
865		<input type="submit" value="Close and accept" class="accept" />
866
867		Privacy &amp; Cookies: This site uses cookies. By continuing to use this website, you agree to their use. <br />
868To find out more, including how to control cookies, see here:
869				<a href="https://automattic.com/cookies/" rel="nofollow">
870			Cookie Policy		</a>
871 </form>
872</div>
873</div>			<div id="actionbar" dir="ltr" style="display: none;"
874				class="actnbr-pub-forever" role="region" aria-label="Site actions">
875			<span class="actnbr-live" aria-live="polite"></span>
876			<ul>
877										<li class="actnbr-btn actnbr-hidden">
878										<a class="actnbr-action actnbr-actn-follow " href="" role="button" aria-haspopup="dialog" aria-expanded="false">
879				<svg class="actnbr-icon actnbr-icon-bell" width="20" height="20" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M17 11.5c0 1.353.17 2.368.976 3 .266.209.602.376 1.024.5v1H5v-1c.422-.124.757-.291 1.024-.5.806-.632.976-1.647.976-3V9c0-2.8 2.2-5 5-5s5 2.2 5 5v2.5ZM15.5 9v2.5c0 .93.066 1.98.515 2.897l.053.103H7.932a4.018 4.018 0 0 0 .053-.103c.449-.917.515-1.967.515-2.897V9c0-1.972 1.528-3.5 3.5-3.5s3.5 1.528 3.5 3.5Zm-5.492 9.008c0-.176.023-.346.065-.508h3.854A1.996 1.996 0 0 1 12 20c-1.1 0-1.992-.892-1.992-1.992Z"/></svg>				<span>Subscribe</span>
880			</a>
881			<a class="actnbr-action actnbr-actn-following  no-display" href="" role="button">
882				<svg class="actnbr-icon actnbr-icon-check" width="20" height="20" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" style="fill: none" stroke="currentColor" stroke-width="1.5"><path d="M7 12L10 15L17 8" vector-effect="non-scaling-stroke"/></svg>				<span>Subscribed</span>
883			</a>
884									<div class="actnbr-popover actnbr-panel actnbr-notice" id="follow-bubble" role="dialog" aria-label="Subscribe to Joanna W. Ng">
885								<div class="actnbr-follow-bubble">
886								<div class="actnbr-panel__group"><a class="actnbr-menu__item actnbr-sitename" href="https://joannawng.com"><img loading='lazy' alt='' src='https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=50&#038;d=https%3A%2F%2Fs-ssl.wordpress.com%2Fi%2Flogo%2Fwpcom-gray-white.png' srcset='https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=50&#038;d=https%3A%2F%2Fs-ssl.wordpress.com%2Fi%2Flogo%2Fwpcom-gray-white.png 1x, https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=75&#038;d=https%3A%2F%2Fs-ssl.wordpress.com%2Fi%2Flogo%2Fwpcom-gray-white.png 1.5x, https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=100&#038;d=https%3A%2F%2Fs-ssl.wordpress.com%2Fi%2Flogo%2Fwpcom-gray-white.png 2x, https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=150&#038;d=https%3A%2F%2Fs-ssl.wordpress.com%2Fi%2Flogo%2Fwpcom-gray-white.png 3x, https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=200&#038;d=https%3A%2F%2Fs-ssl.wordpress.com%2Fi%2Flogo%2Fwpcom-gray-white.png 4x' class='avatar avatar-50' height='50' width='50' /><span class="actnbr-menu__label">Joanna W. Ng</span></a></div>																	<div class="actnbr-panel__group">
887										<div class="actnbr-message no-display" aria-live="polite"></div>
888										<form method="post" action="https://subscribe.wordpress.com" accept-charset="utf-8" class="no-display">
889																						<input type="email" name="email" placeholder="Want updates? Enter your email" class="actnbr-email-field" aria-label="Email address" />
890											<input type="hidden" name="action" value="subscribe" />
891											<input type="hidden" name="blog_id" value="76957057" />
892											<input type="hidden" name="source" value="https://joannawng.com/bio/" />
893											<input type="hidden" name="sub-type" value="actionbar-follow" />
894											<input type="hidden" id="_wpnonce" name="_wpnonce" value="d0da96c64b" />											<button type="submit" class="actnbr-button">Sign me up</button>
895										</form>
896										<p class="actnbr-login-nudge">
897											Have a WordPress.com account? <a href="https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Fjoannawng.com%252Fbio%252F">Log in now.</a>										</p>
898									</div>
899																	</div>
900							</div>
901						</li>
902									<li class="actnbr-ellipsis actnbr-hidden">
903					<button type="button" class="actnbr-more-toggle" aria-haspopup="true" aria-expanded="false" aria-label="More options">
904						<svg class="actnbr-icon actnbr-icon-more-horizontal" width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" fill="currentColor"><path d="M11 13h2v-2h-2v2zm-6 0h2v-2H5v2zm12-2v2h2v-2h-2z"/></svg>					</button>
905					<div class="actnbr-popover actnbr-menu" role="menu" aria-label="Site options">
906						<div class="actnbr-menu__group" role="group"><a role="menuitem" class="actnbr-menu__item actnbr-sitename" href="https://joannawng.com"><img loading='lazy' alt='' src='https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=50&#038;d=https%3A%2F%2Fs-ssl.wordpress.com%2Fi%2Flogo%2Fwpcom-gray-white.png' srcset='https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=50&#038;d=https%3A%2F%2Fs-ssl.wordpress.com%2Fi%2Flogo%2Fwpcom-gray-white.png 1x, https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=75&#038;d=https%3A%2F%2Fs-ssl.wordpress.com%2Fi%2Flogo%2Fwpcom-gray-white.png 1.5x, https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=100&#038;d=https%3A%2F%2Fs-ssl.wordpress.com%2Fi%2Flogo%2Fwpcom-gray-white.png 2x, https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=150&#038;d=https%3A%2F%2Fs-ssl.wordpress.com%2Fi%2Flogo%2Fwpcom-gray-white.png 3x, https://secure.gravatar.com/blavatar/4ac68796bd7ea1b95bbd7e4ccf78ea2ca21766e15d7c83b7aa50a55747809056?s=200&#038;d=https%3A%2F%2Fs-ssl.wordpress.com%2Fi%2Flogo%2Fwpcom-gray-white.png 4x' class='avatar avatar-50' height='50' width='50' /><span class="actnbr-menu__label">Joanna W. Ng</span></a></div><div class="actnbr-menu__group" role="group"><a role="menuitem" class="actnbr-menu__item actnbr-shortlink" href="https://wp.me/P5cU2R-F"><span class="actnbr-menu__label actnbr-shortlink__text">Copy shortlink</span><span class="actnbr-menu__icon actnbr-shortlink__icon"><svg class="actnbr-icon actnbr-icon-copy" width="18" height="18" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M5 4.5h11a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5ZM3 5a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm17 3v10.75c0 .69-.56 1.25-1.25 1.25H6v1.5h12.75a2.75 2.75 0 0 0 2.75-2.75V8H20Z"/></svg></span><span class="actnbr-menu__icon actnbr-shortlink__icon-copied"><svg class="actnbr-icon actnbr-icon-check" width="18" height="18" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" style="fill: none" stroke="currentColor" stroke-width="1.5"><path d="M7 12L10 15L17 8" vector-effect="non-scaling-stroke"/></svg></span></a><a role="menuitem" class="actnbr-menu__item actnbr-reader" href="https://wordpress.com/reader/blogs/76957057/posts/41"><span class="actnbr-menu__label">View post in Reader</span></a></div><div class="actnbr-menu__group" role="group"><a role="menuitem" class="actnbr-menu__item actnbr-subs" href="https://subscribe.wordpress.com/"><span class="actnbr-menu__label">Manage subscriptions</span></a><a role="menuitem" class="actnbr-menu__item actnbr-signup" href="https://wordpress.com/start/"><span class="actnbr-menu__label">Sign up</span></a><a role="menuitem" class="actnbr-menu__item actnbr-login" href="https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Fjoannawng.com%252Fbio%252F"><span class="actnbr-menu__label">Log in</span></a></div><div class="actnbr-menu__group" role="group"><a role="menuitem" class="actnbr-menu__item flb-report" href="https://wordpress.com/abuse/?report_url=https://joannawng.com/bio/" target="_blank" rel="noopener noreferrer"><span class="actnbr-menu__label">Report this content</span><span class="actnbr-menu__icon"><svg class="actnbr-icon actnbr-icon-external" width="18" height="18" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" fill="currentColor"><path d="M19.5 4.5h-7V6h4.44l-5.97 5.97 1.06 1.06L18 7.06v4.44h1.5v-7Zm-13 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3H17v3a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h3V5.5h-3Z"/></svg></span></a></div><div class="actnbr-menu__group" role="group"><a role="menuitem" class="actnbr-menu__item actnbr-fold" href=""><span class="actnbr-menu__label">Collapse this bar</span></a></div>					</div>
907				</li>
908			</ul>
909		</div>
910		
910<script>
911window.addEventListener( "DOMContentLoaded", function () {
912				var link = document.createElement( "link" );
913				link.href = "\/wp-content\/mu-plugins\/jetpack-plugin\/sun\/jetpack_vendor\/automattic\/jetpack-newsletter\/src\/..\/build\/action-bar.css?ver=33ad88c8b02f7d5bc6d2";
914				link.rel = "stylesheet";
915				document.head.appendChild( link );
916
917				var script = document.createElement( "script" );
918				script.src = "\/wp-content\/mu-plugins\/jetpack-plugin\/sun\/jetpack_vendor\/automattic\/jetpack-newsletter\/src\/..\/build\/action-bar.js?ver=33ad88c8b02f7d5bc6d2";
919				document.body.appendChild( script );
920			} );
921</script>
921
922<link rel="prefetch" href="/wp-content/mu-plugins/jetpack-plugin/sun/_inc/blocks/swiper.js" as="script" />
923		<div id="jp-carousel-loading-overlay" style="display: none;">
924			<div id="jp-carousel-loading-wrapper">
925				<span id="jp-carousel-library-loading"><svg class="jetpack-spinner" width="40" height="40" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><circle cx="50" cy="50" r="46" fill="none" stroke="#ddd" stroke-width="8"/><path d="M 50 4 A 46 46 0 0 1 96 50" fill="none" stroke="currentColor" stroke-width="8" stroke-linecap="round"><animateTransform attributeName="transform" type="rotate" dur="1.4s" from="0 50 50" to="360 50 50" repeatCount="indefinite"/></path></svg></span>
926			</div>
927		</div>
928		<div class="jp-carousel-overlay" style="display: none;">
929
930		<div class="jp-carousel-container">
931			<!-- The Carousel Swiper -->
932			<div
933				class="jp-carousel-wrap swiper jp-carousel-swiper-container jp-carousel-transitions"
934				itemscope
935				itemtype="https://schema.org/ImageGallery">
936				<div class="jp-carousel swiper-wrapper"></div>
937				<div class="jp-swiper-button-prev swiper-button-prev">
938					<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
939						<mask id="maskPrev" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="9" height="12">
940							<path d="M16.2072 16.59L11.6496 12L16.2072 7.41L14.8041 6L8.8335 12L14.8041 18L16.2072 16.59Z" fill="white"/>
941						</mask>
942						<g mask="url(#maskPrev)">
943							<rect x="0.579102" width="23.8823" height="24" fill="#FFFFFF"/>
944						</g>
945					</svg>
946				</div>
947				<div class="jp-swiper-button-next swiper-button-next">
948					<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
949						<mask id="maskNext" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="8" height="12">
950							<path d="M8.59814 16.59L13.1557 12L8.59814 7.41L10.0012 6L15.9718 12L10.0012 18L8.59814 16.59Z" fill="white"/>
951						</mask>
952						<g mask="url(#maskNext)">
953							<rect x="0.34375" width="23.8822" height="24" fill="#FFFFFF"/>
954						</g>
955					</svg>
956				</div>
957			</div>
958			<!-- The main close buton -->
959			<div class="jp-carousel-close-hint">
960				<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
961					<mask id="maskClose" mask-type="alpha" maskUnits="userSpaceOnUse" x="5" y="5" width="15" height="14">
962						<path d="M19.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" fill="white"/>
963					</mask>
964					<g mask="url(#maskClose)">
965						<rect x="0.409668" width="23.8823" height="24" fill="#FFFFFF"/>
966					</g>
967				</svg>
968			</div>
969			<!-- Image info, comments and meta -->
970			<div class="jp-carousel-info">
971				<div class="jp-carousel-info-footer">
972					<div class="jp-carousel-pagination-container">
973						<div class="jp-swiper-pagination swiper-pagination"></div>
974						<div class="jp-carousel-pagination"></div>
975					</div>
976					<div class="jp-carousel-photo-title-container">
977						<div class="jp-carousel-photo-caption"></div>
978					</div>
979					<div class="jp-carousel-photo-icons-container">
980						<a href="#" class="jp-carousel-icon-btn jp-carousel-icon-info" aria-label="Toggle photo metadata visibility">
981							<span class="jp-carousel-icon">
982								<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
983									<mask id="maskInfo" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20">
984										<path fill-rule="evenodd" clip-rule="evenodd" d="M12.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" fill="white"/>
985									</mask>
986									<g mask="url(#maskInfo)">
987										<rect x="0.8125" width="23.8823" height="24" fill="#FFFFFF"/>
988									</g>
989								</svg>
990							</span>
991						</a>
992												<a href="#" class="jp-carousel-icon-btn jp-carousel-icon-comments" aria-label="Toggle photo comments visibility">
993							<span class="jp-carousel-icon">
994								<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
995									<mask id="maskComments" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20">
996										<path fill-rule="evenodd" clip-rule="evenodd" d="M4.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" fill="white"/>
997									</mask>
998									<g mask="url(#maskComments)">
999										<rect x="0.34668" width="23.8823" height="24" fill="#FFFFFF"/>
1000									</g>
1001								</svg>
1002
1003								<span class="jp-carousel-has-comments-indicator" aria-label="This image has comments."></span>
1004							</span>
1005						</a>
1006											</div>
1007				</div>
1008				<div class="jp-carousel-info-extra">
1009					<div class="jp-carousel-info-content-wrapper">
1010						<div class="jp-carousel-photo-title-container">
1011							<div class="jp-carousel-photo-title"></div>
1012						</div>
1013						<div class="jp-carousel-comments-wrapper">
1014															<div id="jp-carousel-comments-loading">
1015									<span>Loading Comments...</span>
1016								</div>
1017								<div class="jp-carousel-comments"></div>
1018								<div id="jp-carousel-comment-form-container">
1019									<span id="jp-carousel-comment-form-spinner"><svg class="jetpack-spinner" width="20" height="20" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><circle cx="50" cy="50" r="46" fill="none" stroke="#ddd" stroke-width="8"/><path d="M 50 4 A 46 46 0 0 1 96 50" fill="none" stroke="currentColor" stroke-width="8" stroke-linecap="round"><animateTransform attributeName="transform" type="rotate" dur="1.4s" from="0 50 50" to="360 50 50" repeatCount="indefinite"/></path></svg></span>
1020									<div id="jp-carousel-comment-post-results"></div>
1021																														<form id="jp-carousel-comment-form">
1022												<label for="jp-carousel-comment-form-comment-field" class="screen-reader-text">Write a Comment...</label>
1023												<textarea
1024													name="comment"
1025													class="jp-carousel-comment-form-field jp-carousel-comment-form-textarea"
1026													id="jp-carousel-comment-form-comment-field"
1027													placeholder="Write a Comment..."
1028												></textarea>
1029												<div id="jp-carousel-comment-form-submit-and-info-wrapper">
1030													<div id="jp-carousel-comment-form-commenting-as">
1031																													<fieldset>
1032																<label for="jp-carousel-comment-form-email-field">Email (Required)</label>
1033																<input type="text" name="email" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-email-field" />
1034															</fieldset>
1035															<fieldset>
1036																<label for="jp-carousel-comment-form-author-field">Name (Required)</label>
1037																<input type="text" name="author" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-author-field" />
1038															</fieldset>
1039															<fieldset>
1040																<label for="jp-carousel-comment-form-url-field">Website</label>
1041																<input type="text" name="url" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-url-field" />
1042															</fieldset>
1043																											</div>
1044													<input
1045														type="submit"
1046														name="submit"
1047														class="jp-carousel-comment-form-button"
1048														id="jp-carousel-comment-form-button-submit"
1049														value="Post Comment" />
1050												</div>
1051											</form>
1052																											</div>
1053													</div>
1054						<div class="jp-carousel-image-meta">
1055							<div class="jp-carousel-title-and-caption">
1056								<div class="jp-carousel-photo-info">
1057									<div class="jp-carousel-caption" itemprop="caption description"></div>
1058								</div>
1059
1060								<div class="jp-carousel-photo-description"></div>
1061							</div>
1062							<a class="jp-carousel-image-download" href="#" aria-label="Download image" target="_blank" style="display: none;">
1063								<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
1064									<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="3" y="3" width="19" height="18">
1065										<path fill-rule="evenodd" clip-rule="evenodd" d="M5.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" fill="white"/>
1066									</mask>
1067									<g mask="url(#mask0)">
1068										<rect x="0.870605" width="23.8823" height="24" fill="#FFFFFF"/>
1069									</g>
1070								</svg>
1071								<span class="jp-carousel-download-text"></span>
1072							</a>
1073							<div class="jp-carousel-image-map" style="display: none;"></div>
1074						</div>
1075					</div>
1076				</div>
1077			</div>
1078		</div>
1079
1080		</div>
1081		
1082	
1082<script type="text/javascript">
1083		window.WPCOM_sharing_counts = {"https://joannawng.com/bio/":41};
1084	</script>
1084
1085				
1086	
1086<script type="text/javascript">
1087		(function () {
1088			var wpcom_reblog = {
1089				source: 'toolbar',
1090
1091				toggle_reblog_box_flair: function (obj_id, post_id) {
1092
1093					// Go to site selector. This will redirect to their blog if they only have one.
1094					const postEndpoint = `https://wordpress.com/post`;
1095
1096					// Ideally we would use the permalink here, but fortunately this will be replaced with the 
1097					// post permalink in the editor.
1098					const originalURL = `${ document.location.href }?page_id=${ post_id }`; 
1099					
1100					const url =
1101						postEndpoint +
1102						'?url=' +
1103						encodeURIComponent( originalURL ) +
1104						'&is_post_share=true' +
1105						'&v=5';
1106
1107					const redirect = function () {
1108						if (
1109							! window.open( url, '_blank' )
1110						) {
1111							location.href = url;
1112						}
1113					};
1114
1115					if ( /Firefox/.test( navigator.userAgent ) ) {
1116						setTimeout( redirect, 0 );
1117					} else {
1118						redirect();
1119					}
1120				},
1121			};
1122
1123			window.wpcom_reblog = wpcom_reblog;
1124		})();
1125	</script>
vendor: 1 bytes, line 1125
1125
1126<script crossorigin='anonymous' type='text/javascript'  src='/_static/??-eJx9jEsOwjAMBS9EcIuqdoU4i2msNKnzoXbI9ckO1AXbeTMPWjFrTkpJ4cnZmcLV+STQ8mHRilkZRUggdITK5n27BrnATxbrN/LWkQpQ7WvePRnGBkqxMCqd+J8f9nu3X5UqbZgs09HlR7yPyzxM0zyMS/gAPatD8g=='></script>
vendor: 1 bytes, line 1126
1126
1127<script id="wp-hooks-js" src="/wp-content/plugins/gutenberg-core/v24.0.0/build/scripts/hooks/index.min.js?m=1789650619i&#038;ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 1127
1127
1128<script id="wp-i18n-js" src="/wp-content/plugins/gutenberg-core/v24.0.0/build/scripts/i18n/index.min.js?m=1789650619i&#038;ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 1128
1128
1129<script id="wp-i18n-js-after">
1130wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
1131//# sourceURL=wp-i18n-js-after
1132</script>
vendor: 1 bytes, line 1132
1132
1133<script id="verbum-settings-js-before">
1134window.VerbumComments = {"Log in or provide your name and email to leave a reply.":"Log in or provide your name and email to leave a reply.","Log in or provide your name and email to leave a comment.":"Log in or provide your name and email to leave a comment.","Receive web and mobile notifications for posts on this site.":"Receive web and mobile notifications for posts on this site.","Name":"Name","Email (address never made public)":"Email (address never made public)","Website (optional)":"Website (optional)","Leave a reply. (log in optional)":"Leave a reply. (log in optional)","Leave a comment. (log in optional)":"Leave a comment. (log in optional)","Log in to leave a reply.":"Log in to leave a reply.","Log in to leave a comment.":"Log in to leave a comment.","Logged in via %s":"Logged in via %s","Log out":"Log out","Your browser is blocking the cookies needed to log in and comment here. Allow cookies in your privacy settings, then reload the page.":"Your browser is blocking the cookies needed to log in and comment here. Allow cookies in your privacy settings, then reload the page.","Email":"Email","(Address never made public)":"(Address never made public)","Instantly":"Instantly","Daily":"Daily","Reply":"Reply","Comment":"Comment","WordPress":"WordPress","Weekly":"Weekly","Notify me of new posts":"Notify me of new posts","Email me new posts":"Email me new posts","Email me new comments":"Email me new comments","Cancel":"Cancel","Write a comment...":"Write a comment...","Write a reply...":"Write a reply...","Website":"Website","Optional":"Optional","We'll keep you in the loop!":"We'll keep you in the loop!","Loading your comment...":"Loading your comment...","Discover more from":"Discover more from Joanna W. Ng","Subscribe now to keep reading and get access to the full archive.":"Subscribe now to keep reading and get access to the full archive.","Continue reading":"Continue reading","Never miss a beat!":"Never miss a beat!","Interested in getting blog post updates? Simply click the button below to stay in the loop!":"Interested in getting blog post updates? Simply click the button below to stay in the loop!","Enter your email address":"Enter your email address","Subscribe":"Subscribe","Comment sent successfully":"Comment sent successfully","Save my name, email, and website in this browser for the next time I comment.":"Save my name, email, and website in this browser for the next time I comment.","hovercardi18n":{"Edit your profile \u2192":"Edit your profile \u2192","View profile \u2192":"View profile \u2192","Contact":"Contact","Send money":"Send money","Gravatar not found.":"Gravatar not found.","This profile is private.":"This profile is private.","Too Many Requests.":"Too Many Requests.","Internal Server Error.":"Internal Server Error.","Sorry, we are unable to load this Gravatar profile.":"Sorry, we are unable to load this Gravatar profile."},"siteId":76957057,"postId":41,"mustLogIn":false,"requireNameEmail":true,"commentRegistration":false,"connectURL":"https://joannawng.wordpress.com/public.api/connect/?action=request\u0026domain=joannawng.com","logoutURL":"https://joannawng.wordpress.com/wp-login.php?action=logout\u0026_wpnonce=962768d208","homeURL":"https://joannawng.com/","subscribeToBlog":true,"subscribeToComment":true,"isJetpackCommentsLoggedIn":false,"jetpackUsername":"","jetpackUserId":0,"jetpackSignature":"","jetpackAvatar":"https://0.gravatar.com/avatar/?s=96\u0026amp;d=identicon\u0026amp;r=G","enableBlocks":true,"enableSubscriptionModal":true,"currentLocale":"en","isJetpackComments":false,"allowedBlocks":["core/paragraph","core/list","core/code","core/list-item","core/quote","core/image","core/embed","core/quote","core/code"],"embedNonce":"92b6f50323","verbumBundleUrl":"/wp-content/mu-plugins/jetpack-mu-wpcom-plugin/sun/jetpack_vendor/automattic/jetpack-mu-wpcom/src/features/verbum-comments/dist/index.js","isRTL":false,"vbeCacheBuster":1789740582,"iframeUniqueId":0,"colorScheme":false}
1135//# sourceURL=verbum-settings-js-before
1136</script>
vendor: 1 bytes, line 1136
1136
1137<script data-wp-strategy="defer" defer id="verbum-dynamic-loader-js" src="/wp-content/mu-plugins/jetpack-mu-wpcom-plugin/sun/jetpack_vendor/automattic/jetpack-mu-wpcom/src/build/verbum-comments/assets/dynamic-loader.js?m=1772522099i&#038;minify=false&#038;ver=8b5296f9195db92c42e4"></script>
vendor: 1 bytes, line 1137
1137
1138<script id="comment-like-js-extra">
1139var comment_like_text = {"loading":"Loading...","swipeUrl":"https://s2.wp.com/wp-content/mu-plugins/comment-likes/js/lib/swipe.js?m=1382645497i&amp;ver=20131008"};
1140//# sourceURL=comment-like-js-extra
1141</script>
vendor: 1 bytes, line 1141
1141
1142<script id="jetpack-carousel-js-extra">
1143var jetpackSwiperLibraryPath = {"url":"/wp-content/mu-plugins/jetpack-plugin/sun/_inc/blocks/swiper.js"};
1144var jetpackCarouselStrings = {"widths":[370,700,1000,1200,1400,2000],"is_logged_in":"","lang":"en","ajaxurl":"https://joannawng.com/wp-admin/admin-ajax.php","nonce":"a562d3056f","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...","image_label":"Open image in full-screen.","download_original":"View full size \u003Cspan class=\"photo-size\"\u003E{0}\u003Cspan class=\"photo-size-times\"\u003E\u00d7\u003C/span\u003E{1}\u003C/span\u003E","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://joannawng.wordpress.com/wp-login.php?redirect_to=https%3A%2F%2Fjoannawng.com%2Fbio%2F","blog_id":"76957057","meta_data":["camera","aperture","shutter_speed","focal_length","copyright"],"stats_query_args":"blog=76957057&v=wpcom&tz=0&user_id=0&subd=joannawng","is_public":"1"};
1145//# sourceURL=jetpack-carousel-js-extra
1146</script>
vendor: 1 bytes, line 1146
1146
1147<script id="sharing-js-js-extra">
1148var sharing_js_options = {"lang":"en","counts":"1","is_stats_active":"1"};
1149//# sourceURL=sharing-js-js-extra
1150</script>
vendor: 1 bytes, line 1150
1150
1151<script id="jetpack-script-data-js-before">
1152window.JetpackScriptData = {"site":{"host":"wpcom","is_wpcom_platform":true}};
1153//# sourceURL=jetpack-script-data-js-before
1154</script>
vendor: 1 bytes, line 1154
1154
1155<script crossorigin='anonymous' type='text/javascript'  src='/_static/??-eJydkN1uwjAMhV9oaVpNGnAx7VGQSQxzmz/FzirengiaakMTTLtLPp/jo2M9J2ViEAyifVHJlRMF1iZ6X5FyNCHr8Q50I7/oaqRgXLE/BRmTO3eeQhP9sn1ESWAmVdGcqnEZaC6hzfZfGGzMGopEDyJkVhcwo7A+FHJ2hWwyJVEWBP4Q/C1vX0ssuwzkWBjdKmvgSR2YiD2Keu3627oGjvkqtg+8LeJ2iLvvv5vwJ2S0YO35+qRwWip8+Pdhs+u3Qz+87cYLUfq/CQ=='></script>
vendor: 1 bytes, line 1155
1155
1156<script id="sharing-js-js-after">
1157window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
1158window.WPCOM_sharing_popups[ "twitter" ] = "menubar=1,resizable=1,width=600,height=350";
1159window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
1160window.WPCOM_sharing_popups[ "facebook" ] = "menubar=1,resizable=1,width=600,height=400";
1161//# sourceURL=sharing-js-js-after
1162</script>
vendor: 1 bytes, line 1162
1162
1163<script id="wp-emoji-settings" type="application/json">
1164{"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":"/wp-includes/js/wp-emoji-release.min.js?m=1783090810i&ver=7.2-alpha-63387"}}
1165</script>
vendor: 1 bytes, line 1165
1165
1166<script type="module">
1167/*! This file is auto-generated */
1168var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!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");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof 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 e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
1169//# sourceURL=/wp-includes/js/wp-emoji-loader.min.js
1170</script>
1170
1171	<iframe src='https://widgets.wp.com/likes/master.html?ver=20261001#ver=20261001' scrolling='no' id='likes-master' name='likes-master' style='display:none;'></iframe>
1172	<div id='likes-other-gravatars' role="dialog" aria-hidden="true" tabindex="-1"><div class="likes-text"><span>%d</span></div><ul class="wpl-avatars sd-like-gravatars"></ul></div>
1173	
1173<script src="//stats.wp.com/w.js?69" defer></script>
1173 
1173<script type="text/javascript">
1174_tkq = window._tkq || [];
1175_stq = window._stq || [];
1176_tkq.push(['storeContext', {'blog_id':'76957057','blog_tz':'0','user_lang':'en','blog_lang':'en','user_id':'0'}]);
1177		// Prevent sending pageview tracking from WP-Admin pages.
1178		_stq.push(['view', {'blog':'76957057','v':'wpcom','tz':'0','user_id':'0','post':'41','subd':'joannawng'}]);
1179		_stq.push(['extra', {'crypt':'UE5XaGUuOTlwaD85flAmcm1mcmZsaDhkV11YdWtpP0NsWnVkPS9sL0ViLndld3BuVT01Uj14Ti1yYTBnX3xuYUQ3Qz1oblZbVHV3MTZoVXFwTTVDK2wuPT1KWzJNV19iQk9bTmF0PUUlUlYzbW1nYyxHTnlKQiUsT0hKb2tYK09aZkN6LzJmYVtxMGpoLT9rJnJRJXg4Y1EtVyt0byV1ZEltYS18OHxySHpSaWQ3N1pQTmdSTmdQa0clbjNJfltYZG84a0JaMj0zVU93JSUrNzgxNHlfczV5TEFSNz8zJXBUMWZ2WlRTVlVVLGQ4VH4rbHFhY2U0QVVRcjlRaWUxcU4wamNLJUcvVHV6LWp0M2hsfFdXY2ZBVV9XaWE9M2NTTHJhdWQtcm9acHddNGFmNXQydVUxLjZtS0d1fj1ORF04Sk5wUU1dP1dEVGh2MllUbD1lZFFQZl85'}]);
1180_stq.push([ 'clickTrackerInit', '76957057', '41' ]);
1181</script>
1181
1182<noscript><img src="https://pixel.wp.com/b.gif?v=noscript" style="height:1px;width:1px;overflow:hidden;position:absolute;bottom:1px;" alt="" /></noscript>
1183<meta id="bilmur" property="bilmur:data" content="" data-provider="wordpress.com" data-service="simple" data-site-tz="Etc/GMT-0" data-custom-props="{&quot;logged_in&quot;:&quot;0&quot;,&quot;wptheme&quot;:&quot;pub\/forever&quot;,&quot;wptheme_is_block&quot;:&quot;0&quot;}"   >
1184		
1184<script defer src="/wp-content/js/bilmur.min.js?i=19&amp;m=202640"></script>
1184 	
1185<script>
1186(function() {
1187	'use strict';
1188
1189	const fetches = {};
1190	const promises = {};
1191	const urls = {
1192		'wp-polyfill': '/wp-includes/js/dist/vendor/wp-polyfill.min.js?m=1786440387i&ver=3.15.0',
1193		'verbum': '/wp-content/mu-plugins/jetpack-mu-wpcom-plugin/sun/jetpack_vendor/automattic/jetpack-mu-wpcom/src/build/verbum-comments/verbum-comments.js?m=1790810169i&minify=false&ver=03e9edda7ccdfe9a67c4'
1194	};
1195	const loaders = {
1196		'verbum': () => {
1197			fetchExternalScript('wp-polyfill');
1198			fetchExternalScript('verbum');
1199			promises['wp-polyfill'] = promises['wp-polyfill'] || loadWPScript('wp-polyfill');
1200			promises['verbum'] = promises['verbum'] || promises['wp-polyfill'].then( () => loadWPScript('verbum') );
1201			return promises['verbum'];
1202		},
1203		
1204	};
1205	const scriptExtras = {
1206		
1207	};
1208
1209	window.WP_Enqueue_Dynamic_Script = {
1210		loadScript: (handle) => {
1211			if (!loaders[handle]) {
1212				console.error('WP_Enqueue_Dynamic_Script: unregistered script `' + handle + '`.');
1213			}
1214			return loaders[handle]();
1215		}
1216	};
1217
1218	function fetchExternalScript(handle) {
1219		if (!urls[handle]) {
1220			return Promise.resolve();
1221		}
1222
1223		fetches[handle] = fetches[handle] || fetch(urls[handle], { mode: 'no-cors' });
1224		return fetches[handle];
1225	}
1226
1227	function runExtraScript(handle, type, index) {
1228		const id = 'wp-enqueue-dynamic-script:' + handle + ':' + type + ':' + (index + 1);
1229		const template = document.getElementById(id);
1230		if (!template) {
1231			return Promise.reject();
1232		}
1233
1234		const script = document.createElement( 'script' );
1235		script.innerHTML = template.innerHTML;
1236		document.body.appendChild( script );
1237		return Promise.resolve();
1238	}
1239
1240	function loadExternalScript(handle) {
1241		if (!urls[handle]) {
1242			return Promise.resolve();
1243		}
1244
1245		return fetches[handle].then(() => {
1246			return new Promise((resolve, reject) => {
1247				const script = document.createElement('script');
1248				script.onload = () => resolve();
1249				script.onerror = (e) => reject(e);
1250				script.src = urls[handle];
1251				document.body.appendChild(script);
1252			});
1253		});
1254	}
1255
1256	function loadExtra(handle, pos) {
1257		const count = (scriptExtras[handle] && scriptExtras[handle][pos]) || 0;
1258		let promise = Promise.resolve();
1259
1260		for (let i = 0; i < count; i++) {
1261			promise = promise.then(() => runExtraScript(handle, pos, i));
1262		}
1263
1264		return promise;
1265	}
1266
1267	function loadWPScript(handle) {
1268		// Core loads scripts in this order. See: https://github.com/WordPress/WordPress/blob/a59eb9d39c4fcba834b70c9e8dfd64feeec10ba6/wp-includes/class-wp-scripts.php#L428.
1269		return loadExtra(handle, 'translations')
1270			.then(() => loadExtra(handle, 'before'))
1271			.then(() => loadExternalScript(handle))
1272			.then(() => loadExtra(handle, 'after'));
1273	}
1274} )();
1275</script>
1275
1276
1277</body>
1278</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.