All Posts & Books

JavaScript: The Good Parts

JavaScript has good parts and bad parts. By focusing on the good parts, you can avoid serious architectural issues and write more maintainable code.

Extreme Ownership

Owning your situation, in life and work, allows you to determine your future rather than let circumstances determine it. Leadership is simple but not easy given the numerous dichotomies in leadership. Effectively communicating not only the what but also the why is important so that even the lowest level understands the greater picture to a degree. Through constant dedication, discipline, and continous improvement, individuals and teams can attain the ultimate freedom: intrinsic self-discipline.

Crucial Conversations

How you handle conversations has a huge impact on your relationships. Ensuring safety in conversations is essential to allow for the real issues to be discussed. If there's a safe environment you can talk about anything.

How to Check PHP Version Compatibility

Phan Static Analyzer When trying to determine what needs to be updated in a project to make it PHP 7.* compatible, it is nice to use a commandline program to assist. I straight away tried to use phan static analyzer since I had used it on other projects to check the quality of code but it was impossibly slow, when using it for a codebase plus vendor libs, even when target_php_version was the only analyzer turned on when running phan .

Clean Architecture

Uncle Bob outlines what he has learned over the years when it comes to architecture on a systems and project level. The goal of architecture is to reduce the long-term cost of a project by delaying decisions and maintaining as much flexibility as possible. A special team does not accomplish this goal but architects who are the best programmers. Through the pragmatic application of principles and architectural methods, one can make a project easier and more cost effective.

The Coaching Habit

By asking your peers and or subordinates the right questions and listening you gain greater insight and they learn more than if you just talked for the duration or engaged in random social chit chat. The words that you use to formulate questions makes a big difference as does the sequence in which you ask particular questions. Realize that you do not have to answer _"yes"_ to questions and that it is your job to get buyin and more than tacit agreement for anything that you ask of someone - that way you know that you're on the same page.

Lead Yourself First

Solitude allows leaders and followers alike to find peace amid great turmoil and strife. It is the way that leaders are created through careful introspection and reflection. It balances one's emotions, allows for analytical and intuitive clarity, allows for the greatest creativity, and allows one to reconnect and stand firm with their core principles.

Serverless Express API Boilerplate

About nine months ago, we started development on a Node.js Serverless application hosted (if that is the proper term for serverless) on AWS Lambda. I started laying the architecture by writing code directly in the Lambda console, then I progressed to uploading zip files of the code, and then, finally, I found the Serverless framework. Before Serverless, I would manually (or via a script) create API endpoints in AWS API Gateway and then hook them up to the appropriate Lambda function.

Deploying Multiple Sites Using Docker and Elastic Beanstalk

One of the problems that you face with many projects that you want to Dockerize is figuring out how to deploy them. This is particularly challenging if you want to deploy and scale multiple projects on the same server or set of servers since most deployment solutions target a single application or project at a time. Elastic Beanstalk, for example, out of the box only supports single site deployment from its GUI.

A Recipe for a Long Weekend - AWS Route53, GoDaddy, and the Dark Side

Do not underestimate the power of the dark side – Vader Recently, I transfered the DNS for several sites from GoDaddy over to AWS Route53 Hosted Zones. As is typical for most good devs, I over-optimistically thought that critical updates on Friday would be fine - I know what I’m doing, right? To start the process, I went to the GoDaddy DNS console for each site and selected the option to export a zone file.