Richard Clayton
"Third-Time Principle" of Defining Abstractions
In general, only on the third time of encountering a common behavior should you refactor components to share a common abstraction of that behavior.
Clarification: The abstraction could be an abstract class
or interface
depending on the use case and language.
I've generally used this principle when I'm . . .
MEAN's great, but then you grow up.
Develop a prototype, then reflect on your choice.
The MEAN stack (MongoDB, Express.js, Angular.js, Node.js) is now being heralded as the new LAMP (Linux, Apache, MySQL, PHP), the preferred technology stack for startups.
MEAN is certainly a great technology choice for organizations (particularly startups) seeking to rapidly prototype a capability. However, like all technology . . .
Software Estimation is a Losing Game
Should we even bother?
This is an argument, and like all arguments, it's supports a specific position. I don't try to defend software estimation; I leave it to my colleagues to present that case. I write about this issue because I believe the software community needs to have an internal debate about whether software estimation in its current form is . . .
Software Engineering is not a Job.
It's a Profession.
Warning - this is a rant about those 10-20% of software professionals that give the rest of our community a bad name.
One of my biggest annoyances in technical management is the 9-to-5 Software Engineer. A 9-to-5 Software Engineer (or developer) is someone who views their position simply as a way to pay bills. For them, . . .
Revel, GORP, and MySQL
Building a classic 3-tier web application controller in Golang.
This is a compilation of things I've had to piece together from blog posts, example projects, and experimentation. I hope it saves you a bunch of time.
Goal:
Build a simple Revel controller that performs CRUD operations against a MySQL database.
Caveats:
- Use RESTful Paths.
- Use JSON request . . .
Quick MySQL Box Using Vagrant and Ansible
Update July 19, 2014:
The default MySQL Server package in the CentOS repo is ridiculously old (5.1 - MyIASM is the default storage engine). If you need the newest version of MySQL, there is an RPM for the Oracle YUM Repo which will provide you the latest packages. I can't provide you that here because you have to accept Oracles . . .
Failing at Microservices.
Please avoid our mistakes!
Microservices are the new fad in software architecture, and while I think they are generally the correct philosophy to take with service design and composition, the pattern can certainly lead you quickly into trouble. If you don't know what Microservices are, I recommend reading the article written by Jame Lewis and Martin Fowler on the . . .