Hi, I'm Gram

Projects

Telegram channels

ITGram
#python #go #monitoring #security

All about development: best practice, articles, useful tools, libs etc.

RPG Dump

Pathfinder, board games

Default City 2

Saint Petersburg and people around me

Open Source

TextDistance
#python

Compute the distance between sequences. 30+ algorithms, pure python implementation, common interface, optional external libs usage.

DjBurger
#python #django

Framework for safe and maintainable web-projects.

Deal
#python

Design by contract for Python with many validators support.

DjBrut
#python #django

Bruteforce protection for Django projects based on Redis.

Homoglyphs
#python

Get similar letters, convert to ASCII, detect possible languages and UTF-8 group.

Awesome Generator
#go

Generate awesome list over Github API

Generated Awesomeness

List of autogenerated awesome lists.

Send File Bot
#python #telegram

Telegram bot for sending files to chat or channel by cron.

RuTimeParser
#python

Recognize date and time in Russian text and return datetime.datetime.

Zabbix Healthcheck
#python #zabbix #monitoring

Flask HealthCheck support for Zabbix

DepHell
#python #packaging

Dependency resolution and requirements converter for Python. DepHell in progress yet, but it will be the great project! Check it out.

Some little projects

poetry-setup
#python #packaging

Generate setup.py (setuptools) from pyproject.toml (poetry)

install-requires
#python #packaging

Convert requirements between formats.

ElastAlert Configuring
#elasic #monitoring

ElastAlert daemonizing and some rules for filebeat and metricbeat

python-syslog-logstash
#python #docker #rsyslog #elastic

Python Logger + RSysLog + Logstash. Demo over docker containers.

Django Google Play permissions
#python #docker

Django package for getting permissions for Android app from Google Play.

hh.ru
#python #jupyter

hh.ru vacancies analyze by different params

Swag
#python

ᙏáḱє ‡ɘχτ !η ẃɨŧ¢н-ħ∅υѕé ѕ†ɏƖε (Ɛñ9ĺïś♄ & Řᵾśѕ!áη)

Pathfinder Dice
#python

A library for evaluating dice notation for Pathfinder RPG

DjChoices
#python #django

Good choices for Django

USATU CTF
#security

tasks, files, write-ups from my university CTF.

Pull Requests to other Open Source projects

delorean

Fixed ISO date parsing

2018-10-08

python-json-logger

Fixed and improved setup.py

2018-10-08

pylama

Eradicate support and Python 3.7 compatibility.

2018-09-28

luigi

Added configuring of logging via TOML config.

2018-08-07

isort

Added requirements.txt and Pipfile support

2018-07-22

mongoengine

Added DateField support

2018-07-20

luigi

Project configuring via TOML format.

2018-07-13

mixer

Added unregister_middleware function.

2018-07-04

requirementslib

Improved Pipfile.lock parsing.

2018-06-16

hello-world

Added esoteric language named YoptaScript.

2018-04-25

choosealicense.com

Updated CC-BY license name.

2018-04-18

Opened PRs

Some of my PRs isn't accepted yet.

Public talks

The bees, the trees, the types, the typing
#python

An interactive presentation about data structures in Python's stdlib.

2018-12-11

Logging!
#python

My first English talk. Sorry about that.

2018-12-06

Luigi: let's build perfect pipeline
#python

Presentation about Spotify's framework Luigi.

2018-10-27

OSS: why and how?

Presentation about Open Source from Hacktoberfest 2018.

2018-10-20

Python packaging
#python #packaging

Presentation from PiterPy Meetup #6.

2018-06-29

Code, Burgers & Magic
#python

Presentation from UfaPy.

2018-01-18

Farfor Monitoring
#monitoring

Presentation from UfaDevConf about monitoring ecosystem in Smena Team.

2017-10-14

Vulner
#security

Presentation for FSTEC about my security platform. This platform is similar to vulners.com, but more powerful and useful. The project is frozen now.

2016-07-22

Blockchain
#crypto

Internal presentation for Smena Team about blockchain technology.

2017-07

Other projects

Podcast about blockchain

About blockchain technology, cryptocurrencies, history and future of decentralized systems.

Stickers

I draw and print round vector stickers with programming jokes.

Dipper3

Telegram bot with many features and lightweight dialog system

alert1

My CTF team. CTF (Capture The Flag) — information security contests.

Skills and technologies

Languages

Python

This is my favorite language. I know source code of almost all stdlib, have many Python-based Open Source projects and public talks. You can discover them above.

Go

This is my second favorite language. It has quite a different philosophy rather than Python and it's great. Go gives you superpower that allows you to make blazing fast services and tools. I've just started using it, but already has some projects.

PHP

Ok, I know PHP. And hate it. This is my first web programming language, I've known it very well, but I try to avoid it. Also, I have public talk why PHP is bad. However, I know it and can read PHP code.

HTML, CSS & LESS

Yeah, this is not programming languages, but I know them, of course. I like the web so much, so I couldn't miss some frontend basic things. The layout of this site is quite nice, isn't it? This is just Bootstrap 4, but still.

SQL

Most of the time I use ORM or query builders, of course. But SQL knowledge is required for effective queries optimization and debugging. Luckily, a huge PHP background gives me these skills (PHP has no good ORM).

Storages

PostgreSQL

I've completed DBA1, DBA2, and DBA3 courses from Postgres Professionals company. So I little bit know how to set up, optimize and replicate PostgreSQL database.

Redis

I like this storage for speed and simplicity. For example, my bruteforce protection tool works on top of it.

MySQL

Unfortunately, in Smena we lived with MySQL, so I know how to make replication and backups, how to set up a server and debug strange behavior.

MongoDB

I know how to set up and use it for the best security and performance, how to build good documents structure. BTW, I'm mongoengine contributor.

ElasticSearch

This is very fast storage with cool query syntax. In Smena we use it for data caching in ERP and for logs storage.

Frameworks

Django

I like this framework! It's quite pythonic. I know it's source code better than the birthdays of my relatives. However Django has some issues for big projects, so I've made DjBurger.

Flask

This is the most popular web framework. An old, a little bit slow, but beautiful. So I know it very good, but I prefer to use more fast alternatives like Sanic. It's more modern and fast.

Django REST Framework

I like to work with DRF. This framework has some disadvantages, but also it's quite simple and popular.

Nameko

It's the framework for RPC based microservices. I've worked with it and know how it works and how to use it for best performance.

Luigi

I'm Luigi contributor and know everything about how it works. I've made all ML pipeline in Cindicator based on Luigi, and this is working on production without any issues. Also, I have public talk about it.

ORMs

Django ORM

This is the best ORM I've ever used. I know Django ORM source code and how to build and optimize queries of any difficulty level.

SQLAlchemy

I work so much with it, but also I a little bit don't like it. This is an excessively low-level framework that doesn't intend to be used directly. I prefer Flask-SQLAlchemy and SQLAlchemy-mixins.

Peewee

I use this ORM every time when I can't use Django ORM, but can avoid SQLAlchemy.

Testing

PyTest

This is a great tool for fast and beautiful testing. I use it in every project where it is possible. I like to write tests because they helps to change the code without fear.

Locust

When I write load tests I use Locust. This is a simple Python-based load testing framework with good performance.

Unittest

Unittest used almost in all my open source projects. For example, in textdistance and DjBurger. So, it can't scare me.

DevOps

Docker

Docker is the most popular container system that allows you to develop and deploy your services faster and simpler. I've packed in Docker all infrastructure of Farfor (when I worked in Smena), all ML Pipeline and trading system in Cindicator and this all works perfectly on all environments from development to production.

Docker-compose

For the development environment, I use docker-compose, because it is the most simple way to orchestrate docker containers. This one of the tools that I use every day.

Elastic Stack

Elastic Stack (ex. ELK) is the huge monitoring system to aggregate logs, messages, and state from all parts of the system. It includes Elastic Search, Logstash, Kibana, MetricBeat, FileBeat etc. I can monitor with it all infrastructure. You can find my demo stand of this system in python-syslog-logstash repository.

Sentry

Sentry is a useful solution for error messages aggregation. I use it for 4 years and know how to build fast and reliable errors processing pipeline. Also, I've contributed to sentry too.

Zabbix

Zabbix is one of the most popular tools for servers and services monitoring. I have huge (and a little bit painful) experience with it. Also, I've written zabbix-healthcheck plugin that adds Flask applications monitor into Zabbix.

New Relic

New Relic is a useful SaaS solution for performance monitoring of Python web applications. I know how to integrate it into projects, monitor state of the system and improve performance and load.

Data Analysis

Pandas

This is the secret ingredient that improved the performance of the report system in Smena team. It has gotten faster from 12 hours to 90 seconds. Also, this is the main instrument of my data researches.

NumPy

I use NumPy for some simple statical analysis and matrix operations.

Matplotlib & Seaborn

Right visualization is the most important part of effective data analysis. I use for it matplotlib and seaborn (second is more often).

scikit-learn

It's Machine Learning! This is the most exciting thing in Data Science. I spend much free time for learning this beautiful domain. And scikit-learn one of the most important tools on this way.

Word2Vec

Word2Vec transforms words into vectors, so you can compare them as vectors. I use this great tool in my chatbot.

Jupyter

Jupyter is a great stack for research. I use it almost every day and know how to setup Jupyter Hub, work with a remote core and other tricks.

Security

Burp Suite

This is my Swiss Army knife for security testing, APIs exploring and analyzing traffic from web, desktop, and mobile applications. I use it in my everyday work and like it.

nmap

This is a very powerful tool for service discovery and network audit. I know how to use it most effectively.

Wireshark

When I need to analyze raw traffic, I use Wireshark. This is hard and rare cases, but I like them.

Soft skills

English

My level is Intermediate (B1+) yet. However, I just started to learn English 6 months ago, so my skill is growing very fast. I'll know it very well soon, I hope.

Scrum

I'm working with it every day, know how to estimate tasks, make informative descriptions and track progress most effectively. Also, I'm familiar to Jira and know how to use filters, dashboards, boards, search queries. In my hometown, I was a part of Atlassian User Group.

Kanban

This is my favorite Agile methodology. I organized processes in my team by Kanban and use Trello board to order my personal tasks. And it works great!

Leadership

I made my own web studio, CTF team, patronized newbies in Smena. Now I build and coordinate software architecture in Cindicator team. I can create, distribute, delegate, control, and estimate tasks, work with people.

Part of the team

I like to discuss tasks, manage them, organize my work time, estimate and prioritize. I'm always happy to communicate, but avoid spending work time. In Smena I've built perfect standups: fast and informative.

Public talks

I like to talk to people about my tasks and knowledges, spread cool ideas. You can discover some of my talks above. Most of them on Russian, but I'm going to change it.

Libraries

Jinja2

This is my favorite template engine. This page generated by Jinja2.

Requests

I know this tool very well. However, for dozens of requests, I prefer asynchronous solutions like aiohttp.

Attrs

Dataclasses is a beautiful conception that I use in my projects every day. For example, in dephell. It helps to write beautiful and fast code. So, I know almost everything about this lib (and about dataclasses from Python 3.7 too).

Celery

I prefer other solutions like rq and huey, but celery is the biggest, most popular and only one good that can work with RabbitMQ, so I have huge experience with it.

Telethon

Telegram messenger is very popular now, so I have experience in writing bots and direct working with telegram's protocol (MTProto).

Work

1. Life4Web

Founder, Django web developer (Python).

2016-01 — 2017-05

2. Smena

Django web developer (Python).

2017-05 — 2018-06

3. Cindicator

Senior Python developer, architector.

2018-06 — now