Thanos Polychronakis | Software Engineer, CTO, Founder2023-10-31T10:37:45+00:00http://thanpol.as/Thanos Polychronakisthanpolas@gmail.comPrinciples Of Code Quality2021-10-28T00:00:00+00:00http://thanpol.as/rants/principles-of-code-qualityTooling 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 Logality2020-06-27T00:00:00+00:00http://thanpol.as/nodejs/why-logs-are-important-introducing-logalityIntroducing Logality, a Node.js logger with powerful features and capabilities.Product Operations Pt2: Product Management2018-02-15T00:00:00+00:00http://thanpol.as/product/product-operations-pt2-product-managementIn 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 Spec2018-01-26T00:00:00+00:00http://thanpol.as/product/product-operations-pt1-from-idea-to-specIn 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 Engineers2018-01-23T00:00:00+00:00http://thanpol.as/hiring/hiring-senior-engineersIn 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 Career2018-01-11T00:00:00+00:00http://thanpol.as/hiring/how-to-jumpstart-your-web-development-careerWhen 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!2016-10-19T13:48:00+00:00http://thanpol.as/startups/are-you-a-startup-come-forwardAs 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 Today2014-03-19T00:00:00+00:00http://thanpol.as/webrtc/The-Cost-of-WebRTC-TodayJust about now we can really talk about how much WebRTC is going to cost your business.Grunt with express server and Livereload2014-02-28T00:00:00+00:00http://thanpol.as/grunt/Grunt-with-express-server-and-LivereloadLaunching 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!2014-02-26T00:00:00+00:00http://thanpol.as/nodejs/Mocha-and-Promises-No-ProblemAfter a few itterations a pattern emerged that works for Mocha and Promises, or any test framework for that matter.Managing Large Scale Projects with Grunt2014-02-20T00:00:00+00:00http://thanpol.as/grunt/Managing-large-scale-projects-with-GruntGrunt 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 best2014-02-07T00:00:00+00:00http://thanpol.as/javascript/Introducing-Inher-Inheritance-at-its-bestCip is a robust and compact library for applying natural inheritance to your applications.Writing Modular Javascript REWIND2013-06-12T00:00:00+00:00http://thanpol.as/javascript/writing-modular-javascript-rewindThe 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 Of2013-04-29T00:00:00+00:00http://thanpol.as/javascript/promises-a-performance-hits-you-should-be-aware-ofThe 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 Namespaces2013-03-30T00:00:00+00:00http://thanpol.as/javascript/development-using-namespacesUsing 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 Mantri2013-02-25T00:00:00+00:00http://thanpol.as/javascript/announcing-the-release-of-mantriA 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 It2013-01-31T00:00:00+00:00http://thanpol.as/javascript/why-i-dont-like-amd-and-what-i-will-do-about-itDefining 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 Load2013-01-17T00:00:00+00:00http://thanpol.as/javascript/passing-data-from-server-to-javascript-on-page-loadPassing 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 Flow2012-12-18T00:00:00+00:00http://thanpol.as/jekyll/jekyll-and-livereload-flowWorking 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 Solved2012-12-12T00:00:00+00:00http://thanpol.as/jekyll/jekyll-code-highlight-and-line-numbers-problem-solvedSetting up my new webpage and blog, thanpol.as, using Jekyll proved to be a bit more cumbersome than expected. Specifically with syntax highlighting.You Don't Need the DOM Ready Event2012-12-07T00:00:00+00:00http://thanpol.as/javascript/you-dont-need-dom-readyIt 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...