-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
13 lines (8 loc) · 10.7 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
<!doctype html><html lang="en"><head><meta charset="utf-8"><link rel="shortcut icon" href="/favicon.ico"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name="theme-color" content="#000000"><link rel="manifest" href="/manifest.json"><link rel="canonical" href="/" />
<title data-rh="true">Artificial Unintelligence.</title>
<script>window.__NAVI_STATE__={"__navi__":{"requestDataWithoutState":{}}};</script><link href="/static/css/main.939687a1.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"><div class="BlogLayout_container__1fiRb"><div class="
LoadingIndicator_LoadingIndicator__3KSl0
undefined
"></div><main class="BlogLayout_contentarea__p9Rdv"><div style="overflow:hidden"><header><h1 class="BlogIndexPage_title__341hM"><a href="/" class=" ">Artificial Unintelligence.</a></h1><div class="
Bio_Bio__1ks_2
"><img src="/static/media/biopic.57a2a67e.jpeg" alt="Miles Garnsey"/><p>A blog about data science/engineering, machine learning, AI and distributed systems.<br/>By<!-- --> <!-- --> <a href="https://twitter.com/MilesGarnsey/">Miles Garnsey</a>.<br/><i>Managing Director @ Atreus Technologies, Engineering @ another place. </i><br/>For questions, feedback, or work (the latter preferred) contact me on <!-- --> <a href="https://twitter.com/MilesGarnsey/">Twitter</a>, <a href="https://hachyderm.io/@milesgarnsey">Mastodon</a>, or catch me on <!-- --> <a href="https://www.linkedin.com/in/miles-garnsey-b283403b/">LinkedIn</a>.<br/></p></div></header><ul class="BlogIndexPage_articlesList__1V39R"><li><article class="ArticleSummary_ArticleSummary__3I5Qk"><h2><a href="/posts/2019-09-10/Data-Engineering-Pt-3" class=" ">DS III - Making a Data Plane Fly.</a></h2><small><time dateTime="Mon, 09 Sep 2019 14:00:00 GMT">September 10, 2019</time> <!-- -->•<!-- --> <ul class="ArticleMeta_tags__1IJ9w"><li><a href="/tags/Data Engineering tutorial series" class=" ">Data Engineering tutorial series</a></li><li><a href="/tags/Docker" class=" ">Docker</a></li><li><a href="/tags/Kubernetes" class=" ">Kubernetes</a></li><li><a href="/tags/etcd" class=" ">etcd</a></li><li><a href="/tags/Fluentd" class=" ">Fluentd</a></li><li><a href="/tags/Kafka" class=" ">Kafka</a></li><li><a href="/tags/Architecture" class=" ">Architecture</a></li><li><a href="/tags/Platform" class=" ">Platform</a></li><li><a href="/tags/Scala" class=" ">Scala</a></li></ul></small><p>Part III of our series on data science and engineering. We make some design decisions about how we'll use Kafka then take to the air to build a producer in Scala. We set up sbt, demonstrate 'one click' deploy to Kubernetes. (How cool does that make a four-line shell script sound?) Then we fix all the things that we've broken and talk a bit about Scala and some of its pitfalls.</p></article></li><li><article class="ArticleSummary_ArticleSummary__3I5Qk"><h2><a href="/posts/2019-09-06/About-Kafka" class=" ">Six Ways Your Kafka Design will Fail.</a></h2><small><time dateTime="Thu, 05 Sep 2019 14:00:00 GMT">September 6, 2019</time> <!-- -->•<!-- --> <ul class="ArticleMeta_tags__1IJ9w"><li><a href="/tags/Kafka" class=" ">Kafka</a></li><li><a href="/tags/Architecture" class=" ">Architecture</a></li><li><a href="/tags/Platform" class=" ">Platform</a></li><li><a href="/tags/Schema Registry" class=" ">Schema Registry</a></li><li><a href="/tags/Avro" class=" ">Avro</a></li></ul></small><p>Our blog series on data science and engineering is using Kafka as a distributed data plane for our platform. But Kafka often gets misunderstood. Don't know your partitions from your replications? Read on to learn some of the most common misunderstandings people have about Kafka.</p></article></li><li><article class="ArticleSummary_ArticleSummary__3I5Qk"><h2><a href="/posts/2019-08-27/Data-Engineering-Pt-2" class=" ">DS II - Making a Mockery (of a Platform).</a></h2><small><time dateTime="Mon, 26 Aug 2019 14:00:00 GMT">August 27, 2019</time> <!-- -->•<!-- --> <ul class="ArticleMeta_tags__1IJ9w"><li><a href="/tags/Data Engineering tutorial series" class=" ">Data Engineering tutorial series</a></li><li><a href="/tags/Docker" class=" ">Docker</a></li><li><a href="/tags/Kubernetes" class=" ">Kubernetes</a></li><li><a href="/tags/etcd" class=" ">etcd</a></li><li><a href="/tags/Fluentd" class=" ">Fluentd</a></li><li><a href="/tags/Kafka" class=" ">Kafka</a></li><li><a href="/tags/Sidecar Pattern" class=" ">Sidecar Pattern</a></li></ul></small><p>Part II of our series on data science and engineering. As threatened, we finally set up Kubernetes as a development environment, add some (probably paltry) security and deploy etcd, Kafka and Fluentd.</p></article></li><li><article class="ArticleSummary_ArticleSummary__3I5Qk"><h2><a href="/posts/2019-08-19/Data-Engineering-Pt-1" class=" ">DS I - That's no app. It's a platform.</a></h2><small><time dateTime="Sun, 18 Aug 2019 14:00:00 GMT">August 19, 2019</time> <!-- -->•<!-- --> <ul class="ArticleMeta_tags__1IJ9w"><li><a href="/tags/Data Engineering tutorial series" class=" ">Data Engineering tutorial series</a></li><li><a href="/tags/Docker" class=" ">Docker</a></li><li><a href="/tags/Kubernetes" class=" ">Kubernetes</a></li><li><a href="/tags/etcd" class=" ">etcd</a></li><li><a href="/tags/Fluentd" class=" ">Fluentd</a></li><li><a href="/tags/Kafka" class=" ">Kafka</a></li><li><a href="/tags/Platform Architecture" class=" ">Platform Architecture</a></li><li><a href="/tags/Platform" class=" ">Platform</a></li><li><a href="/tags/Scala" class=" ">Scala</a></li><li><a href="/tags/Kafka Streams" class=" ">Kafka Streams</a></li><li><a href="/tags/REST" class=" ">REST</a></li><li><a href="/tags/Service Mesh" class=" ">Service Mesh</a></li></ul></small><p>Part I of our series on data science and engineering. Inexplicably, the introductory post did not scare you off. You still want to read about distributed systems, data engineering, and machine learning. Abandon hope all ye who enter here - in this post we will discuss what we want from a big data platform, some of the hidden (or assumed) requirements, and why pulling tweets off Twitter might be trickier than it sounds.</p></article></li><li><article class="ArticleSummary_ArticleSummary__3I5Qk"><h2><a href="/posts/2019-08-019/Welcome" class=" ">Welcome, please don't spill crumbs on the carpet.</a></h2><small><time dateTime="Sun, 18 Aug 2019 14:00:00 GMT">August 19, 2019</time> <!-- -->•<!-- --> <ul class="ArticleMeta_tags__1IJ9w"><li><a href="/tags/Scala" class=" ">Scala</a></li><li><a href="/tags/Data Science" class=" ">Data Science</a></li><li><a href="/tags/Data Engineering" class=" ">Data Engineering</a></li><li><a href="/tags/Kubernetes" class=" ">Kubernetes</a></li><li><a href="/tags/Kafka" class=" ">Kafka</a></li></ul></small><p>A gripping introduction to the world of data science, engineering, and distributed systems - and the bitter struggles of making them work.</p></article></li></ul><footer class="BlogIndexPage_footer__1vkZQ"><div><a href="./rss.xml" target="_blank" style="float:right">RSS</a><a href="/about" class=" ">About</a> •<!-- --> <a href="/tags" class=" ">Tags</a> •<!-- --> <a href="https://github.com/frontarm/create-react-blog">Source</a></div></footer></div></main></div></div><script>!function(i){function e(e){for(var t,r,n=e[0],o=e[1],a=e[2],c=0,u=[];c<n.length;c++)r=n[c],s[r]&&u.push(s[r][0]),s[r]=0;for(t in o)Object.prototype.hasOwnProperty.call(o,t)&&(i[t]=o[t]);for(h&&h(e);u.length;)u.shift()();return l.push.apply(l,a||[]),f()}function f(){for(var e,t=0;t<l.length;t++){for(var r=l[t],n=!0,o=1;o<r.length;o++){var a=r[o];0!==s[a]&&(n=!1)}n&&(l.splice(t--,1),e=p(p.s=r[0]))}return e}var r={},d={1:0},s={1:0},l=[];function p(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return i[e].call(t.exports,t,t.exports,p),t.l=!0,t.exports}p.e=function(l){var e=[];d[l]?e.push(d[l]):0!==d[l]&&{3:1,4:1,5:1,6:1,7:1,8:1,9:1}[l]&&e.push(d[l]=new Promise(function(e,n){for(var t="static/css/"+({}[l]||l)+"."+{3:"31cc05cf",4:"17727e1f",5:"5fb34e5d",6:"d279226b",7:"153883e0",8:"87097d03",9:"15f7c63d",10:"31d6cfe0",11:"31d6cfe0",12:"31d6cfe0",13:"31d6cfe0",14:"31d6cfe0",15:"31d6cfe0"}[l]+".chunk.css",o=p.p+t,r=document.getElementsByTagName("link"),a=0;a<r.length;a++){var c=(i=r[a]).getAttribute("data-href")||i.getAttribute("href");if("stylesheet"===i.rel&&(c===t||c===o))return e()}var u=document.getElementsByTagName("style");for(a=0;a<u.length;a++){var i;if((c=(i=u[a]).getAttribute("data-href"))===t||c===o)return e()}var f=document.createElement("link");f.rel="stylesheet",f.type="text/css",f.onload=e,f.onerror=function(e){var t=e&&e.target&&e.target.src||o,r=new Error("Loading CSS chunk "+l+" failed.\n("+t+")");r.request=t,delete d[l],f.parentNode.removeChild(f),n(r)},f.href=o,document.getElementsByTagName("head")[0].appendChild(f)}).then(function(){d[l]=0}));var r=s[l];if(0!==r)if(r)e.push(r[2]);else{var t=new Promise(function(e,t){r=s[l]=[e,t]});e.push(r[2]=t);var n,a=document.createElement("script");a.charset="utf-8",a.timeout=120,p.nc&&a.setAttribute("nonce",p.nc),a.src=p.p+"static/js/"+({}[l]||l)+"."+{3:"6c8cba14",4:"979f1a68",5:"02e0619a",6:"052859ef",7:"f31eeda5",8:"d5836c4e",9:"a1092943",10:"5c83ba21",11:"08e1fb47",12:"23ba9a08",13:"65b6154d",14:"864d1282",15:"f17354c0"}[l]+".chunk.js",n=function(e){a.onerror=a.onload=null,clearTimeout(c);var t=s[l];if(0!==t){if(t){var r=e&&("load"===e.type?"missing":e.type),n=e&&e.target&&e.target.src,o=new Error("Loading chunk "+l+" failed.\n("+r+": "+n+")");o.type=r,o.request=n,t[1](o)}s[l]=void 0}};var c=setTimeout(function(){n({type:"timeout",target:a})},12e4);a.onerror=a.onload=n,document.head.appendChild(a)}return Promise.all(e)},p.m=i,p.c=r,p.d=function(e,t,r){p.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},p.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},p.t=function(t,e){if(1&e&&(t=p(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(p.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)p.d(r,n,function(e){return t[e]}.bind(null,n));return r},p.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return p.d(t,"a",t),t},p.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},p.p="/",p.oe=function(e){throw console.error(e),e};var t=window.webpackJsonp=window.webpackJsonp||[],n=t.push.bind(t);t.push=e,t=t.slice();for(var o=0;o<t.length;o++)e(t[o]);var h=n;f()}([])</script><script src="/static/js/2.c241d9e3.chunk.js"></script><script src="/static/js/main.b3b1147d.chunk.js"></script></body></html>