Вот вам карты «возможного» местоположения разработчиков Telegram и React для затравки.

Telegram Desktop. Всего 205 человек. Из них 3 основные. Два (работают с 2014 и 2019) в районе Самара-Кавказ (Армения, Грузия, Азербайджан) и один (работает с 2018) вероятно в Турции.
Telegram Desktop. Всего 205 человек. Из них 3 основные. Два (работают с 2014 и 2019) в районе Самара-Кавказ (Армения, Грузия, Азербайджан) и один (работает с 2018) вероятно в Турции.
ReactJS. Всего 1854 человек. Основной состав: 14 работает, 26 уволилось. Примерно 50/50 сидят на восточном и западном побережье США.
ReactJS. Всего 1854 человек. Основной состав: 14 работает, 26 уволилось. Примерно 50/50 сидят на восточном и западном побережье США.

Параметры:

  • масштаб +/- страна;

  • промах до тыс. км.;

  • вероятность ошибки, по ощущениям, пока ~20%;

Факты:

  • время коммита сохраняется с timezone пользователя;

  • мы можем извлечь историю коммитов вызывав git log;

Текущий алгоритм:

  • смотрим часовой пояс в метке времени коммита;

  • в некоторых часовых поясах расположен лишь один крупный город (например: +4:30 Кабул, +5:45 Катманду, +10:30 Аделаида);

  • в некоторых часовых поясах расположена лишь одна страна (например: +05:30 Индия, +12:00/+13:00 Новая Зеландия);

  • имея зону с N странами учитываем только те, где большая вероятность IT (например: в зоне Буркина Фасо / Великобритания исключаем Буркина Фасо)

  • проверяем домен первого уровня у почтового ящика (например: mil в основном используют военные США);

  • проверяем почтовый сервер (например: китайцы предпочитают qq.com)

  • проверяем уникальные символы в текстах коммитов (например: ł для Польши, ß для Германии, ñ для Испании);

  • проверяем популярные фамилии (например: Ким и Пак это ~15 млн. корейцев из зоны Корея/Япония, а Судзуки и Сато ~4 млн. японцев)

Что можно ещё:

  • сохранить ТОП 100 IT-компаний и их адресов. Из email узнать компанию (например: для ivan@luxoft.com это, скорее всего, Luxoft). Сопоставить почту, офисы и текущий диапазон стран.

  • если человек долго и много коммитил, можно составить гистограмму и сопоставить провалы в ней с гос. праздниками (например: рождество у католиков, фиеста и сиеста у испанцев, день независимости в Папуа — Новая Гвинея).

  • сопоставить местоположение с другими метриками и выделить на карте работающих и уволенных (или основной состав). Далее корректировать местоположение отдельных ребят по позиции большинства.

Минусы:

  • много мест с «если», поэтому будут ошибки. Моя задача угадать не 100% случаев, а верно предположить «для большинства».

  • алгоритм легко обмануть, но «для большинства» это бессмысленная задача.

Да, метод не самый точный. Но текущая реализация (с багами) уже неплохо угадывает, а если добавить правильные переходы на летнее и зимнее время, а также расширить метрики, станет ещё лучше. Исходники тут, онлайн демо тут.

Пакеты для Python, Ruby, JS, PHP, Docker

Python:
установка:pipx install assayo
создать отчёт:assayo

Ruby:
установка:gem install assayo
создать отчёт:assayo

JS:
создать отчёт:npx assayo

PHP:
установка:composer require bakhirev/assayo
создать отчёт:vendor/bin/assayo

Docker:
образ: https://hub.docker.com/r/bakhirev/assayo

P.S.: Когда я писал это, новости про Linux ещё не было. А теперь как-то странно выходит, ведь это потенциально можно использовать для массовых баннов. Но с другой стороны, причина банов не в инструменте составления списков. Странно будет удалять это.

UPD: Снял лог c Linux:

~4850 компаний (из них 8% Intel, 4% AMD, 3% RedHat) ~26780 программистов (из них 498 "основных"). 756 человек, скорее всего, из РФ (это 3%). Для сравнения 1664 из Индии (6%). По одному человеку от Аляски, Непала и Вьетнама.
~4850 компаний (из них 8% Intel, 4% AMD, 3% RedHat) ~26780 программистов (из них 498 "основных"). 756 человек, скорее всего, из РФ (это 3%). Для сравнения 1664 из Индии (6%). По одному человеку от Аляски, Непала и Вьетнама.

Комментарии (13)


  1. Shaman_RSHU
    23.10.2024 20:34

    Какая-то доля OSINT в этом есть


  1. artemmoscow
    23.10.2024 20:34

    а разве телеграм опенсорсный? как там посмотреть коммиты


    1. bakhirev Автор
      23.10.2024 20:34

      Я взял это https://github.com/telegramdesktop/tdesktop Возможно это не официальная сборка, но выглядит как официальная


    1. ishchu_kota
      23.10.2024 20:34

      Частично опенсорсный, клиентная часть. https://telegram.org/apps#source-code


    1. AndreiKud
      23.10.2024 20:34

      Репа, конечно, есть, но как минимум клиент мобильный для андроида в сторе собирается из чуть другого кода. Видимо, у них какая-то приватная репа, изменения в которой они со временем в публичный апстрим льют


  1. stangri
    23.10.2024 20:34

    проверяем уникальные символы в текстах коммитах (например: ł для Польши, ß для Германии, ñ для Испании);

    Насколько я помню, из немецко-говорящих стран ß действительно используется только в Германии (ну и для ваших целей, можно пренебречь), но из испано-говорящих стран ñ используется всюду. Есть и другие языки, где ñ используется. Если вы определяете страну по ñ в комбинации с часовой зоной, будет точнее (из текста неочевидно).


    1. bakhirev Автор
      23.10.2024 20:34

      Да, все так и есть. Это проверка только для Европы или островов. В районе Латинской Америки она уже не используется, т.к. слишком много испаноязычных стран.


  1. A4E
    23.10.2024 20:34

    С последней картинкой интересно. Аргентина внезапно наибольшее количество имеет. Знаю, что c у Canonical здесь много персонала, конечно. Но все равно удивительно


    1. bakhirev Автор
      23.10.2024 20:34

      В данном случае это смесь Аргентино-Бразильцев. При том, что часть Бразильцев я отрезал по Испанскому алфавиту и частично по популярным фамилиям, а в сторону Аргентины сдвинул, т.к. у неё более сильная экономика и IT отрасль. Но возможно я ошибся, т.к. следуя "карте офисов", работяги Canonical имеются в Сан-Паулу, а это Бразилия (на 1000 км выше).

      Видимо "карта офисов" для ТОП 100 компаний сильно поправит разброс и нужно будет её сделать.


  1. denismartyanov
    23.10.2024 20:34

    Вам бы кружочки побольше делать, а то на последней картинке четырёхзначные числа не влезают, я сначала удивился даже от странного распределения, пока не разглядел.


    1. bakhirev Автор
      23.10.2024 20:34

      Готово (пока только в онлайн версии). Так же добавил цвета и фильтры, чтобы понять где основная команда или сотрудники конкретного суб. подрядчика.


  1. ImagineTables
    23.10.2024 20:34

    Я думал, скорость света будет сопоставляться со временем в коммитах, или что-то вроде этого. А тут — «смотрим в таймзону юзера».

    — И это всё дал анализ слюны?!
    — Да. К счастью, преступник, уходя, обронил паспорт, что полностью подтвердило наши подозрения.

    (Но всё равно круто).


  1. muryk
    23.10.2024 20:34

    Для тех, кого это волнует - можно указать таймзону для git. Например, вот так можно установить UTC для всей активности (а заодно писать лог команд):

    #!/bin/bash
    
    LOG=..... path to your log file.txt
    
    timestamp=$(date +'%Y-%m-%d %H:%M:%S %Z')
    
    # quote the arguments if necessary
    args_string=$(printf "%q " "$@")
    echo -e "$timestamp: git $args_string\n" >> "$LOG"
    
    
    # Check if the file has 1500+ lines, truncate it to 1000
    if [ $(wc -l < "$LOG") -ge 1500 ]; then
        tail -n 1000 "$LOG" > "$LOG.tmp" && mv "$LOG.tmp" "$LOG"
    fi
    
    export TZ="UTC"
    
    /usr/bin/git "$@"
    

    И работать только через этот скрипт. Рецепт для macOS и unix-like. Как это сделать в Windows - не знаю, скорее всего примерно так же.