Writing on leading data teams, general engineering, and AI.

All my stories, thoughts, and new topics I want to share.

Building Your Data Stack with Intent

A practical guide to selecting the right tools, starting small, and optimizing your data stack for performance and security.

Building Data Teams 101: What's the Best Approach for Your Business?

Give them the whole perspective of the company, the challenges the business is struggling with, and how data analytics could help solve those issues. Only then can they put their analysis into the context of the company and produce results that have a real impact.

The 4 Hard Truths Data Science Blogs Don't Teach You About

I'm angry. Yes, I'm angry at data science blogs. Which is weird, because data science is blooming right now and we see a wide variety of knowledge being spread at every corner of the Internet. So, ...

Monitoring Nginx with @sherlog/cli

Logs play a very important role throughout the entire life cycle of an application development as well as troubleshooting and replicating bugs on production that could lead to service interruption ...

Develop and Publish Your Python Packages with Poetry

I've been trying to publish my packages to PyPi so people can access my software more easily. But I have to be honest, Python's publishing system is not the best out there and it has to improve qui...

How to Easily Use a Progress Bar in Python

We've all been there, your code is performing a job and it's going to take a while. I'm an impatient guy, so it would be nice to have an ETA or a progress bar to show us. Fortunately, there are lib...

How to Create a Ruby Gem with Bundler

I've been writing and focusing on Python lately and I've been wanting to make more content about Ruby. Ruby was my very first language and the one that got me into this programming world.

Generate and Verify Your Commits with GPG in Github

Signing our commits is a great way to verify your commits and let your collaborators know that they can trust that you committed those changes in your project. We're going to see how can we use a G...

Change Flask Root Folder for Templates and Static Files

Today I was facing a problem, I didn't know how to change Flask root directory. Flask by default look for templates and static files under the root directory (`/`), how can we change that?

Deploy a Flask Project to Heroku

I was suddenly in the need of deploying a very basic Flask API to the cloud, so it can be available to the public.

Importing Variables from a Web Site

Don't do this. Don't go there importing random code you found on the internet into your code because that can be dangerous and code would be injected into your machine or a client's machine and you...

How to Handle a Deque in Python

Deques are a great way to handle memory efficient appends to a list-like object, it is a special module that allows you to handle list items in a more appropriate way.

Create a Basic Api with Flask

Flask is a microframework for Python that you can use to quickly create API's and websites. It's a great and easy to use platform, let's create a simple API, but first we will go through the basics.

Create and Object with Namedtuple

Namedtuples are a subclass of typename which allow us to create objects (or classes) with tuple-like attributes, it's easy to create a class with immutable attributes with this library.

Unit Testing with Python: an Introduction

I was reading about Unit Testing and found a blog entry in CodingHorror called I Pity The Fool Who Doesn't Write Unit Tests, and guess what, he's right.

Suppress Print Output in Python

Sometimes you don't want output at all to your screen, there are times when I'm writing a function that prints something to the screen, the ideal thing (at least for me) is to use `return` instead ...

Classes and Special Methods in Python

These are my study notes on Classes and special methods. As always, if something is wrong then you can always correct me, it would help me and everybody else.

Figure Out a Download File-size with Requests

To get the filesize of a download is really easy, servers usually provide a `Content-Length` in its header response that let us know how heavy is the content we are requesting. We can find out this...

Scraping Web Data with Requests and Beautifulsoup [part 2]

A quick recap of the last post: * First we requested content using `requests` library and parsed the response's contents using BeautifulSoup library. * We learned that we can manipulate HTML tags, ...

How to Send a Tweet with Python Using Tweepy

Here are some simple steps to send a tweet with a Python script to give you an overview on how to authenticate in Twitter using OAuth and simple code snippets to manipulate Twitter data to build a ...

How to Securely Store Sensitive Configuration with Dotenv

API keys are one example of sensitive information that should remain secret, the problem is that we need to use them in our code to access third-party services like Twitter, Github, DigitalOcean an...

Manage Python Versions with Pyenv

Pyenv is an excellent tool to have in your tool-set, it manages Python versions much like `rbenv` for Ruby, in fact it was forked from it.

Understanding Accessors in Ruby

One thing that puzzled me as a newbie (disclaimer: I still am) are accessors in Ruby, more commonly known as setters and getters or explicitly described as `attrreader`, `attrwriter` and `attracces...

HTTP Requests in Python

lets try HTTP requests with httpbin.org to test multiple HTTP methods with `requests` and `JSON` data. We'll see how to extract data from a JSON-encoded response (e.g. {'key': 'value'})

Pipenv: Installation and Configuration

Essentially Pipenv is `pip` + `virtualenv` and it's a match made in heaven. It manages dependencies, required python versions (if pyenv is available), generates pipfiles which is more reliable than...

Migrate from Ghost Blog to Jekyll

Jekyll is a Ruby gem, so before installing Jekyll you have to install Ruby, I recommend that you install Ruby with [RVM][rvmlink].