1<!DOCTYPE html> 2<html lang="en-US"> 3<head> 4 <meta charset="UTF-8" /> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 6 <title>Andrew Garrison | a blog about software development</title> 7 8 9 <link rel="stylesheet" href="https://andrewgarrison.com/wp-content/themes/Flexible/style.css" type="text/css" /> 10 <link rel="pingback" href="https://andrewgarrison.com/xmlrpc.php" /> 11 12 <!--[if lt IE 7]> 13 <link rel="stylesheet" type="text/css" href="https://andrewgarrison.com/wp-content/themes/Flexible/css/ie6style.css" /> 14 <![endif]--> 15 <!--[if IE 7]> 16 <link rel="stylesheet" type="text/css" href="https://andrewgarrison.com/wp-content/themes/Flexible/css/ie7style.css" /> 17 <![endif]--> 18 <!--[if IE 8]> 19 <link rel="stylesheet" type="text/css" href="https://andrewgarrison.com/wp-content/themes/Flexible/css/ie8style.css" /> 20 <![endif]--> 21 <!--[if lt IE 9]> 22
22<script src="https://andrewgarrison.com/wp-content/themes/Flexible/js/html5.js" type="text/javascript"></script>
22 23 <![endif]--> 24 25
25<script type="text/javascript"> 26 document.documentElement.className = 'js'; 27 </script>
27 28 29 <meta name='robots' content='max-image-preview:large' /> 30<link rel='dns-prefetch' href='//fonts.googleapis.com' /> 31<link rel='dns-prefetch' href='//s.w.org' /> 32<link rel="alternate" type="application/rss+xml" title="Andrew Garrison » Feed" href="https://andrewgarrison.com/feed/" /> 33<link rel="alternate" type="application/rss+xml" title="Andrew Garrison » Comments Feed" href="https://andrewgarrison.com/comments/feed/" /> 34
34<script type="text/javascript"> 35 window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/andrewgarrison.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.8.17"}}; 36 !function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(!p||!p.fillText)return!1;switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])?!1:!s([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!s([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]);case"emoji":return!s([10084,65039,8205,55357,56613],[10084,65039,8203,55357,56613])}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(n=t.source||{}).concatemoji?c(n.concatemoji):n.wpemoji&&n.twemoji&&(c(n.twemoji),c(n.wpemoji)))}(window,document,window._wpemojiSettings); 37 </script>
37 38 <meta content="Flexible v.1.3" name="generator"/><style type="text/css"> 39img.wp-smiley, 40img.emoji { 41 display: inline !important; 42 border: none !important; 43 box-shadow: none !important; 44 height: 1em !important; 45 width: 1em !important; 46 margin: 0 .07em !important; 47 vertical-align: -0.1em !important; 48 background: none !important; 49 padding: 0 !important; 50} 51</style> 52 <link rel='stylesheet' id='wp-block-library-css' href='https://andrewgarrison.com/wp-includes/css/dist/block-library/style.min.css?ver=5.8.17' type='text/css' media='all' /> 53<link rel='stylesheet' id='contact-form-7-css' href='https://andrewgarrison.com/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=3.3.1' type='text/css' media='all' /> 54<link rel='stylesheet' id='google_font_open_sans-css' href='http://fonts.googleapis.com/css?family=Open+Sans%3A400%2C300%2C300italic%2C400italic%2C700&subset=latin%2Clatin-ext%2Ccyrillic&ver=5.8.17' type='text/css' media='all' /> 55<link rel='stylesheet' id='et-shortcodes-css-css' href='https://andrewgarrison.com/wp-content/themes/Flexible/epanel/shortcodes/css/shortcodes.css?ver=3.0' type='text/css' media='all' /> 56<link rel='stylesheet' id='et-shortcodes-responsive-css-css' href='https://andrewgarrison.com/wp-content/themes/Flexible/epanel/shortcodes/css/shortcodes_responsive.css?ver=3.0' type='text/css' media='all' /> 57<link rel='stylesheet' id='fancybox-css' href='https://andrewgarrison.com/wp-content/themes/Flexible/epanel/page_templates/js/fancybox/jquery.fancybox-1.3.4.css?ver=1.3.4' type='text/css' media='screen' /> 58<link rel='stylesheet' id='et_page_templates-css' href='https://andrewgarrison.com/wp-content/themes/Flexible/epanel/page_templates/page_templates.css?ver=1.8' type='text/css' media='screen' />
59<script type='text/javascript' src='https://andrewgarrison.com/wp-includes/js/jquery/jquery.min.js?ver=3.6.0' id='jquery-core-js'></script>
vendor: 1 bytes, line 59
59
60<script type='text/javascript' src='https://andrewgarrison.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.3.2' id='jquery-migrate-js'></script>
60 61<link rel="https://api.w.org/" href="https://andrewgarrison.com/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://andrewgarrison.com/xmlrpc.php?rsd" /> 62<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://andrewgarrison.com/wp-includes/wlwmanifest.xml" /> 63<meta name="generator" content="WordPress 5.8.17" /> 64<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" /><style type="text/css">body { background-color: #efefdf; }body { background-image: url(https://andrewgarrison.com/wp-content/themes/Flexible/images/control_panel/body-bg14.png); }</style><style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style></head> 65<body class="home blog chrome et_includes_sidebar"> 66 <div id="container"> 67 <header class="clearfix"> 68 <hgroup id="logo-area"> 69 <h1 id="logo"> 70 <a href="https://andrewgarrison.com" title="Andrew Garrison">Andrew Garrison</a> 71 </h1> 72 <h2>a blog about software development</h2> 73 </hgroup> 74 75 <nav id="top-menu"> 76 <ul class="nav"> 77 <li class="current_page_item"><a href="https://andrewgarrison.com">Home</a></li> 78 79 <li class="page_item page-item-109"><a href="https://andrewgarrison.com/about/">About</a></li> 80<li class="page_item page-item-44"><a href="https://andrewgarrison.com/blog/">Blog</a></li> 81<li class="page_item page-item-329"><a href="https://andrewgarrison.com/cookie-policy/">Cookie Policy</a></li> 82 </ul> 83 </nav> <!-- end #top-menu --> 84 85 86 </header> 87 <div id="main-area"> 88 <a href="#" id="mobile_nav" class="closed"><span></span>Navigation Menu</a> 89<div id="featured" class="flexslider"> 90 <ul class="slides"> 91 <li class="slide"> 92 <a href="https://andrewgarrison.com/project/codemonkey/"> 93 <img src="https://andrewgarrison.com/wp-content/uploads/2012/10/CodeMonkey-68762_960x3601.jpg" alt='Code Monkey' width='960' height='360' /> </a> 94 </li> 95 </ul> 96</div> <!-- end #featured --> 97 98 99 <section id="blog" class="clearfix"> 100 <h1 class="section-title">Blog</h1> 101 <span class="section-tagline">Recent news</span> 102 103 <a href="/blog" class="more">More posts »</a> 104 105 <div id="blog-grid"> 106 <article id="post-331" class="blog-item post-331 post type-post status-publish format-standard hentry category-everything"> 107 <span class="date">Sep<strong>19</strong></span> 108 109 <h2><a href="https://andrewgarrison.com/blog/simplerockets-2-is-now-available-for-mobile/">SimpleRockets 2 is now available for mobile</a></h2> 110 <p class="meta-info">Posted on Sep 19 by <a href="https://andrewgarrison.com/blog/author/admin/" title="Posts by Andrew" rel="author">Andrew</a></p> 111 <p>After more than three years of development, SimpleRockets 2 is now available on the iOS App Store and Google Play. You can get it here. 112 113As usual, here’s a new launch...</p> 114 </article> <!-- end .blog-item --> 115 <article id="post-319" class="blog-item post-319 post type-post status-publish format-standard hentry category-everything category-games category-ios"> 116 <span class="date">Nov<strong>27</strong></span> 117 118 <h2><a href="https://andrewgarrison.com/blog/simpleplanes-trailer/">SimplePlanes Trailer</a></h2> 119 <p class="meta-info">Posted on Nov 27 by <a href="https://andrewgarrison.com/blog/author/admin/" title="Posts by Andrew" rel="author">Andrew</a></p> 120 <p>Just remembered that I still have this blog. Well, the past year I’ve been writing a game with Philip Tarpley about building airplanes. The game is called SimplePlanes....</p> 121 </article> <!-- end .blog-item --> 122 <article id="post-266" class="blog-item last post-266 post type-post status-publish format-standard hentry category-everything"> 123 <span class="date">Nov<strong>25</strong></span> 124 125 <h2><a href="https://andrewgarrison.com/blog/jundroos-game-architecture-and-tools/">Jundroo’s Game Architecture and Tools</a></h2> 126 <p class="meta-info">Posted on Nov 25 by <a href="https://andrewgarrison.com/blog/author/admin/" title="Posts by Andrew" rel="author">Andrew</a></p> 127 <p>I am frequently asked what I use to write my games, so I thought it was time to just write it down and put it in one place. 128Architecture 12995% of my code is in C++, and then I have...</p> 130 </article> <!-- end .blog-item --> 131 <article id="post-261" class="blog-item post-261 post type-post status-publish format-standard hentry category-simplerockets"> 132 <span class="date">Sep<strong>11</strong></span> 133 134 <h2><a href="https://andrewgarrison.com/blog/landing-a-rover-on-smoon-in-simplerockets/">Landing a rover on Smoon in SimpleRockets</a></h2> 135 <p class="meta-info">Posted on Sep 11 by <a href="https://andrewgarrison.com/blog/author/admin/" title="Posts by Andrew" rel="author">Andrew</a></p> 136 <p>It seems that every time I release a new game, my players manage to do the impossible. SimpleRockets has been no different. Within just days after release, I am seeing high...</p> 137 </article> <!-- end .blog-item --> 138 <article id="post-223" class="blog-item post-223 post type-post status-publish format-standard hentry category-everything category-ios category-marketing"> 139 <span class="date">Sep<strong>06</strong></span> 140 141 <h2><a href="https://andrewgarrison.com/blog/number-two/">Number Two</a></h2> 142 <p class="meta-info">Posted on Sep 6 by <a href="https://andrewgarrison.com/blog/author/admin/" title="Posts by Andrew" rel="author">Andrew</a></p> 143 <p>My newest game, SimpleRockets, was released yesterday (9/5) and rose to the #2 spot in the iOS App Store. Needless to say, it’s been an exciting day and I thought it would...</p> 144 </article> <!-- end .blog-item --> 145 <article id="post-216" class="blog-item last post-216 post type-post status-publish format-standard hentry category-everything"> 146 <span class="date">Sep<strong>05</strong></span> 147 148 <h2><a href="https://andrewgarrison.com/blog/simplerockets-has-launched/">SimpleRockets has launched!</a></h2> 149 <p class="meta-info">Posted on Sep 5 by <a href="https://andrewgarrison.com/blog/author/admin/" title="Posts by Andrew" rel="author">Andrew</a></p> 150 <p>SimpleRockets is now available on iPhone/iPad, Google Play, Amazon App Store, Windows Phone 8, and PC. It’s just $0.99 on everything except for PC. Be sure to get it now,...</p> 151 </article> <!-- end .blog-item --> 152 </div> <!-- end #blog-grid --> 153 </section> <!-- end #blog --> 154 155 156 </div> <!-- end #main-area --> 157 158 <footer id="main_footer" class="clearfix"> 159 <p id="copyright">Designed by <a href="http://www.elegantthemes.com" title="Premium WordPress Themes">Elegant Themes</a> | Powered by <a href="http://www.wordpress.org">WordPress</a></p> 160 </footer> <!-- end #main_footer --> 161 </div> <!-- end #container --> 162 163
163<script type='text/javascript' src='https://andrewgarrison.com/wp-content/plugins/contact-form-7/includes/js/jquery.form.min.js?ver=3.18' id='jquery-form-js'></script>
vendor: 1 bytes, line 163
163
164<script type='text/javascript' id='contact-form-7-js-extra'> 165/* <![CDATA[ */ 166var _wpcf7 = {"loaderUrl":"https:\/\/andrewgarrison.com\/wp-content\/plugins\/contact-form-7\/images\/ajax-loader.gif","sending":"Sending ..."}; 167/* ]]> */ 168</script>
vendor: 1 bytes, line 168
168
169<script type='text/javascript' src='https://andrewgarrison.com/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=3.3.1' id='contact-form-7-js'></script>
vendor: 1 bytes, line 169
169
170<script type='text/javascript' src='https://andrewgarrison.com/wp-content/themes/Flexible/js/superfish.js?ver=1.0' id='superfish-js'></script>
vendor: 1 bytes, line 170
170
171<script type='text/javascript' src='https://andrewgarrison.com/wp-content/themes/Flexible/js/jquery.easing.1.3.js?ver=1.0' id='easing-js'></script>
vendor: 1 bytes, line 171
171
172<script type='text/javascript' src='https://andrewgarrison.com/wp-content/themes/Flexible/js/jquery.flexslider-min.js?ver=1.0' id='flexslider-js'></script>
vendor: 1 bytes, line 172
172
173<script type='text/javascript' src='https://andrewgarrison.com/wp-content/themes/Flexible/js/jquery.fitvids.js?ver=1.0' id='fitvids-js'></script>
vendor: 1 bytes, line 173
173
174<script type='text/javascript' src='https://andrewgarrison.com/wp-content/themes/Flexible/js/jquery.quicksand.js?ver=1.0' id='quicksand-js'></script>
vendor: 1 bytes, line 174
174
175<script type='text/javascript' id='custom_script-js-extra'> 176/* <![CDATA[ */ 177var etsettings = {"ajaxurl":"https:\/\/andrewgarrison.com\/wp-admin\/admin-ajax.php"}; 178/* ]]> */ 179</script>
vendor: 1 bytes, line 179
179
180<script type='text/javascript' src='https://andrewgarrison.com/wp-content/themes/Flexible/js/custom.js?ver=1.0' id='custom_script-js'></script>
vendor: 1 bytes, line 180
180
181<script type='text/javascript' src='https://andrewgarrison.com/wp-content/themes/Flexible/epanel/page_templates/js/fancybox/jquery.fancybox-1.3.4.pack.js?ver=1.3.4' id='fancybox-js'></script>
vendor: 1 bytes, line 181
181
182<script type='text/javascript' src='https://andrewgarrison.com/wp-content/themes/Flexible/epanel/page_templates/js/et-ptemplates-frontend.js?ver=1.1' id='et-ptemplates-frontend-js'></script>
vendor: 1 bytes, line 182
182
183<script type='text/javascript' src='https://andrewgarrison.com/wp-includes/js/wp-embed.min.js?ver=5.8.17' id='wp-embed-js'></script>
183 184</body> 185</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.