{"title":"Andrew Z Allen","link":[{"@attributes":{"href":"http:\/\/andrewzallen.com\/","rel":"alternate"}},{"@attributes":{"href":"http:\/\/andrewzallen.com\/feeds\/all.atom.xml","rel":"self"}}],"id":"http:\/\/andrewzallen.com\/","updated":"2013-05-24T17:00:00-06:00","entry":[{"title":"Simple inbound HTTP server","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/tricks\/simple-inbound-http-server.html","rel":"alternate"}},"updated":"2013-05-24T17:00:00-06:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2013-05-24:tricks\/simple-inbound-http-server.html","summary":"<p>I wanted to show a webpage I've been toying with to a friend today.\nThe project is in Django and I didn't want to take the time to deploy it to a permanent host like heroku.\nI know it is easy to do that, but I was just feeling lazy.\nI came up with a cool trick today for doing exactly this.\nI have a server that I leave on 100% of the time.<\/p>\n<p>I realized that I could use this server as a simple proxy and forward any web requests that came to a special domain.<\/p>\n<p>Using SSH I created a reverse tunnel that made my localhost's 8000 port availble on the remote machine on port 1234.<\/p>\n<div class=\"highlight\"><pre>ssh -R 1234:127.0.0.1:8000 <span class=\"k\">${<\/span><span class=\"nv\">HOST<\/span><span class=\"k\">}<\/span>\n<\/pre><\/div>\n<p>This server runs nginx and has the ability to handle vhosts.\nI made a very simple nginx entry that forwarded proxy.mydomain.com to localhost:1234.\nIt looked something like this:<\/p>\n<table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre> 1\n 2\n 3\n 4\n 5\n 6\n 7\n 8\n 9\n10<\/pre><\/div><\/td><td class=\"code\"><div class=\"highlight\"><pre>server {\n    listen   80;\n    server_name   ~^(www\\.)?proxy.example.com$;\n\n    access_log  \/var\/log\/nginx\/proxy.access.log;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:1234;\n    }\n}\n<\/pre><\/div>\n<\/td><\/tr><\/table><p>I wrapped all this up in a simple little shell script and put it on my 'PATH'<\/p>\n<table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre> 1\n 2\n 3\n 4\n 5\n 6\n 7\n 8\n 9\n10\n11\n12<\/pre><\/div><\/td><td class=\"code\"><div class=\"highlight\"><pre><span class=\"c\">#! \/usr\/bin\/env bash<\/span>\n<span class=\"k\">if<\/span> <span class=\"o\">[<\/span> ! -z <span class=\"nv\">$1<\/span> <span class=\"o\">]<\/span>\n<span class=\"k\">then<\/span>\n<span class=\"k\">    <\/span><span class=\"nv\">port<\/span><span class=\"o\">=<\/span><span class=\"nv\">$1<\/span>\n<span class=\"k\">else<\/span>\n<span class=\"k\">    <\/span><span class=\"nv\">port<\/span><span class=\"o\">=<\/span>8000\n<span class=\"k\">fi<\/span>\n\n<span class=\"nb\">echo<\/span> <span class=\"s2\">&quot;Connecting to server to forward port ${port} at \\<\/span>\n<span class=\"s2\">      http:\/\/proxy.example.com\/&quot;<\/span>\nssh -R 1234:127.0.0.1:<span class=\"k\">${<\/span><span class=\"nv\">port<\/span><span class=\"k\">}<\/span> example.com <span class=\"se\">\\<\/span>\n      <span class=\"s2\">&quot;echo &#39;Forwarding... press enter to exit&#39;; read&quot;<\/span>\n<\/pre><\/div>\n<\/td><\/tr><\/table><p>Now when I run <cite>forward_http<\/cite> from the command line, it will automagically forward my local port 8000 to the proxy domain I set up.<\/p>\n"},{"title":"Rock Paper Scissors","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/projects\/rock-paper-scissors.html","rel":"alternate"}},"updated":"2013-04-08T16:33:00-06:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2013-04-08:projects\/rock-paper-scissors.html","summary":"<p>Want to play a game?<\/p>\n<div class=\"project text-center\" id=\"rps-div\">Loading...<\/div> <script>aza.lab_experiment((true ? \"http:\/\/rps.labs.andrewzallen.com\/rps.js\" : \"http:\/\/localhost:5000\/rps.js\"), $(\"#rps-div\"), function() {rps.main($(\"#rps-div\"))})<\/script><p>This is a very simple implementation of a Rock Paper Scissors (RPS) game.<\/p>\n<p>Weighing in at 157 lines of JavaScript and 179 lines of Python, the application tracks previous users play patterns to create a probability distribution of your next throw.\nGiven this probability distribution, the game takes a weighted guess at your next throw and then throws whatever will beat that.<\/p>\n<p>All source is available at my <a class=\"reference external\" href=\"https:\/\/github.com\/achew22\/rps\">github<\/a>.<\/p>\n"},{"title":"The Frontend","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/programming\/the-frontend.html","rel":"alternate"}},"updated":"2013-03-10T10:39:00-06:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2013-03-10:programming\/the-frontend.html","summary":"<p>The frontend worked so perfectly into <a class=\"reference external\" href=\"http:\/\/andrewzallen.com\/programming\/the-backend.html\">the backend<\/a>, I wrote about this last time,<\/p>\n<p>The great thing about this set up is the decoupling it provided.\nA lot of web apps rerender the whole page from scratch and therefore transmit their markup over and over again to the user.\nInstead we transmitted our entire package of logic and templates in a single js file.\nThis file, which clocked in at <span class=\"math\">\\(\\lt 200\\,\\textrm{kb}\\)<\/span>\n thanks to Google Clousre Compiler's advanced mode, is hosted on <a class=\"reference external\" href=\"http:\/\/aws.amazon.com\/cloudfront\">cloudfront<\/a> which made it super fast.<\/p>\n<p>On top of using a CDN, every deployment of the application got a new url at the CDN.\nThis means that every time you loaded the page after the first time, the only request that was made was the single request to load the HTML that referenced our assets.\nWith this, and a few more tricks, we were able to get our page load time down even on junky connections to just a few tens of milliseconds.\nAccording to our internal metrics, <span class=\"math\">\\(95%\\)<\/span>\n of content arrived from our server in <span class=\"math\">\\(\\lt 100\\,\\textrm{ms.}\\)<\/span>\n\n<span class=\"math\">\\(100\\,\\textrm{ms}\\)<\/span>\n was about the worst lag anyone could possibly have experienced but we didn't stop there.\nWhen we fetched data for every page, we preemptively loaded data for the next next screen so that it would already be available when the user clicked that link making the delay <span class=\"math\">\\(\\textrm{sub-}10\\,\\textrm{ms}\\)<\/span>\n on good browsers.<\/p>\n<p>Deliverability aside, we wrote the application in Google's Closure Framework which provided us with the aforementioned compilation statistic.\nThis is an old framework that not only has <a class=\"reference external\" href=\"http:\/\/closure-library.googlecode.com\/git\/closure\/goog\/demos\/index.html\">everything you could possible wish for<\/a>, it also has <a class=\"reference external\" href=\"http:\/\/docs.closure-library.googlecode.com\/git\/index.html\">extremely thorough documentation<\/a>.\nThey provide a framework which helps you through the creation of your <cite>:abbr: RIA (Rich Internet Application)<\/cite>.<\/p>\n","category":[{"@attributes":{"term":"programming"}},{"@attributes":{"term":"GoSpotCheck"}}]},{"title":"The Backend","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/programming\/the-backend.html","rel":"alternate"}},"updated":"2013-02-17T10:39:00-07:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2013-02-17:programming\/the-backend.html","summary":"<p>Writing any kind of mobile application for <abbr title=\"Busines To Business\">B2B<\/abbr>\nrequires some central command and control server. For GoSpotCheck, that is the\nbeaver, the hub and spoke of the SpotChecking system.<\/p>\n<p>Beaver operates as a <a class=\"reference external\" href=\"http:\/\/grails.org\">grails<\/a> application that is constantly running, managed by\n<a class=\"reference external\" href=\"http:\/\/aws.amazon.com\">Amazon EC2<\/a>. The service accesses the database and\nessentially provides a very simple interface for client interaction. All\nAPI requests came through in a JSON format and all responses were in kind.\nThe same beaver server also serves the GoSpotCheck homepage\/admin panel which\nprevented the pain that is\n<a class=\"reference external\" href=\"http:\/\/en.wikipedia.org\/wiki\/Cross-origin_resource_sharing\">CORS<\/a> from\nentering our lives.<\/p>\n<p>All requests were atomic, no <a class=\"reference external\" href=\"http:\/\/tools.ietf.org\/html\/rfc5789\">PATCH<\/a>, which allowed us an interesting opportunity to treat the backend not as a webserver but instead as a GoSpotCheck specific database.\nIt implemented methods and stored data that only we would find useful.\nThe fact that it was really persisted to a database deeper in the stack was inconsequential to us.\nAll we cared about was that the database was atomic, consistent, isolate, and durable.\nA model that should be easy any newcomer from any CS program in the world to reason about.<\/p>\n<p>This system was extremely decoupled which meant that when we experienced problems in any one system (less the core), the others continued to operate as if everything were normal.<\/p>\n<p>Next time I will talk about the development of <a class=\"reference external\" href=\"http:\/\/andrewzallen.com\/programming\/the-frontend.html\">the frontend<\/a> and some of the more interesting things we did with it.<\/p>\n","category":[{"@attributes":{"term":"programming"}},{"@attributes":{"term":"GoSpotCheck"}}]},{"title":"Hello World","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/programming\/hello-world.html","rel":"alternate"}},"updated":"2013-02-02T10:39:00-07:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2013-02-02:programming\/hello-world.html","summary":"<p>I just quit my job, 1 week ago in fact.\nI've had a lot of time to think about it, and there were some things that didn't go well, but there were some things that really did.\nI worked for a company called <a class=\"reference external\" href=\"http:\/\/www.gospotcheck.com\">GoSpotCheck<\/a> and helped them build one of the best systems I have ever had the pleasure to be involved with.<\/p>\n<p>When I started doing web development, website design was static pages with all content fully loaded.\nEverything was loaded through a portal, a phrase that I still don't fully understand.\nAfter a few years, the world started to buzz about <a class=\"reference external\" href=\"http:\/\/wikipedia.org\/wiki\/Progressive_Enhancement\">progressive enhancement<\/a> for the web.\nMajor page navigation was still handled by making a full HTTP request.\nThis meant that most of a pages conten't didn't change during this process, making much of the &quot;over the wire&quot; unnecessary.\nTo combat this, many modern apps are written as <a class=\"reference external\" href=\"http:\/\/wikipedia.org\/wiki\/Single_Page_Application\">single page apps<\/a>.\nAll assets are delivered upfront and the only governor on the speed of your application is the speed of the JS VM and your code.<\/p>\n<p>This may sound familiar to many, many people.\nIt is even more familiar to people if I put it this way, &quot;native application&quot;.\nThis application consumes a remote API and displays the content to the user.\nJavascript is the native development language of the web.\nHow is that different from a mobile app?\nWe built a fantastic native application for the web.<\/p>\n<p>I intend this blog to be a continued endeavor documenting projects I'm working on or have previously worked on. Next, I'm going to talk about <a class=\"reference external\" href=\"http:\/\/andrewzallen.com\/programming\/the-backend.html\">the backend<\/a>, the core of our architecture.<\/p>\n","category":[{"@attributes":{"term":"programming"}},{"@attributes":{"term":"GoSpotCheck"}}]},{"title":"Kiltish Software","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/work\/kiltish.html","rel":"alternate"}},"updated":"2013-01-13T00:00:00-07:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2013-01-13:work\/kiltish.html","summary":"<p>Take a <a class=\"reference external\" href=\"http:\/\/luckycharmproductions.com\/what-we-do\/media-system\">look<\/a> at my work in action.<\/p>\n"},{"title":"GoSpotCheck","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/work\/gospotcheck.html","rel":"alternate"}},"updated":"2012-08-13T00:00:00-06:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2012-08-13:work\/gospotcheck.html","summary":"<p>I worked on many projects for them.<\/p>\n<blockquote>\n<ul class=\"simple\">\n<li>Created a rich analytical backend that provided fast analysis of the clients data and made suggestions about what to improve<\/li>\n<li>Developed <abbr title=\"Single Page Application\">SPA<\/abbr> that provided instant access to all of the<\/li>\n<li>Mobile application for iOS and for Android<\/li>\n<\/ul>\n<\/blockquote>\n<p>I wrote about what I built for them, check it out <a class=\"reference external\" href=\"\/programming\/hello-world.html\">here<\/a>.<\/p>\n<img alt=\"Sample of the GoSpotCheck iOS application\" class=\"align-left\" src=\"\/static\/work\/images\/gospotcheck_ios.png\" style=\"width: 50%;\" \/>\n<img alt=\"Sample of the GoSpotCheck android application\" class=\"align-left\" src=\"\/static\/work\/images\/gospotcheck_android.jpg\" style=\"width: 50%;\" \/>\n"},{"title":"FlexTrip","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/work\/flextrip.html","rel":"alternate"}},"updated":"2011-06-03T00:00:00-06:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2011-06-03:work\/flextrip.html","summary":{"@attributes":{"type":"html"}}},{"title":"FullContact (formerly RainMaker)","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/work\/fullcontact-formerly-rainmaker.html","rel":"alternate"}},"updated":"2011-06-03T00:00:00-06:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2011-06-03:work\/fullcontact-formerly-rainmaker.html","summary":"<p>Working for <a class=\"reference external\" href=\"https:\/\/fullcontact.com\">FullContact<\/a> I built the Full Contact <a class=\"reference external\" href=\"https:\/\/github.com\/fullcontact\/fullcontact-api-python\">API client<\/a> for python.<\/p>\n<p>Code sample:<\/p>\n<table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre>  1\n  2\n  3\n  4\n  5\n  6\n  7\n  8\n  9\n 10\n 11\n 12\n 13\n 14\n 15\n 16\n 17\n 18\n 19\n 20\n 21\n 22\n 23\n 24\n 25\n 26\n 27\n 28\n 29\n 30\n 31\n 32\n 33\n 34\n 35\n 36\n 37\n 38\n 39\n 40\n 41\n 42\n 43\n 44\n 45\n 46\n 47\n 48\n 49\n 50\n 51\n 52\n 53\n 54\n 55\n 56\n 57\n 58\n 59\n 60\n 61\n 62\n 63\n 64\n 65\n 66\n 67\n 68\n 69\n 70\n 71\n 72\n 73\n 74\n 75\n 76\n 77\n 78\n 79\n 80\n 81\n 82\n 83\n 84\n 85\n 86\n 87\n 88\n 89\n 90\n 91\n 92\n 93\n 94\n 95\n 96\n 97\n 98\n 99\n100\n101\n102\n103\n104\n105\n106\n107\n108\n109\n110\n111\n112\n113\n114\n115\n116\n117\n118\n119\n120\n121\n122\n123\n124\n125\n126\n127\n128\n129\n130\n131\n132\n133\n134\n135\n136\n137\n138\n139\n140\n141\n142\n143\n144\n145\n146\n147\n148\n149\n150\n151\n152\n153\n154\n155\n156\n157\n158\n159\n160\n161\n162\n163\n164\n165\n166\n167\n168<\/pre><\/div><\/td><td class=\"code\"><div class=\"highlight\"><pre><span class=\"kn\">import<\/span> <span class=\"nn\">rainmaker<\/span>\n<span class=\"n\">rainmaker<\/span> <span class=\"o\">=<\/span> <span class=\"n\">rainmaker<\/span><span class=\"o\">.<\/span><span class=\"n\">RainMaker<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;API_KEY&quot;<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">rainmaker<\/span><span class=\"o\">.<\/span><span class=\"n\">do_lookup<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;lorangb@gmail.com&quot;<\/span><span class=\"p\">))<\/span>\n\n<span class=\"c\"># Output<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"s\">&quot;status&quot;<\/span><span class=\"p\">:<\/span> <span class=\"mi\">200<\/span><span class=\"p\">,<\/span>\n    <span class=\"s\">&quot;contactInfo&quot;<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n        <span class=\"s\">&quot;familyName&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Lorang&quot;<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;givenName&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Bart&quot;<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;fullName&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Bart Lorang&quot;<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;emailAddresses&quot;<\/span><span class=\"p\">:<\/span>\n        <span class=\"p\">[<\/span>\n        <span class=\"s\">&quot;lorangb@gmail.com&quot;<\/span>\n        <span class=\"p\">]<\/span>\n    <span class=\"p\">},<\/span>\n    <span class=\"s\">&quot;interests&quot;<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n        <span class=\"s\">&quot;Football&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;Sports &amp; Recreation&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;Business&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;Online News&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;Baseball&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;Tennis&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;News &amp; Current Events&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;Basketball&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;Blogging&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;Social Networks&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;Online Journals&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;Golf&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;Technology&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span>\n    <span class=\"p\">},<\/span>\n    <span class=\"s\">&quot;organizations&quot;<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;name&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Forseti Holdings, LLC&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;title&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Chairman &amp; CEO&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;startDate&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;2010-01&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;name&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Rainmaker Technologies&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;title&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;CEO&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;startDate&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;2010-01&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;name&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Forseti Holdings LLC&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;title&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Chairman &amp; CEO&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;isPrimary&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">true<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;name&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;CloudCenter LLC&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;title&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Chairman &amp; CEO&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;isPrimary&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">false<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;name&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;DTS&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;isPrimary&quot;<\/span><span class=\"p\">:<\/span> <span class=\"n\">false<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">],<\/span>\n    <span class=\"s\">&quot;demographics&quot;<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n        <span class=\"s\">&quot;influencerScore&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;81-90&quot;<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;householdIncome&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;250k+&quot;<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;age&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;31&quot;<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;homeOwnerStatus&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Own&quot;<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;locationGeneral&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Denver, Colorado, United States&quot;<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;children&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;No&quot;<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;gender&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Male&quot;<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">&quot;maritalStatus&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;Single&quot;<\/span>\n    <span class=\"p\">},<\/span>\n    <span class=\"s\">&quot;socialProfiles&quot;<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;facebook&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/www.facebook.com\/bart.lorang&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;id&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;651620441&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;birthday&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;08\/16\/1979&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;username&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;bart.lorang&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/twitter.com\/lorangb&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;id&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;5998422&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;twitter&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;username&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;lorangb&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/www.linkedin.com\/in\/bartlorang&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;id&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;bartlorang&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;linkedin&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;username&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;bartlorang&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/about.me\/lorangb&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;about.me&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/www.flickr.com\/people\/39267654@N00\/&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;id&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;39267654@N00&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;flickr&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/profiles.friendster.com\/6986589&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;friendster&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;https:\/\/profiles.google.com\/lorangb&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;id&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;lorangb&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;google profile&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;username&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;lorangb&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/www.myspace.com\/137200880&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;myspace&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/picasaweb.google.com\/lorangb&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;picasa&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/tungle.me\/bartlorang&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;id&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;bartlorang&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;tungle.me&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;username&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;bartlorang&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/youtube.com\/lorangb&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;youtube&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;friendster&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/profiles.friendster.com\/6986589&quot;<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">],<\/span>\n    <span class=\"s\">&quot;photos&quot;<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/graph.facebook.com\/&lt;snip&gt;&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;facebook&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;https:\/\/lh5&lt;snip&gt;&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;google profile&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/profile&lt;snip&gt;&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;facebook&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/photos.friendster.com&lt;snip&gt;&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;friendster&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/c2.ac-images&lt;snip&gt;&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;myspace&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/images.plaxo.com\/&lt;snip&gt;&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;plaxo&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/a1.twimg.com\/&lt;snip&gt;&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;twitter&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;gravatar&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;https:\/\/secure.gravatar.com\/&lt;snip&gt;&quot;<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"s\">&quot;type&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;linkedin&quot;<\/span><span class=\"p\">,<\/span>\n            <span class=\"s\">&quot;url&quot;<\/span><span class=\"p\">:<\/span> <span class=\"s\">&quot;http:\/\/media.linkedin.com\/&lt;snip&gt;&quot;<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">]<\/span>\n<span class=\"p\">}<\/span>\n<\/pre><\/div>\n<\/td><\/tr><\/table>"},{"title":"InboxFever","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/work\/inboxfever.html","rel":"alternate"}},"updated":"2011-06-03T00:00:00-06:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2011-06-03:work\/inboxfever.html","summary":{"@attributes":{"type":"html"}}},{"title":"TechStars","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/work\/techstars.html","rel":"alternate"}},"updated":"2011-05-03T00:00:00-06:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2011-05-03:work\/techstars.html","summary":"<p>I was hired by <a class=\"reference external\" href=\"http:\/\/techstars.com\">TechStars<\/a> to be a <a class=\"reference external\" href=\"http:\/\/techstars.com\/hackstars\">HackStar<\/a><\/p>\n<p>Working for TechStars I did a lot of amazing work including building some internal tools that are still used today to help their business processes.<\/p>\n<p>To use the words of TechStars to describe my work for them:<\/p>\n<blockquote>\n<ul class=\"simple\">\n<li>I am a code-slinging mac-daddy superstar guru at PHP, Java, Python, Objective-C, Ruby, and JQuery.<\/li>\n<li>I can design, cut and code efficiently and brilliantly<\/li>\n<li>I was vital in the assistance of some of the country\u2019s most promising new founders and young companies.<\/li>\n<\/ul>\n<\/blockquote>\n"},{"title":"RevUpRender","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/work\/revuprender.html","rel":"alternate"}},"updated":"2010-09-03T00:00:00-06:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2010-09-03:work\/revuprender.html","summary":"<p>For <a class=\"reference external\" href=\"http:\/\/revuprender.com\">RevUpRender<\/a> I developed software that allows architectural and mechanical design firms to run their CAD software in the cloud. Only minimal rendering happens locally with the unique hybridization techniques that I helped develop.<\/p>\n"},{"title":"Stoccato","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/work\/stoccato.html","rel":"alternate"}},"updated":"2009-04-03T00:00:00-06:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2009-04-03:work\/stoccato.html","summary":{"@attributes":{"type":"html"}}},{"title":"Interactive Mobile Partners","link":{"@attributes":{"href":"http:\/\/andrewzallen.com\/work\/interactive-mobile-partners.html","rel":"alternate"}},"updated":"2007-04-03T00:00:00-06:00","author":{"name":"Andrew Z Allen"},"id":"tag:andrewzallen.com,2007-04-03:work\/interactive-mobile-partners.html","summary":{"@attributes":{"type":"html"}}}]}