У нас попросили написать про самих себя, кто в чем участвовал. Я написал. А поскольку, по-моему, получилось забавно и достаточно полно, еще и сюда помещу, убрав некоторые детали.
Итак, про Серегу:
- в программистком детстве Серега увлекался программированием на ассемблере, криптографией и упаковкой данных. В результате им были написаны несколько библиотек упаковки по алгоритму LZSS, одна из них применялась в варианте
модема Лександ, реализация алгоритма PPMD, несколько библиотек работы с криптографическими алгоритмами (RSA, DES, RC4, RC5, библиотека работы с большими числами и тп). Значительная часть всего этого добра была написана на ассемблере.
- Немного программистски выросши, Серега стал заниматься тоже всякой ерундой. Например, он написал двунаправленный протокол передачи файлов (а-ля Hydra). Или еще написал программу для упаковки и шифрования телефонного разговора: при это упакованный голос передавался по модему на 14400. Шифр использовался стойкий, помимо упаковки речи присутствовало определение пауз, поэтому фразы передавались целиком. В целом, можно было разговаривать. В процессе создания пилотного варианта шумомера программировал DSP фирмы Analog Devices, ознакомился с теорией цифровых фильтров.
- Когда Серега еще программистски подрос, он продолжил заниматься ерундой. Он занимался написанием программ для банкоматов и помощью в создании криптографических железок для них. Среди всего прочего, мы разработали протокол защиты криптографической железки от прослушивания. Но это больше security through obscurity, чем действительно безопасное средство.
- Почти программистски выросши, Серега продолжал заниматься... а вот и нет, он продолжал заниматься написанием программ для банкоматов. Написал ядро системы, написал еще много чего, занимался поиском ошибок, допущенных другими программистами.
- Когда Серега программистски вырос, он пошел в геймпрограмминг. Дурацкое занятие, надо сказать. Там он занимался небом (облака, солнце, тени, гало) и взрывами (разработал алгоритм разрывания готовых моделек на отдельный части, так, что "эмоции" от взрыва конфигурировались тестерами и скриптерами, а не дорогими в использовании художниками). Потом я занимался физикой, пристраивал ODE к нашему движку. Но это уже перед самым уходом, до этого я оптимизировал все, насколько мог. Мог достаточно много, как оказалось.
- Программистски возмужав, Серега занялся восстановлением трехмерных поверхностей по снимкам. Забавное занятие. Когда появилось некоторое количество денег, занимался поиском народа на выполнение работ (это как мы познакомились с Мишей
potan).
- Заматеревшим программистом Серега пришел в ИТМиВТ. Здесь он отличился в разных проектах, в основном, связанных с моделированием аппаратуры. Началось все с моделирования коммутационной среды с топологией "сеть," как у транспьютеров (Tcl, затем C++). Затем я выполнял всякие мелкие поручения типа показать влияние параметров на работу "сумматора Балина" (Haskell). Когда появился Клютченя, я написал скрипт по подсчету строк (это был полный разбор грамматик Verilog и VHDL). Потом был MIPS. Потом я составлял планы, как для Жениного подразделения, так, вроде, и для отдела в целом (вместе с Гусаровым и Владом). Потом я написал модельку этого самого "вычислителя с динамическим потоком данных с сортировкой токенов." Параллельно я привел в компилябельный вид тесты для архитектуры SPARC v8. Потом началась эпопея с видеоконтроллером, в ней я участвовал, как источник алгоритмов, написатель алгоритмической модели скейлера, разработчик и написатель алгоритмов для отдельных узлов скейлера. Сейчас доделываю генератор тестовых последовательностей для видеоконтроллера.
На какие вопросы я могу дать ответ, отличный от "не знаю:"
- визуализация (растеризация, трассировка лучей),
- игровая физика,
- восстановление трехмерной структуры по стереофотографиям или просто по снимкам,
- цифровая обработка данных (фильтры, БПФ для звука, вейвлеты только для изображений),
- линейная алгебра, необходимая для всего вышеперечисленного (основные функции и преобразования),
- использование SIMD расширений современных процессоров для всего вышеперечисленного,
- как написать свой собственный язык программирования,
- как быстро моделировать аппаратуру (быстро - с точки зрения производительности программиста, не программы).
Языки программирования:
- Tcl (интерфейс)
- Haskell (общего назначения)
- C++
- всякого рода ассемблеры
Как-то так.