<?xml version="1.0" encoding="UTF-8" ?>

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
   
      <title>devalias.net</title>
   
   <link>https://www.devalias.net</link>
   <description>Follow me into the rabbit hole that is my mind and learn about topics including.. security, technology, efficiency, biohacking, health, personal growth and probably a whole lot more.</description>
   <language>en_GB</language>
   <managingEditor> </managingEditor>
   <atom:link href="rss" rel="self" type="application/rss+xml" />
   
	<item>
	  <title>GraphQL: Why You Should Care</title>
	  <link>/devalias/2016/09/07/graphql-why-you-should-care/</link>
	  <author>devalias</author>
	  <pubDate>2016-09-07T00:00:00+10:00</pubDate>
	  <guid>/devalias/2016/09/07/graphql-why-you-should-care/</guid>
	  <description><![CDATA[
	     <p>If you haven't yet come across <a href="http://graphql.org/">GraphQL</a>, it's kind of exciting stuff. It's a query language developed by <a href="https://code.facebook.com/posts/">Facebook</a>, that basically lets you request exactly the data you need for the given task; no more, no less. Sounds good right?</p>
<h2>Tell me more..</h2>
<p>If you like to get into the nitty gritty of tech specs, you can head over to the <a href="https://facebook.github.io/graphql/">GraphQL Working Draft</a> (<a href="https://github.com/facebook/graphql">GitHub</a>) to have a deeper read, then play around with the <a href="https://github.com/graphql/graphql-js">reference implementation</a> in JavaScript.</p>
<p>Though if specs aren't really your style, check out '<a href="https://learngraphql.com/">Learn GraphQL</a>' and give their free short course a run through. Should get you up to speed!</p>
<h2>Ok. I'm in!</h2>
<p>Excited? Want to dive into it? Need libraries for your particular tech stack? Head on over to the <a href="https://github.com/chentsulin/awesome-graphql">Awesome GraphQL</a> list. You're bound to find what you need!</p>
<p>For my particular tech palette I was after something <a href="http://scala-lang.org/">Scala'esque</a>, maybe some <a href="http://doc.akka.io/docs/akka/2.4/scala/http/">Akka-HTTP</a> to go with it. Seems I wasn't the only one! <a href="http://sangria-graphql.org/">Sangria</a> (<a href="https://github.com/sangria-graphql/sangria">GitHub</a>) is a Scala GraphQL implementation. They even have <a href="https://github.com/sangria-graphql/sangria-akka-http-example">an Akka-HTTP based example</a>. Perfect! Throw in a little <a href="https://github.com/sangria-graphql/sangria-relay">Relay support</a> and this package is pretty much complete.</p>
<p>If you're looking for an all-in-one stack heading forward, I keep seeing a lot of good things posted by the team at <a href="http://www.apollostack.com/">Apollo Stack</a> (by the <a href="https://www.meteor.com/">Meteor</a> team), so would most definitely recommend keeping an eye on them. They also post a lot of really good articles <a href="https://medium.com/apollo-stack">on their blog</a> too.</p>
<p>For some further reading, make sure to check out:</p>
<ul>
<li><a href="https://medium.com/apollo-stack/tutorial-building-a-graphql-server-cddaa023c035">&quot;Tutorial: How to build a GraphQL server&quot; by Jonas Helfer</a></li>
</ul>
<h2><a name="graphql-relay-redux"></a>GraphQL and Relay.. What about Redux?</h2>
<p>A lot of things you'll read about GraphQL on the net will talk about it quite closely with <a href="https://facebook.github.io/relay/">Relay</a>, and given they were both released by Facebook, and sort of designed to work together, it makes a lot of sense. That said, you most definitely don't need to use Relay to take advantage of the awesomeness GraphQL provides!</p>
<p>KADIRA states it pretty well in <a href="https://kadira.io/blog/graphql/graphql-vs-relay">GraphQL vs Relay</a>:</p>
<blockquote>
<p>GraphQL provides a way to model and expose data in your app. You can use it on top of any kind of data source and use it with any kind of transport layer.</p>
</blockquote>
<blockquote>
<p>Relay is an efficient client-side data-fetching technology built for React. It talks to a GraphQL Schema to get data. Relay also has a server-side part that adds some features on top of GraphQL.</p>
</blockquote>
<p>There is a bunch of talk about how Relay is currently a pain to use, but Facebook seems to be <a href="https://facebook.github.io/react/blog/2016/08/05/relay-state-of-the-state.html">well aware of this issue</a> and has future plans to make it much nicer to work with.</p>
<p>I think it's definitely worth keeping an eye on Relay in the future, but if you're not quite ready to jump in, you can always take advantage of the benefits of GraphQL while sticking to something like <a href="http://redux.js.org/">Redux</a> (<a href="https://github.com/reactjs/redux">GitHub</a>). For further reading:</p>
<ul>
<li><a href="https://www.reindex.io/blog/redux-and-relay/">&quot;Comparing Redux and Relay&quot; by Mikhail Novikov</a></li>
<li><a href="https://medium.com/@matt.krick/replacing-relay-with-redux-2990c81aa807">&quot;Replacing Relay with Redux&quot; by Matt Krick</a></li>
<li><a href="https://medium.com/@thisbejim/getting-started-with-redux-and-graphql-8384b3b25c56">&quot;Getting started with Redux and GraphQL&quot; by James Childs-Maidment</a></li>
<li><a href="http://www.apollostack.com/">Apollo Stack</a></li>
<li><a href="https://github.com/mattkrick/cashay">Cashay</a>: &quot;Relay for the rest of us&quot;</li>
<li><a href="https://github.com/gyzerok/adrenaline">Adrenaline</a>: &quot;Simple Relay alternative&quot;</li>
<li><a href="https://github.com/kennetpostigo/react-reach">React-Reach</a>: &quot;A small library for React to communicate with GraphQL&quot;</li>
</ul>
<h2>GraphQL vs Falcor</h2>
<p>So by now we should have a fairly good idea about what <a href="http://graphql.org/">GraphQL</a> is. So what's <a href="http://netflix.github.io/falcor/">Falcor</a>? This one comes from our friends over at <a href="http://techblog.netflix.com/">Netflix</a>. In essence, it turns all of your data sources into one giant JSON graph. Regardless of whether you're loading data remotely, have it cached locally, etc; you'll access it in the same way.</p>
<p>If you want to read deeper, I found these to be quite useful:</p>
<ul>
<li><a href="https://stackoverflow.com/questions/32057785/what-is-the-difference-between-falcor-and-graphql">&quot;What is the difference between Falcor and GraphQL?&quot; on StackOverflow</a></li>
<li><a href="https://medium.com/apollo-stack/graphql-vs-falcor-4f1e9cbf7504">&quot;GraphQL vs. Falcor&quot; by Jonas Helfer</a></li>
<li><a href="http://react-etc.net/entry/beyond-rest-graphql-vs-falcor">&quot;Beyond REST: GraphQL vs. Falcor&quot; by React-Etc</a></li>
</ul>
<p>The consensus that I came to is that it seems to be on par with GraphQL in a number of ways, but is probably a bit easier to implement and a bit less powerful overall. Apparently you could even go so far as to <a href="http://hueypetersen.com/posts/2015/10/26/querying-graphql-with-falcor/">query GraphQL with Falcor</a>, but not the other way. For my purposes, I think I'll be sticking with GraphQL.</p>
<p>It's also worth noting that Facebook has been using various flavours of GraphQL for a few years now, whereas Netflix is yet to (or has only recently) started using Falcor in production.</p>
<h2>API's: REST, HATEOS, Observables.. GraphQL!</h2>
<p>I have read SO many articles over the years about the 'proper' way to design API's, and why styleX is so much better than styleY. With so much info out there, and so much conflicting advice (even within each supposed style), it's really easy to get stuck in analysis paralysis.</p>
<p>Greg Ziegan put together a <a href="https://medium.com/@gregoryziegan/how-graphql-taught-me-to-code-client-apps-1c631a9953bd">nice little article</a> talking about his progression along this path: from REST, through <a href="http://timelessrepo.com/haters-gonna-hateoas">HATEOS</a>, observables, etc; and how he ended up at GraphQL. Following on from this, Sashko Stubailo makes a pretty good argument about why GraphQL is <a href="https://medium.com/apollo-stack/graphql-the-next-generation-of-api-design-f24b1689756a">&quot;the next generation of API design&quot;</a>.</p>
<p>While the benefits of a GraphQL-based API seem pretty obvious to me, it's not always feasible to jump straight into shiny new tech. Maybe you need to support legacy services, interact with 3rd-party API's, or allow other developers to consume your API without them having to learn the ins and outs of GraphQL. But thankfully, we don't need to pick one over the other!</p>
<p>The GraphQL team have a pretty good article on their blog about <a href="http://graphql.org/blog/rest-api-graphql-wrapper/">wrapping REST API's in GraphQL</a>, starting purely with the client-side, and later moving it to the backend. This idea plays in SO well with some little side-projects I've been thinking about over the years, and how it could be used to help decompose and combine existing API's.</p>
<h2>Conclusion</h2>
<p>This is a scattering of the articles and things I have read through while learning more about GraphQL, and why it is so awesome. I definitely know it's a technology that I am super excited to start utilising in my future projects.</p>
<p>Have you come across any other awesome articles/tools related to GraphQL or similar? I'd love to hear about them! Let me know in the comments below.</p>

	  ]]></description>
	</item>

	<item>
	  <title>Starting a New Web Application (Part 1): An Exploration of Options</title>
	  <link>/devalias/2016/08/24/starting-a-new-web-application-1-an-exploration-of-options/</link>
	  <author>devalias</author>
	  <pubDate>2016-08-24T00:00:00+10:00</pubDate>
	  <guid>/devalias/2016/08/24/starting-a-new-web-application-1-an-exploration-of-options/</guid>
	  <description><![CDATA[
	     <p>Finding myself with some free time (and looking into starting a new project), I thought I might catch myself up on the state of web technologies, and what might be a good stack to work with.</p>
<p>The details collected here are most certainly not a complete layout of the entire landscape, and there will no doubt be leanings toward my personal tastes (<a href="http://www.reactivemanifesto.org/">reactive</a>, api-driven, etc). You should use this more as a starter into your own deeper research than as a source of ultimate truth. With that out of the way, let's get into it!</p>
<p><strong>Quicklinks</strong></p>
<ul>
<li><a href="#frontend">Frontend</a>
<ul>
<li><a href="#frontend-frameworks">Frameworks</a></li>
<li><a href="#frontend-ui">UI</a></li>
<li><a href="#frontend-scripting">Scripting</a></li>
</ul>
</li>
<li><a href="#backend">Backend</a></li>
<li><a href="#tooling">Tooling</a></li>
<li><a href="#conclusions">Conclusions</a></li>
<li><a href="#updates">Updates</a></li>
</ul>
<h2><a name="frontend"></a>Frontend</h2>
<p>The frontend is the pretty, interactive, main part that people will be seeing. You can have the most amazingly streamlined and perfect backend code, but noone's going to notice and love it without a strong frontend to back it up.</p>
<p><strong><a name="frontend-frameworks"></a>Frameworks</strong></p>
<p>The days of raw JavaScript and jQuery selectors is long gone. We're looking for a nice, modern framework to help put together our frontend. Here's a little selection of some of our options:</p>
<ul>
<li><a href="https://facebook.github.io/react/">React</a> (<a href="https://github.com/reactjs">GitHub</a>) (most likely with a flavour of <a href="https://facebook.github.io/flux/">Flux</a> (<a href="https://github.com/facebook/flux">GitHub</a>))
<ul>
<li>A frontend framework from Facebook that is taking the web by storm. Probably my personal favourite from what I've seen so far.</li>
<li>It even let's you <a href="https://facebook.github.io/react-native/">build for native devices</a>!</li>
</ul>
</li>
<li><a href="https://angular.io/">Angular (v2)</a> (or if you like outdated for some reason <a href="https://angularjs.org/">AngularJS (v1)</a>)
<ul>
<li>Also <a href="https://mobile.angular.io/">available for native devices</a></li>
<li>I was a big fan of AngularJS (v1), and I want to like v2, but I don't think it will be my main choice.</li>
</ul>
</li>
<li>There are a TON of other frontend frameworks, of varying popularity and support. I won't delve into them much, but there's heaps of info out there
<ul>
<li><a href="http://emberjs.com/">Ember</a></li>
<li><a href="https://vuejs.org/">Vue.js</a>
<ul>
<li>From reading around the web, there's a decent amount of good stuff talking about Vue. In the end I decided against it since it's not supported by a big backer, and the skills aren't as useful on a resume. That said, for a personal project it could be a great fit!</li>
<li><a href="https://vuejs.org/guide/comparison.html">https://vuejs.org/guide/comparison.html</a></li>
<li><a href="http://blog.evanyou.me/2015/10/25/vuejs-re-introduction/">http://blog.evanyou.me/2015/10/25/vuejs-re-introduction/</a></li>
<li><a href="http://vuejs.org/2016/04/27/announcing-2.0/">http://vuejs.org/2016/04/27/announcing-2.0/</a></li>
<li><a href="https://github.com/vuejs/vue">vue</a>, <a href="https://github.com/vuejs/vue-rx">vue-rx</a>, <a href="https://github.com/vuejs/vue-resource">vue-resource</a>, <a href="https://github.com/vuejs/vue-router">vue-router</a>, <a href="https://github.com/vuejs/vuex">vuex</a>, <a href="https://github.com/revue/revue">revuew</a></li>
</ul>
</li>
<li><a href="http://aurelia.io/">Aurelia</a></li>
<li><a href="http://riotjs.com/">Riot</a> (<a href="https://muut.com/blog/technology/riot-2.0/">v2</a>)</li>
</ul>
</li>
</ul>
<p>As with most things, every man and his dog has their own opinion, so here are a few comparisons I found useful:</p>
<ul>
<li><a href="https://www.ociweb.com/resources/publications/sett/comparison-of-angular-2-and-react/">&quot;Comparison of Angular 2 and React&quot; by Mark Volkmann and Lance Finney</a></li>
<li><a href="http://blog.backand.com/angular-2-vs-react/">&quot;Angular 2 vs. React&quot; by Itay Herskovits</a></li>
<li><a href="https://medium.freecodecamp.com/angular-2-versus-react-there-will-be-blood-66595faafd51">&quot;Angular 2 versus React: There Will Be Blood&quot; by Cory House</a></li>
<li><a href="https://rlafranchi.github.io/2016/05/03/vue-vs-react/">&quot;Vue.js vs React.js&quot; by Richard LaFranchi</a></li>
<li><a href="https://forums.meteor.com/t/why-doesnt-mdg-just-adopt-vue-js-and-forget-about-react-vs-blaze/13926/6">&quot;Why doesn’t MDG just adopt Vue.js and forget about React vs Blaze?&quot;</a></li>
</ul>
<p><strong><a name="frontend-ui"></a>UI</strong></p>
<p>Even if you like to go oldschool and code your site by hand in notepad/vi, you can't deny the ease/benefits of using a frontend UI framework.</p>
<ul>
<li><a href="https://getbootstrap.com/">Bootstrap</a> (<a href="https://blog.getbootstrap.com/2015/08/19/bootstrap-4-alpha/">v4</a>)
<ul>
<li>Released by Twitter, and arguably one of the most used frontend UI frameworks out there.</li>
<li><a href="https://react-bootstrap.github.io/">React-Bootstrap</a> (<a href="https://github.com/react-bootstrap/react-bootstrap">GitHub</a>)</li>
<li><a href="https://ng-bootstrap.github.io/#/home">ng-bootstrap</a> by the angular-ui team (<a href="https://github.com/ng-bootstrap/ng-bootstrap">GitHub</a>)</li>
<li><a href="https://valor-software.com/ng2-bootstrap/">ng2-bootstrap</a> by valor-software (<a href="https://github.com/valor-software/ng2-bootstrap">GitHub</a>)</li>
</ul>
</li>
<li><a href="http://foundation.zurb.com/">Foundation</a>
<ul>
<li>While not as well known as the other two mentioned here, those that make use of foundation swear by it.</li>
<li><a href="https://react.foundation/">React-Foundation</a> (<a href="https://github.com/nordsoftware/react-foundation">GitHub</a>)</li>
<li><a href="https://aruberto.github.io/react-foundation-components/">React-Foundation-Components</a></li>
</ul>
</li>
<li><a href="https://material.google.com/">Material Design</a>
<ul>
<li>Following a set of design principals from Google, this lays out a slick, consistent look and feel.</li>
<li><a href="https://getmdl.io/">Material Design Lite</a></li>
<li><a href="http://www.material-ui.com/">For React</a> (<a href="https://github.com/callemall/material-ui">GitHub</a>)</li>
<li><a href="https://material.angular.io/">For Angular (v2)</a> (<a href="https://github.com/angular/material2">GitHub</a>)</li>
<li><a href="https://material.angularjs.io/">For AngularJS (v1)</a> (<a href="https://github.com/angular/material">GitHub</a>)</li>
</ul>
</li>
</ul>
<p>Can't decide? Try some comparisons:</p>
<ul>
<li><a href="http://blog.teamtreehouse.com/the-rundown-bootstrap-vs-google-mdl-vs-foundation">&quot;The Rundown: Bootstrap vs. Google MDL vs. Foundation&quot; by treehouse</a></li>
<li><a href="https://dannyherran.com/2016/03/state-of-affairs-bootstrap-4-vs-foundation-6/">&quot;State of affairs: Bootstrap 4 vs Foundation 6.2&quot; by Danny Herran</a></li>
</ul>
<p><strong><a name="frontend-scripting"></a>Scripting</strong></p>
<p>Modern web apps live by the functionality they enable in the browser, and to do this, we need a JS-esque language. Your chosen frontend framework may sway your choice (eg. Angular (v2) has a strong preference for TypeScript), but ultimately, it's up to what you/your team feel comfortable with. With <a href="https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js">so many options</a> out there, it's hard to pick.. And of course, you could always stick to plain JavaScript.. and with the new features coming in <a href="http://es6-features.org/">ES6</a> (eg. <a href="http://www.html5rocks.com/en/tutorials/es6/promises/">promises</a>) and beyond, it might be a good choice.</p>
<ul>
<li><a href="https://babeljs.io/">Babel</a>
<ul>
<li>A transpiler that lets you play with all the fun features of JavaScript ES6 and beyond, while maintaining compatibility with all of the older browsers.</li>
</ul>
</li>
<li><a href="https://www.typescriptlang.org/">TypeScript</a> (<a href="https://github.com/Microsoft/TypeScript">GitHub</a>)
<ul>
<li>&quot;TypeScript is a typed superset of JavaScript that compiles to plain JavaScript&quot;</li>
<li>If you're using Angular (v2) and like sticking to convention, this is the one for you.</li>
</ul>
</li>
<li><a href="http://coffeescript.org/">CoffeeScript</a> (or maybe <a href="https://github.com/michaelficarra/CoffeeScriptRedux">v2</a>)
<ul>
<li>This used to be my choice, but looking at the other options available now, I think i'll be moving on.</li>
<li>As always, there are a bunch of arguments for and against..
<ul>
<li><a href="https://robots.thoughtbot.com/replace-coffeescript-with-es6">&quot;Replace CoffeeScript with ES6&quot; by Blake Williams</a></li>
<li><a href="http://tech.noredink.com/post/111583727108/dont-replace-coffeescript-with-es6-transpilers">&quot;Don’t Replace CoffeeScript with ES6 Transpilers&quot; by Richard Feldman</a></li>
<li>etc</li>
</ul>
</li>
<li>If you're looking for a way out, why not <a href="https://github.com/decaffeinate/decaffeinate">decaffeinate</a>?</li>
</ul>
</li>
<li><a href="https://flowtype.org/">Flow</a> (<a href="https://github.com/facebook/flow">GitHub</a>)
<ul>
<li>While it's not a language unto itself, it does allow you the benefits of typed JavaScript without having to dive into something like TypeScript.</li>
</ul>
</li>
<li><a href="https://www.scala-js.org/">Scala.js</a>
<ul>
<li>A little left field, this transpiles Scala code into JavaScript. While I probably wouldn't see myself using this as a main choice, it could make for some interesting reusability between front and backend.</li>
</ul>
</li>
</ul>
<h2><a name="backend"></a>Backend</h2>
<p>My preferences for backend tech stacks lean heavily towards <a href="http://www.scala-lang.org/">Scala</a> and the <a href="https://www.lightbend.com/platform">Lightbend Reactive Platform</a> these days, but I will make quick mention of some of the other options available.</p>
<ul>
<li><a href="http://doc.akka.io/docs/akka-http/current/scala.html">Akka-HTTP</a>
<ul>
<li>Taking the power of asynchronous, message based actors, and applying them to HTTP. Definite win.</li>
<li><a href="https://softwaremill.github.io/bootzooka/">Bootzooka</a> (<a href="https://github.com/softwaremill/bootzooka">GitHub</a>)
<ul>
<li>&quot;Bootzooka is a simple application scaffolding project to allow quick start of development for modern, web based applications.&quot;</li>
<li>While not perfect, it's a decent implementation of a starter app, tying together some useful technologies.</li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.playframework.com/">Play Framework</a>
<ul>
<li>&quot;Play is a high-productivity Java and Scala web application framework that integrates the components and APIs you need for modern web application development.&quot;</li>
</ul>
</li>
<li><a href="http://scalatra.org/">Scalatra</a>
<ul>
<li>&quot;Scalatra is a simple, accessible and free web micro-framework. It combines the power of the JVM with the beauty and brevity of Scala, helping you quickly build high-performance web sites and APIs.&quot;</li>
</ul>
</li>
<li><a href="https://liftweb.net/">Lift</a> (<a href="https://github.com/lift/framework">GitHub</a>)
<ul>
<li>&quot;Lift is the most powerful, most secure web framework available today. There are Seven Things that distinguish Lift from other web frameworks.&quot;</li>
</ul>
</li>
<li><a href="http://http4s.org/">http4s</a> (<a href="https://github.com/http4s/http4s">GitHub</a>)
<ul>
<li>&quot;A typeful, purely functional, streaming library for HTTP clients and servers in Scala.&quot;</li>
</ul>
</li>
<li><a href="https://twitter.github.io/finatra/">Finatra</a>
<ul>
<li>&quot;Fast, testable, Scala services built on TwitterServer and Finagle.&quot;</li>
</ul>
</li>
<li><a href="https://github.com/airbnb/hypernova">Hypernova</a>
<ul>
<li>&quot;A service for server-side rendering your JavaScript views&quot;</li>
<li>While not a choice unto itself, this should help speed things up and keep your site nice and search engine friendly.</li>
</ul>
</li>
<li>There will be a number of opinions spread throughout the net, including:
<ul>
<li><a href="https://scala.libhunt.com/categories/585-web-frameworks">https://scala.libhunt.com/categories/585-web-frameworks</a></li>
<li><a href="https://www.reddit.com/r/scala/comments/3kaael/which_framework_to_use_for_development_of_a_rest/">https://www.reddit.com/r/scala/comments/3kaael/which_framework_to_use_for_development_of_a_rest/</a></li>
<li><a href="https://www.quora.com/Is-Play-the-best-web-framework-written-in-Scala">https://www.quora.com/Is-Play-the-best-web-framework-written-in-Scala</a></li>
</ul>
</li>
<li>You also have all of your other typical options
<ul>
<li><a href="https://www.ruby-lang.org/en/">Ruby</a>
<ul>
<li><a href="http://rubyonrails.org/">Ruby on Rails</a></li>
<li><a href="http://www.sinatrarb.com/">Sinatra</a></li>
</ul>
</li>
<li><a href="https://nodejs.org/en/">Node</a>
<ul>
<li><a href="http://expressjs.com/">Express</a>: &quot;Fast, unopinionated, minimalist web framework for Node.js&quot;</li>
<li><a href="https://www.meteor.com/">Meteor</a>: &quot;Meteor is an open source platform for web, mobile, and desktop.&quot;</li>
<li><a href="http://noeticforce.com/best-nodejs-frameworks-for-web-and-app-development">&quot;Node.js Frameworks: The 10 Best for Web and Apps Development&quot; by noeticsunil</a><br />
mobile, and desktop.&quot;</li>
</ul>
</li>
<li><a href="https://www.python.org/">Python</a>
<ul>
<li><a href="https://www.djangoproject.com/">Django</a></li>
<li><a href="https://wiki.python.org/moin/WebFrameworks">Web Frameworks for Python</a></li>
</ul>
</li>
<li><a href="https://secure.php.net/">PHP</a>
<ul>
<li><a href="https://octobercms.com/">October</a>: &quot;October is a free, open-source, self-hosted CMS platform based on the Laravel PHP Framework. A simple and modular CMS that grows with you, with a precise and beautiful interface that comes as second nature.&quot;</li>
<li><a href="https://laravel.com/">Laravel</a></li>
</ul>
</li>
<li>etc</li>
</ul>
</li>
</ul>
<h2><a name="tooling"></a>Tooling</h2>
<p>With the crazy mix of technologies and steps involved in modern web app development, it makes a ton of sense to tie it all together with some automation.</p>
<ul>
<li><a href="https://webpack.github.io/">Webpack</a> (<a href="https://github.com/webpack/webpack">GitHub</a>)
<ul>
<li>&quot;Webpack is a bundler for modules. The main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.&quot;</li>
<li><a href="http://blog.andrewray.me/webpack-when-to-use-and-why/">&quot;Webpack: When To Use And Why&quot; by Andrew Ray</a></li>
<li><a href="https://github.com/webpack/less-loader">https://github.com/webpack/less-loader</a></li>
<li><a href="https://github.com/shakacode/bootstrap-loader">https://github.com/shakacode/bootstrap-loader</a></li>
</ul>
</li>
<li><a href="http://gulpjs.com/">Gulp</a> (<a href="https://github.com/gulpjs/gulp">GitHub</a>
<ul>
<li>Gulp is a streaming javascript task runner that lets you automate tasks.</li>
</ul>
</li>
<li><a href="http://gruntjs.com/">Grunt</a> (<a href="https://github.com/gruntjs/">GitHub</a>)
<ul>
<li>Grunt is basically the older, less streaming, less awesome version of Gulp.</li>
</ul>
</li>
</ul>
<p>While a little different in purpose to the things mentioned above, getting everything nicely tested and deployed is always good:</p>
<ul>
<li><a href="https://bitbucket.org/product/features/pipelines">Bitbucket Pipelines</a>: &quot;Build, test and deploy from Bitbucket&quot;</li>
</ul>
<h2><a name="conclusions"></a>Conclusions</h2>
<p>Hopefully this has given you a decent starting point for figuring out what combination of technologies is going to work best for your next project. If you want to see the direction I've decided to go, make sure you read on in <a href="#TODO">Part 2</a>.</p>
<p>Have I missed something important? Not given love to your favourite stack? Got a cool pointer? Or just want to say hi? Let me know in the comments!</p>
<h2><a name="updates"></a>Updates</h2>
<ul>
<li>2017-04-11 Added some more backend web frameworks, updated akka-http link, fixed some formatting</li>
</ul>

	  ]]></description>
	</item>

	<item>
	  <title>Dogedraw, now with more Nyaan!</title>
	  <link>/devalias/2015/04/20/dogedraw-now-with-more-nyaan/</link>
	  <author>devalias</author>
	  <pubDate>2015-04-20T12:00:00+10:00</pubDate>
	  <guid>/devalias/2015/04/20/dogedraw-now-with-more-nyaan/</guid>
	  <description><![CDATA[
	     <p>Over the last few days I've been mentoring web dev at <a href="http://hact.io/">HS.HACT.IO</a>, inspiring a group of younger kids to get into tech as creators. One of the other mentors showed us a site he previously put together, <a href="http://dogedraw.com/">DogeDraw</a>. After playing around with it for a little, I decided it was a little too manual, so started hacking away in the JS console to make it more fun.</p>
<p>A little while (and far too long typing out pixel art as code) later, and we have nyaan hacks! You can clear a section of the screen with a solid block of colour, or better yet, stamp out some pixel art nyaan cat across the page!</p>
<p><a href="https://gist.github.com/0xdevalias/e8bb28726a37854606ad">https://gist.github.com/0xdevalias/e8bb28726a37854606ad</a></p>
<p><noscript><pre># Dogedraw, now with more Nyaan!</p>
<p>Paste these functions into the js console on <a href="https://dogedraw.firebaseapp.com">https://dogedraw.firebaseapp.com</a> and run them to nyaan nyaan nyaan..</p>
<p>Developed at <a href="http://hs.hact.io">http://hs.hact.io</a> 2015!!</p>
<pre><code>function clearScreen(w, h, color) {
  var pixelDataRef = new Firebase(&amp;#39;https://dogedraw.firebaseio.com/pixels&amp;#39;);
  for (var i = 0; i &amp;lt; h; i++) {
    for (var j = 0; j &amp;lt; w; j++) {
      pixelDataRef.child(j + &amp;quot;:&amp;quot; + i).set(color);
    }
  }
}
    
function nyaan(startX, startY) {
  function rpt(value, times) {
    var arr = [];
    for (rpti = 0; rpti &amp;lt; times; rpti++) {
      arr[rpti] = value;
    }
    return arr;
  }

  function cc(arr) {
    var joined = [];
    for (cci = 0; cci &amp;lt; arr.length; cci++) {
      joined = joined.concat(arr[cci]);
    }
    return joined;
  }

  var nyaanHax = new Firebase(&amp;#39;https://dogedraw.firebaseio.com/pixels&amp;#39;);

  var w = &amp;quot;fff&amp;quot; // white
  var bl = &amp;quot;00f&amp;quot; // blue
  var k = &amp;quot;000&amp;quot; // black
  var r = &amp;quot;f00&amp;quot; // red
  var gy = &amp;quot;333&amp;quot; // grey
  var gr = &amp;quot;0f0&amp;quot; // green
  var y1 = &amp;quot;FFFFE0&amp;quot; // pale yellow
  var y2 = &amp;quot;FFFF00&amp;quot; // yellow
  var o = &amp;quot;FF4500&amp;quot; // orange
  var p1 = &amp;quot;FFC0CB&amp;quot; // pink
  var p2 = &amp;quot;9370DB&amp;quot; //purple
  var p3 = &amp;quot;800080&amp;quot; // dark purple

  var nyaan = []
  nyaan[0] = rpt(w, 38)
  nyaan[1] = cc([rpt(w, 3), rpt(r, 6), rpt(w, 7), rpt(k, 14), rpt(w, 8)])
  nyaan[2] = cc([[w], rpt(r, 14), [k], rpt(y1, 14), [k], rpt(w, 7)])
  nyaan[3] = cc([[w], rpt(r, 3), rpt(o, 5), rpt(r, 5), [k, y1, y1], rpt(p1, 4), [p2, p1, p1, p2], rpt(p1, 3), rpt(y1, 3), [k], rpt(w, 6)])
  nyaan[4] = cc([[w], rpt(o, 13), [k, y1], rpt(p1, 2), [p2], rpt(p1, 4), [k, k], rpt(p1, 5), [y1, k, w, k, k], rpt(w, 3)])
  nyaan[5] = cc([[w], rpt(o, 3), rpt(y2, 4), rpt(k, 4), rpt(o, 2), [k, y1], rpt(p1, 6), [k, gy, gy, k], [p1, p1, p2, p1, y1, k, k, gy, gy, k], rpt(w, 2)])
  nyaan[6] = cc([[w], rpt(y2, 6), [k, gy, gy, gy], rpt(k, 4), [y1], rpt(p1, 6), [k, gy, gy, gy, k], rpt(p1, 3), [y1, k, gy, gy, gy, k], rpt(w, 2)])
  nyaan[7] = cc([[w], rpt(y2, 3), rpt(gr, 3), [k, k], rpt(gy, 5), [k, y1], rpt(p1, 3), [p2], rpt(p1, 2), [k], rpt(gy, 4), rpt(k, 4), rpt(gy, 4), [k], rpt(w, 2)])
  nyaan[8] = cc([[w], rpt(gr, 8), rpt(k, 4), [gy, k, y1], rpt(p1, 6), [k], rpt(gy, 12), [k], rpt(w, 2)])
  nyaan[9] = cc([[w], rpt(gr, 3), rpt(bl, 8), rpt(k, 3), [y1], rpt(p1, 4), [p2, k], rpt(gy, 3), [w, k], rpt(gy, 5), [w, k, gy, gy, k, w]])
  nyaan[10] = cc([[w], rpt(bl, 13), [k, y1, p1, p2], rpt(p1, 3), [k], rpt(gy, 3), [k, k], rpt(gy, 3), [k, gy, k, k, gy, gy, k, w]])
  nyaan[11] = cc([[w], rpt(bl, 3), rpt(p3, 5), rpt(bl, 5), [k, y1], rpt(p1, 3), [p2, p1, k, gy, p1 ,p1], rpt(gy, 9), [p1, p1, k, w]])
  nyaan[12] = cc([[w], rpt(p3, 12), [k, k, y1, y1, p1, p2, p1, p1, k, gy, p1, p1, gy, k, gy, gy, k, gy, gy, k, gy, p1, p1, k, w]])
  nyaan[13] = cc([[w], rpt(p3, 3), rpt(w, 5), rpt(p3, 2), rpt(k, 4), rpt(y1, 3), rpt(p1, 4), [k], rpt(gy, 3), rpt(k, 7), rpt(gy, 2), [k, w, w]])
  nyaan[14] = cc([rpt(w, 10), [k, gy, gy, gy, k, k], rpt(y1, 7), [k], rpt(gy, 10), [k], rpt(w, 3)])
  nyaan[15] = cc([rpt(w, 10), [k, gy, gy, k, w], rpt(k, 19), rpt(w, 4)])
  nyaan[16] = cc([rpt(w, 10), rpt(k, 3), rpt(w, 3), [k, gy, gy, k, w, w, w, k, gy, gy, k, w, k, gy, gy, k], rpt(w, 6)])
  nyaan[17] = cc([rpt(w, 17), rpt(k, 3), rpt(w, 4), rpt(k, 3), rpt(w, 2), rpt(k, 3), rpt(w, 6)])
  nyaan[18] = rpt(w, 38)

  for (var i = 0; i &amp;lt; nyaan.length; i++) {
    for (var j = 0; j &amp;lt; nyaan[i].length; j++) {
      nyaanHax.child(parseInt(startX+j) + &amp;quot;:&amp;quot; + parseInt(startY+i)).set(nyaan[i][j]);
    }
  }

  return &amp;quot;I drew a cat!&amp;quot;
}
```&lt;/pre&gt;&lt;/noscript&gt;&lt;script src=&quot;https://gist.github.com/e8bb28726a37854606ad.js&quot;&gt; &lt;/script&gt;
</code></pre>

	  ]]></description>
	</item>


</channel>
</rss>
