Python

_images/image_python1.png

Python is my language of choice for managing infrastructure, clouds, processing, data science, tools, virtualization, automation, websites, and core platforms. Below is my usual stack for building a new product or startup:

Django

I am a fan of most microservice architectures where a lightweight web application only uses ORM for housing web sessions. I am not a fan of app servers that spiral into bloatware, which means I gutted the ORM internals of Django so it acts a passthrough to my Tastypie REST services. I consider my Django servers (and most application servers) nothing more than a deployment tool for sending and receiving HTML + Javascript.

Here is my Django shell for starting a new product site running on Docker:

https://github.com/jay-johnson/docker-django-nginx-slack-sphinx

Tastypie

I use Tastypie Django webservers for injecting asynchronous jobs in to my Redis clusters. This architecture allows my products to have websites decoupled from business logic that is implemented in my proprietary python job processing engines.

If you are curious, here’s more on Tastypie: https://django-tastypie.readthedocs.io/en/latest/

SQLAlchemy and Alembic

I run multiple RDS Amazon Web Service instances using MySQL and managed through SQLAlchemy and Alembic. The ability to skin and prototype database schemas at high speed is why I created the prototyper repository: https://github.com/jay-johnson/docker-schema-prototyping-with-mysql

Boto

When I need anything on Amazon Web Services I will build it using AWS Boto. I have built, managed, and launched multiple VPCs for my startups. Boto is fantastic if you do not want to manage your AWS cloud from a browser.

Open Source Projects

I have created or contributed to the following open source projects:

Message Simulator

I have spent years validating and assessing highly available production AMQP clusters. I built the Message Simulator as a generalized tool for ensuring any RabbitMQ cluster is ready by simulating message traffic.

Want to learn more?