Vagrant is an amazing tool for developing throw-away dev environment
that closely resembles production. It greatly reduces turn around times and
effort on setting up your development environment. It gives you the flexibility
to experiment around, play with new experimental stuff and if you mess it up,
then you can easily destroy and quickly re-create another one.
You may find a ton of projects on Github that make use of Vagrant for
development. However, they use Vagrant for development of the project alone.
That may work fine with one off projects or open-source projects. In a real
world scenario where you have more than one projects working together, setting
them up locally may be difficult. This post presents a way you can use Vagrant
in an Service Oriented Architecture where it may be possible for you to use the
same Vagrant setup with multiple projects.
As someone working with the web stack and languages like Python or Ruby, there
are high chances that you have heard of Non Blocking I/O. You might as well be
using it with some of your projects or have tried your hands with libraries
like Gevent or Tornado. But how do these libraries make network requests non
blocking. This is something that I had always wondered when I tried Gevent. I
just couldn’t get my head around the fact that when you send something to a
socket or receive from it, it will block execution for the at least the amount
of time it takes to transmit the data. So how do I make it possible to execute
something else while I/O is happening? So I started digging in, trying to
understand how to make some network request non blocking in Python.
With this article series, I will try to introduce the topic and go in as much
detail as possible.
Incoming is a JSON validation framework for Python. Validation of payloads
sent over HTTP requests has always been a mess. A bunch of if-then-else
further branching into more if-then-else blocks is common and over time
becomes extremely difficult to manage. Since the use of JSON
for HTTP payload is a common practice, it only made sense to solve the
problem of payload validation for payloads in JSON format. Incoming is an opinionated
JSON validation framework which does not bind to any kind of web frameworks.
It just tries to make JSON validation sensible and logical by giving it
structure and making it possible to re-use validation code across your application.
This article is about the logging problem with Gevent’s WSGI
Server and how a simple hack can actually help you solve that problem
and make sure you continue to use Gevent for serving WSGI applications
(Flask in this article) without any compromises.