<!DOCTYPE html>
<html lang="en-US">
<head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>John Resig - JavaScript Programming</title>
    <link href="https://johnresig.com/wp-content/themes/johnresig.com-wp-theme/style.css" media="screen" rel="stylesheet" type="text/css"/>
    <link rel="alternate" type="application/rss+xml" title="RSS" href="https://feeds.feedburner.com/JohnResig" />
    <meta name='robots' content='max-image-preview:large' />
		<!-- This site uses the Google Analytics by ExactMetrics plugin v7.22.0 - Using Analytics tracking - https://www.exactmetrics.com/ -->
							<script src="//www.googletagmanager.com/gtag/js?id=G-FDEPXESNLL"  data-cfasync="false" data-wpfc-render="false" type="text/javascript" async></script>
			<script data-cfasync="false" data-wpfc-render="false" type="text/javascript">
				var em_version = '7.22.0';
				var em_track_user = true;
				var em_no_track_reason = '';
				
								var disableStrs = [
										'ga-disable-G-FDEPXESNLL',
									];

				/* Function to detect opted out users */
				function __gtagTrackerIsOptedOut() {
					for (var index = 0; index < disableStrs.length; index++) {
						if (document.cookie.indexOf(disableStrs[index] + '=true') > -1) {
							return true;
						}
					}

					return false;
				}

				/* Disable tracking if the opt-out cookie exists. */
				if (__gtagTrackerIsOptedOut()) {
					for (var index = 0; index < disableStrs.length; index++) {
						window[disableStrs[index]] = true;
					}
				}

				/* Opt-out function */
				function __gtagTrackerOptout() {
					for (var index = 0; index < disableStrs.length; index++) {
						document.cookie = disableStrs[index] + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
						window[disableStrs[index]] = true;
					}
				}

				if ('undefined' === typeof gaOptout) {
					function gaOptout() {
						__gtagTrackerOptout();
					}
				}
								window.dataLayer = window.dataLayer || [];

				window.ExactMetricsDualTracker = {
					helpers: {},
					trackers: {},
				};
				if (em_track_user) {
					function __gtagDataLayer() {
						dataLayer.push(arguments);
					}

					function __gtagTracker(type, name, parameters) {
						if (!parameters) {
							parameters = {};
						}

						if (parameters.send_to) {
							__gtagDataLayer.apply(null, arguments);
							return;
						}

						if (type === 'event') {
														parameters.send_to = exactmetrics_frontend.v4_id;
							var hookName = name;
							if (typeof parameters['event_category'] !== 'undefined') {
								hookName = parameters['event_category'] + ':' + name;
							}

							if (typeof ExactMetricsDualTracker.trackers[hookName] !== 'undefined') {
								ExactMetricsDualTracker.trackers[hookName](parameters);
							} else {
								__gtagDataLayer('event', name, parameters);
							}
							
						} else {
							__gtagDataLayer.apply(null, arguments);
						}
					}

					__gtagTracker('js', new Date());
					__gtagTracker('set', {
						'developer_id.dNDMyYj': true,
											});
										__gtagTracker('config', 'G-FDEPXESNLL', {"forceSSL":"true"} );
															window.gtag = __gtagTracker;										(function () {
						/* https://developers.google.com/analytics/devguides/collection/analyticsjs/ */
						/* ga and __gaTracker compatibility shim. */
						var noopfn = function () {
							return null;
						};
						var newtracker = function () {
							return new Tracker();
						};
						var Tracker = function () {
							return null;
						};
						var p = Tracker.prototype;
						p.get = noopfn;
						p.set = noopfn;
						p.send = function () {
							var args = Array.prototype.slice.call(arguments);
							args.unshift('send');
							__gaTracker.apply(null, args);
						};
						var __gaTracker = function () {
							var len = arguments.length;
							if (len === 0) {
								return;
							}
							var f = arguments[len - 1];
							if (typeof f !== 'object' || f === null || typeof f.hitCallback !== 'function') {
								if ('send' === arguments[0]) {
									var hitConverted, hitObject = false, action;
									if ('event' === arguments[1]) {
										if ('undefined' !== typeof arguments[3]) {
											hitObject = {
												'eventAction': arguments[3],
												'eventCategory': arguments[2],
												'eventLabel': arguments[4],
												'value': arguments[5] ? arguments[5] : 1,
											}
										}
									}
									if ('pageview' === arguments[1]) {
										if ('undefined' !== typeof arguments[2]) {
											hitObject = {
												'eventAction': 'page_view',
												'page_path': arguments[2],
											}
										}
									}
									if (typeof arguments[2] === 'object') {
										hitObject = arguments[2];
									}
									if (typeof arguments[5] === 'object') {
										Object.assign(hitObject, arguments[5]);
									}
									if ('undefined' !== typeof arguments[1].hitType) {
										hitObject = arguments[1];
										if ('pageview' === hitObject.hitType) {
											hitObject.eventAction = 'page_view';
										}
									}
									if (hitObject) {
										action = 'timing' === arguments[1].hitType ? 'timing_complete' : hitObject.eventAction;
										hitConverted = mapArgs(hitObject);
										__gtagTracker('event', action, hitConverted);
									}
								}
								return;
							}

							function mapArgs(args) {
								var arg, hit = {};
								var gaMap = {
									'eventCategory': 'event_category',
									'eventAction': 'event_action',
									'eventLabel': 'event_label',
									'eventValue': 'event_value',
									'nonInteraction': 'non_interaction',
									'timingCategory': 'event_category',
									'timingVar': 'name',
									'timingValue': 'value',
									'timingLabel': 'event_label',
									'page': 'page_path',
									'location': 'page_location',
									'title': 'page_title',
									'referrer' : 'page_referrer',
								};
								for (arg in args) {
																		if (!(!args.hasOwnProperty(arg) || !gaMap.hasOwnProperty(arg))) {
										hit[gaMap[arg]] = args[arg];
									} else {
										hit[arg] = args[arg];
									}
								}
								return hit;
							}

							try {
								f.hitCallback();
							} catch (ex) {
							}
						};
						__gaTracker.create = newtracker;
						__gaTracker.getByName = newtracker;
						__gaTracker.getAll = function () {
							return [];
						};
						__gaTracker.remove = noopfn;
						__gaTracker.loaded = true;
						window['__gaTracker'] = __gaTracker;
					})();
									} else {
										console.log("");
					(function () {
						function __gtagTracker() {
							return null;
						}

						window['__gtagTracker'] = __gtagTracker;
						window['gtag'] = __gtagTracker;
					})();
									}
			</script>
				<!-- / Google Analytics by ExactMetrics -->
		<link rel='stylesheet' id='wp-block-library-css' href='https://johnresig.com/wp-includes/css/dist/block-library/style.min.css?ver=6.4.1' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--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,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<script type="text/javascript" src="https://johnresig.com/wp-content/plugins/google-analytics-dashboard-for-wp/assets/js/frontend-gtag.min.js?ver=7.22.0" id="exactmetrics-frontend-script-js"></script>
<script data-cfasync="false" data-wpfc-render="false" type="text/javascript" id='exactmetrics-frontend-script-js-extra'>/* <![CDATA[ */
var exactmetrics_frontend = {"js_events_tracking":"true","download_extensions":"zip,mp3,mpeg,pdf,docx,pptx,xlsx,rar","inbound_paths":"[]","home_url":"https:\/\/johnresig.com","hash_tracking":"false","v4_id":"G-FDEPXESNLL"};/* ]]> */
</script>
<link rel="https://api.w.org/" href="https://johnresig.com/wp-json/" /><link rel="alternate" type="application/json" href="https://johnresig.com/wp-json/wp/v2/pages/6311" /><meta name="generator" content="WordPress 6.4.1" />
<link rel="canonical" href="https://johnresig.com/" />
<link rel='shortlink' href='https://johnresig.com/' />
<link rel="alternate" type="application/json+oembed" href="https://johnresig.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fjohnresig.com%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://johnresig.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fjohnresig.com%2F&#038;format=xml" />
<link rel="icon" href="https://johnresig.com/wp-content/uploads/2022/11/cropped-cropped-khan-john-resig-photo-square-32x32.jpg" sizes="32x32" />
<link rel="icon" href="https://johnresig.com/wp-content/uploads/2022/11/cropped-cropped-khan-john-resig-photo-square-192x192.jpg" sizes="192x192" />
<link rel="apple-touch-icon" href="https://johnresig.com/wp-content/uploads/2022/11/cropped-cropped-khan-john-resig-photo-square-180x180.jpg" />
<meta name="msapplication-TileImage" content="https://johnresig.com/wp-content/uploads/2022/11/cropped-cropped-khan-john-resig-photo-square-270x270.jpg" />
</head>
<body class="home page-template-default page page-id-6311 wp-custom-logo">
<div id="wrapper">
    <div id="head" class="other">
        <div class="wrap">
            <div class="nav"><ul id="menu-top-nav" class="menu"><li id="menu-item-6341" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-6311 current_page_item menu-item-6341"><a href="https://johnresig.com/" aria-current="page">Home</a></li>
<li id="menu-item-6343" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-6343"><a href="https://johnresig.com/category/blog/">Blog</a></li>
<li id="menu-item-6342" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6342"><a href="https://johnresig.com/projects/">Projects</a></li>
<li id="menu-item-6387" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6387"><a href="https://johnresig.com/speaking/">Speaking</a></li>
<li id="menu-item-6283" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6283"><a href="https://johnresig.com/research/">Research</a></li>
<li id="menu-item-6284" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6284"><a href="https://johnresig.com/about/">About</a></li>
</ul></div>            <div class="side">
                <a href="/about/" class="logo"><a href="https://johnresig.com/" class="custom-logo-link" rel="home" aria-current="page"><img width="48" height="48" src="https://johnresig.com/wp-content/uploads/2022/11/cropped-khan-john-resig-photo-square.jpg" class="custom-logo" alt="John Resig" decoding="async" /></a></a>                <div class="text">
                    <span class="name">John Resig</span><br/>
                    <ul id="menu-contact" class="contact-menu"><li id="menu-item-6349" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6349"><a href="https://johnresig.com/subscribe/">Subscribe</a></li>
<li id="menu-item-6350" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6350"><a href="https://johnresig.com/about/">Contact</a></li>
</ul>                </div>
            </div>
        </div>
    </div>
    <div id="wrap">
        <div id="body">
            <div class="wrap">

		
		  			
				<div class="postentry">
<p>John Resig is best known as an expert in the JavaScript programming language and the creator of the most popular JavaScript library in the world: <a href="http://jquery.com/">jQuery</a>. He&#8217;s created numerous JavaScript projects that continue to be integral parts of modern day web development. He&#8217;s also the author of the popular JavaScript books: <a href="http://amzn.to/2oiS4em">Secrets of the JavaScript Ninja,</a>&nbsp;<a href="http://amzn.to/1n080ky">Pro JavaScript Techniques</a>, and <a href="https://graphql.guide/">The GraphQL Guide</a>.</p>
<p>John is the Chief Software Architect at <a href="https://www.khanacademy.org/">Khan Academy</a> where he works to provide a free education to everyone, everywhere. He&#8217;s worked on many aspects of the product: math exercises, Computer Programming, mobile, accessibility, internationalization, build systems, and performance.&nbsp;He leads the Frontend Infrastructure team which supports web frontend and mobile development.</p>
<p>In his spare time John has combined his interest in art history with his programming skill to <a href="/research">improve digital humanities study</a>. He&#8217;s developed a two image databases that utilize Computer Vision techniques to aide researchers: <a href="https://ukiyo-e.org/">Ukiyo-e.org: Japanese woodblock print database and image search engine</a> and <a href="http://images.pharosartresearch.org/">PHAROS Images: Art history photo archive database</a>. He&#8217;s a board member of the <a href="http://www.japaneseartsoc.org/">Japanese Art Society of America</a> and is a Visiting Researcher at <a href="http://www.ritsumei.ac.jp/eng/">Ritsumeikan University</a>.</p>
<p>John lives in the Hudson Valley of New York with his partner <a href="http://nellshawcohen.com/">composer, librettist, and multimedia artist Nell Shaw Cohen</a>.</p>
<aside>
<h3>Subscribe for Email Updates</h3>

        <div
            class="emailoctopus-form-wrapper emailoctopus-theme-light" >

            <form method="post" action="https://emailoctopus.com/lists/abf407e8-276f-11e7-b170-0244cade5e89/members/external-add"
                  class="emailoctopus-form">

                <div class="emailoctopus-form-textarea-hidden" aria-hidden="true">
                    <textarea class="emailoctopus-form-textarea-hidden" name="message_consent_required"
                              aria-hidden="true">Please check the checkbox to indicate your consent.</textarea>
                    <textarea class="emailoctopus-form-textarea-hidden" name="message_missing_email"
                              aria-hidden="true">Your email address is required.</textarea>
                    <textarea class="emailoctopus-form-textarea-hidden" name="message_invalid_email"
                              aria-hidden="true">Your email address looks incorrect. Please try again.</textarea>
                    <textarea class="emailoctopus-form-textarea-hidden" name="message_bot"
                              aria-hidden="true">This doesn&#039;t look like a human submission.</textarea>
                    <textarea class="emailoctopus-form-textarea-hidden" name="message_success"
                              aria-hidden="true">Thanks for subscribing!</textarea>
                </div>

                <h2 class="emailoctopus-heading"></h2><p></p>
                <p class="emailoctopus__success-message"></p>
                <p class="emailoctopus__error-message"></p>

                <div class="emailoctopus-form-copy-wrapper">
                    <input type="hidden" name="emailoctopus_form_id" value="1"/>
                    <input type="hidden" name="emailoctopus_list_id" value="abf407e8-276f-11e7-b170-0244cade5e89"/>

                    
                        <div class="emailoctopus-form-row">

                            <label><span class="emailoctopus-label">Email Address <span class="required">*</span></span><br><input type="text" name="EmailAddress" class="emailoctopus-custom-fields" tabindex="100" /></label>
                        </div>

                                            
                    
                    <div class="emailoctopus-form-row-hp" aria-hidden="true">
                        <!-- Do not remove this field, otherwise you risk bot signups -->
                        <input type="text" name="hpabf407e8-276f-11e7-b170-0244cade5e89" tabindex="-1" autocomplete="nope">
                    </div>

                    <div class="emailoctopus-form-row-subscribe">
                                                    <input type="hidden" name="successRedirectUrl" class="emailoctopus-success-redirect-url" value="https://johnresig.com/thank-you/" />                                                <button type="submit" tabindex="101"
                                style="">Subscribe</button>
                    </div>

                    
                </div>
            </form>
        </div>

        
</aside>
<aside>
<h3>Projects</h3>
<ul>
<li><a href="/projects/ukiyoe/">Ukiyo-e.org</a></li>
<li><a href="/projects/digital-humanities/">Digital Humanities</a></li>
<li><a href="/projects/computer-vision/">Computer Vision</a></li>
<li><a href="/projects/khan-academy/">Khan Academy</a></li>
</ul>
<p style="padding-left: 40px;"><a href="/projects/">More projects&#8230;</a></p>
</aside>

		<div class="box">
		<h3>Blog</h3>
		<ul>
											<li>
					<a href="https://johnresig.com/blog/twitter-mastodon/">Twitter vs. Mastodon</a>
											<span class="post-date">November 27, 2022</span>
									</li>
											<li>
					<a href="https://johnresig.com/blog/10th-anniversary-of-jquery/">10th Anniversary of jQuery</a>
											<span class="post-date">January 14, 2016</span>
									</li>
											<li>
					<a href="https://johnresig.com/blog/building-art-history-database-computer-vision/">Building an Art History Database Using Computer Vision</a>
											<span class="post-date">May 28, 2015</span>
									</li>
					</ul>

		</div>
<p style="padding-left: 40px;"><strong><a href="/subscribe/">Subscribe</a></strong>, <a href="/blog/">More posts&#8230;</a></p>
 

				</div>

		
	
            </div>
        </div>

        <div id="side">
    <div id="projects">
        <div class="box">			<div class="textwidget"><p><a href="https://amzn.to/2oiS4em"><img loading="lazy" decoding="async" class="icon" src="/files/jsninja.74.jpg" alt="Secrets of the JavaScript Ninja" width="74" height="94" /></a></p>
<div class="desc" style="height: 100px; margin-top: -12px;">
<h3><a href="https://amzn.to/2oiS4em">Secrets of the JS Ninja</a></h3>
<p>Secret techniques of top JavaScript programmers. Published by Manning.</p>
</div>
</div>
		</div><div class="box">			<div class="textwidget"><p><script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CKYIK5QY&#038;placement=ejohnorg" id="_carbonads_js"></script></p>
</div>
		</div><div class="box">			<div class="textwidget"><h3 style="line-height: 69px;"><a href="/subscribe/">Subscribe for email updates</a></h3></div>
		</div><div class="box">			<div class="textwidget"><a href="https://twitter.com/jeresig"><img src="/images/twitter-74.png" class="icon" alt="John Resig Twitter Updates" width="74" height="74"/></a>
<div class="desc">
        <h3><a href="https://twitter.com/jeresig">@jeresig</a> / <a rel="me" href="https://mastodon.social/@jeresig">Mastodon</a></h3>
        <p>Infrequent, short, updates and links.</p>
</div></div>
		</div>    </div>
</div>    </div>
</div>
<link rel='stylesheet' id='emailoctopus_frontend-css' href='https://johnresig.com/wp-content/plugins/emailoctopus/public/css/legacy-frontend.css?ver=3.1.5' type='text/css' media='all' />
<script type="text/javascript" src="https://johnresig.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
<script type="text/javascript" src="https://johnresig.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
<script type="text/javascript" id="emailoctopus_frontend-js-extra">
/* <![CDATA[ */
var emailoctopus = {"ajaxurl":"https:\/\/johnresig.com\/wp-admin\/admin-ajax.php","sending":"Sending"};
/* ]]> */
</script>
<script type="text/javascript" src="https://johnresig.com/wp-content/plugins/emailoctopus/public/build/legacy-frontend.js?ver=3.1.5" id="emailoctopus_frontend-js"></script>
</body>
</html>

<!-- Dynamic page generated in 0.085 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2023-12-01 20:00:24 -->

<!-- Compression = gzip -->