thanpolas // web development as it happens

  • Principles Of Code Quality

    Tooling evolves, styling changes, languages come and go — but one thing remains constant: the pursuit of quality code and engineering excellence.
  • Why Logs are Important, Introducing Logality

    Introducing Logality, a Node.js logger with powerful features and capabilities.
  • Product Operations Pt2: Product Management

    In this, second part, of a 2 part series, blog post we will dive into how to manage our day to day product and engineering operations, is essence breaking down what Product Management is.
  • Product Operations Pt1: From Idea To Spec

    In this article, we will dive into the workflows from idea conception to technical spec. In Part 2 we will discuss how a tech-spec gets implemented into an actual, tangible product.
  • Hiring Senior Engineers

    In this article we will dive into the hiring operations of a startup end to end and how to fine-tune it for senior engineers. Each section of the hiring workflow deserves its own article to properly analyze it in depth, so I will try to be as detailed as possible without making this post too long. The process is also remote-friendly as all operations of a contemporary startup should be in my humble opinion.
  • How To Jumpstart your Web Development Career

    When you are entering the Web Development industry you are flooded with choices and information, in this blog post I will try to create a checklist that both new and existing professionals in our industry can check against and be sure they are on the right path to finding a job.
  • Are you a Startup? Come Forward!

    As a Startup you can have a great impact on your local community and likewise you have a lot to benefit from it, in this article I explain why it is important for you as a Startup to come forward and be a part of your local community.
  • The cost of WebRTC Today

    Just about now we can really talk about how much WebRTC is going to cost your business.
  • Grunt with express server and Livereload

    Launching a NodeJS webserver using express from Grunt has been an elusive topic for some time. Adding LiveReload to the mix is even more tedious. After many iterations and setups i've resorted to a Gruntfile that will work for everyone, launch the Express Webserver with Livereload using Grunt or launch it the from command line.
  • Mocha and Promises No Problem!

    After a few itterations a pattern emerged that works for Mocha and Promises, or any test framework for that matter.
  • Managing Large Scale Projects with Grunt

    Grunt offers infinite ways to get extended and configured, easily tackling the most demanding build flows out there. In this article a sensible setup for complex build flows will be presented, it will demonstrate how you can scale Grunt to use in large and distributed teams and perform complex and optimized builds.
  • Introducing cip Classical Inheritance Pattern at its best

    Cip is a robust and compact library for applying natural inheritance to your applications.
  • Writing Modular Javascript REWIND

    The Module term in Javascript, has been overstretched to the point where it's ambiguous. The primary reason for that is because of Module Definition Patterns and the torrent of 'Write Modular Javascript using AMD' blog posts. Let's put that claims aside for a moment and revisit the definition of what is a Module and what is a Modular Application or Library, in javascript, for the first time.
  • Promises/A+ Performance Hits You Should Be Aware Of

    The Promises/A+ specification is a fresh and very interesting way of dealing with the asynchronous nature of Javascript. It also provides a sensible way to deal with error handling and exceptions. In this article we will go through the performance hits you should be aware of and as a side-effect do a comparison between the two most popular Promises/A+ implementations, When and Q and how they compare to Async, the lowest abstraction you can get on asynchronicity.
  • Development Using Namespaces

    Using global Namespaces for web development is a long forgotten practice, banished, cursed and buried deep under tons of senseless hype. In this post I will try to provide an overview of the pros and cons in using Global Namespaces. How the development workflow compares to the Module Definition Patterns and debunk a few myths and notions that exist about this matter.
  • Announcing The Release of Mantri

    A new solution for Javascript dependency management is now ready. Announcing the release of Mantri, a traditionaλ dependency system.
  • Why I Don't Like AMD And What I Will Do About It

    Defining the dependencies of your files is more than a requirement for a large scale project. There simply is no other way you can accomplish maintainability and collaboration between teams. However i beg to differ from calling everything a module and certainly i am not fond of AMD and its' derivatives.
  • Passing Data From Server To Javascript On Page Load

    Passing arbitrary data from the server to the client on page load is an essential function of modern, rich client-side applications. Over my course in various projects I've seen all kinds of setups and use cases, here is the gist of my experience.
  • Jekyll And LiveReload Flow

    Working on a Jekyll site with LiveReload can be quite a sad experience. Especially when there are more pre-processors up the asset pipe, It can take several seconds and multiple page refreshes before the changes are available. Here's how I smoothed the flow using Grunt.
  • Jekyll Code Highlight And Line Numbers Problem Solved

    Setting up my new webpage and blog,, using Jekyll proved to be a bit more cumbersome than expected. Specifically with syntax highlighting.
  • You Don't Need the DOM Ready Event

    It usually takes a long time for the `DOM ready` event to fire. During this time, many parts of a webpage are inactive as they wait for Javascript to kick in and initialize them. This delay is significant and makes a rich web application become available slower. Creates a bad user experience, doesn't adhere to any design pattern and is, really, not needed...