Writing about the craft of software

Notes on Unix, Python, databases, design, and building useful systems.

Unix is the most powerful development tool

The Unix operating system is the most powerful development tool. It doesn't matter if you're working with a LAMP/LEMP stack, Java, NodeJS, or SQL or any other coding language, Unix allows you to develop code and computer systems more efficiently. Developed in…

Uncategorized

Read article →

OOP Behavior

When designing in Object Oriented Programming (OOP) the question I always ask myself when trying to figure out where some piece of code should go is, "Who does this behavior belong to?". If our class names are nouns, such as Orders, Books, ProductColors…

Design, Elegance

Read article →

Saleor Products Data Model

I'm looking to replace our Magento Ecommerce Server with something "Nice" - Something that is not complicated, not over abstracted, something that is well ... fun to work with. Saleor is an elegant solution. It is an Ecommerce app written in Python and Django…

database, Design, E-Commerce, Python

Read article →

Data is King, is KING!

Good Data makes life easy; If we model all our the business logic in the database then the application layer is trivial. Case in point: I'm implementing a User Access Module. First I define a list of Access terms: Things like dashboard (allow view dashboard)…

Uncategorized

Read article →

Make is Simple

Complexity is only Simplicity x 1000 -- A mathematician friend once told me that. The idea struck a chord with me and has stuck with me ever since. Everything in this world is complex. When we design computer systems our goals should be to encapsulate that…

Design, Elegance

Read article →

Successful Computer Programmer

So we're all computer programmers, but what makes you successful? What makes you an excellent contributor to your team or company? I discovered the importance of these traits little by little over the years. They are progressively more important as you move…

Elegance

Read article →

Safety Belts Off

When should we use secure practices and when not to? Like all good advice secure practices need to be weighed against practicality. In a perfect world your system will have full test coverage, automated testing, database migration scripts, automated…

Sys Admin, Unix

Read article →

DB, Config and Logging

The Database, Config and Logging are at the core of all application development. Everything starts there. A Database System stores all of the applications data. The storage itself can be anything from a loose collection of files like jpegs, a nosql db like…

database, Design, Python

Read article →

Always diff before you commit

If you don't diff before you commit you don't know what you're committing. When programming anything even remotely interesting, we're making changes all the time. Change, change, change. Phase 1, phase 2, experiment 1, experiment 2, etc. And we're using…

Uncategorized

Read article →

Less Is More

You know you're doing a great job when, adding new functionality to a code base, and you wind up removing more code then you've added. Less is More. I once heard boast a programmer that he'd written million lines of C code. That seemed undesirable to me…

Design, Elegance

Read article →