Skip to content

Instantly share code, notes, and snippets.

View shvechikov's full-sized avatar

Leonid Shvechikov shvechikov

View GitHub Profile
@shvechikov
shvechikov / it-career-2026.md
Created August 7, 2026 00:06
Как строить карьеру в IT в 2026 году: системный обзор

Как строить карьеру в IT в 2026 году: системный обзор

Этот текст вырос из вопроса выпускников: «Как выбрать хорошую компанию? Какие красные и зелёные флаги можно определить заранее?» Вопрос хороший, но узкий: выбор компании — это третий шаг, а не первый. Если понимать, куда идёшь и что накапливаешь, флаги выводятся почти автоматически — и мы к ним придём в конце. А если не понимать, то даже «хорошая» компания легко окажется хорошей для кого-то другого.

За основу взят корпус LessWrong и близких к нему рационалистских авторов — не потому, что у них есть готовые ответы про IT-рынок (их там нет), а потому, что это самая продуманная система мышления о карьерных решениях из существующих. Там, где у этой перспективы слепые пятна — социальный капитал, мейнстримный рынок, российская специфика, экономика профессии в эпоху AI-инструментов — она дополнена другими источниками.

1. Стартовая точка: люди — не стратеги по умолчанию

Опорный текст всего корпуса — эссе Анны Саламон «Humans are not automatically stra

def print_matrix(matrix):
for line in matrix:
print(' '.join(map(str, line)))
def empty(n, m):
matrix = []
for i in range(m):
matrix.append(['.'] * n)
return matrix
#!/bin/python3
def get_direction(n, m, x, y):
if y == 0 and x != n - 1:
return '>', n-x-1
if y == m - 1 and x != 0:
return '<', x
if x == 0:
return '^', y
if x == n - 1:
@shvechikov
shvechikov / timed_code.py
Created July 9, 2018 05:54 — forked from lericson/timed_code.py
Python Timer Class - Context Manager for Timing Code Blocks
import logging
from contextlib import contextmanager
from timeit import default_timer
time_logger = logging.getLogger(__package__ + ".timer")
@contextmanager
def timed_code(name=None):
next_unit = iter(("s", "ms", "ns", "us")).next
msg = "section %s took" % (name,) if name else "section took"
@shvechikov
shvechikov / README.md
Last active July 20, 2018 06:01 — forked from snehesht/Concurrent HTTP Requests with Python3 and asyncio
Concurrent HTTP Requests with Python3 and asyncio

Concurrent HTTP Requests with Python3 and asyncio

http://geekgirl.io/concurrent-http-requests-with-python3-and-asyncio/

My friend who is a data scientist had wipped up a script that made lots (over 27K) of queries to the Google Places API. The problem was that it was synchronous and thus took over 2.5 hours to complete.

Given that I'm currently attending Hacker School and get to spend all day working on any coding problems that interests me, I decided to go about trying to optimise it.

I'm new to Python so had to do a bit of groundwork first to determine which course of action was best.

"""
This module is no more needed. It could be useful for implementing Django-level authentication.
Now it works using DRF-level authentication -- dating.apps.mongo_auth.authentication.MongoTokenAuthentication.
So it's here JFYI.
"""
# from django.contrib import auth
from django.utils.functional import SimpleLazyObject
from .models import User, AnonymousUser
@shvechikov
shvechikov / signed_s3_upload.py
Created April 28, 2016 13:10
Upload files to S3 using generated signed URLs
import requests
from boto.s3.connection import S3Connection
c = S3Connection(AWS_ACCESS_KEY, AWS_SECRET_KET)
data = 'file content'
filename = 'dir/name.txt'
bucket_name = 'your-bucket-name'
headers = {'Content-Type': 'text/plain'}
def find_best_subarray(array):
best_sum = 0
best_start = 0
best_end = 0
cur_sum = 0
cur_start = 0
cur_end = 0
for i, x in enumerate(array):
def add_preview_for(*fields):
"""
This is a decorator for model classes that adds preview methods.
So instead of manually adding preview methods:
>>> class Student(models.Model):
... photo = models.ImageField()
... icon = models.ImageField()
...

tmux cheatsheet

As configured in my dotfiles.

start new:

tmux

start new with session name: