Category: it

birds

Haskell developer wanted

И снова мы ищем таланты :) А именно Haskell-программиста в киевский офис EPAM Systems/Barclays.

Если вы любите функциональное программирование, имеете опыт в Haskell (можно на уровне персональных проектов), знаете толк в алгоритмах, и вам интересно попробовать свои силы в разработке интересных коммерческих проектов, присылайте резюме на Ivan_Veselov@barclays.com. Ещё нужно неплохо знать английский (как минимум intermediate).

Проект действительно интересный - разработка семейства DSL-ей (domain specific languages) для описания финансовых контрактов. По полной применяются всякие катаморфизмы, "моноиды в категории эндофункторов" и прочий хаскелльный стафф, то есть это не просто веб-странички на хаскелле клепать. Работы много, проект развивается, можно научиться разным полезным вещам. Работа бывает разная: как и весьма интеллектуальная (типа написать с нуля компилятор чего-то во что-то), так и инфраструктурная, скорее всего придётся заниматься и тем, и тем. Подробнее о проекте можно почитать здесь: http://arbitrary.name/papers/fpf.pdf Статья немного устарела, но даёт примерное представление о том, чем мы занимаемся.

Касательно зарплаты: она, как обычно, по итогам собеседования, на работать "за идею" не придётся, оплата достойная.

И напоследок, ещё раз мой контакт для отправления резюме, ссылок на open source проекты, ваши github-аккаунты и прочих релевантных вещей: Ivan.Veselov@barclays.com
Tags: , ,
birds

Ищем Haskell-программистов в Киеве

Всем привет!

У нас в EPAM Systems/Barclays Capital снова открыта вакансия Haskell-программиста (да не одна, а целых две!). Мы работаем в Киеве, возможна помощь компании при релокации.

Если вы любите функциональное программирование, имеете опыт в Haskell (можно на уровне персональных проектов), знаете толк в алгоритмах, и вам интересно попробовать свои силы в разработке интересных коммерческих проектов, присылайте резюме на Ivan.Veselov@barclays.com. Ещё нужно неплохо знать английский (как минимум intermediate).

Проект действительно интересный - разработка семейства DSL-ей (domain specific language) для описания финансовых контрактов. По полной применяются всякие катаморфизмы, "моноиды в категории эндофункторов" и прочий хаскелльный стафф, то есть это не просто веб-странички на хаскелле клепать. Работы много, проект развивается, можно научиться разным полезным вещам. Работа бывает разная: как и весьма интеллектуальная (типа написать с нуля компилятор чего-то во что-то), так и инфраструктурная, скорее всего придётся заниматься и тем, и тем. Подробнее о проекте можно почитать здесь: http://arbitrary.name/papers/fpf.pdf Статья немного устарела, но даёт примерное представление о том, чем мы занимаемся.

Касательно зарплаты: она, как обычно, по итогам собеседования, на работать "за идею" не придётся, оплата достойная.

С официальной вакансией и требованиями можно ознакомиться на сайте EPAM, там всё подробнее расписано:

http://www.epam-group.ru/career/vacancies/ukraine/kiev/jo/6819.html

И напоследок, ещё раз мой контакт для отправления резюме, ссылок на open source проекты, ваши github-аккаунты и прочих релевантных вещей: Ivan.Veselov@barclays.com
Tags: , ,
birds

Уроки Typeclassopedia

В хаскелле есть довольно много стандартных классов типов (type classes), ноги у которых растут изо всяких теоретических источников (в основном из теории категорий), например Functor, Monad, Applicative, Arrow и прочие. Чтобы немного в них разобраться, я недавно начал читать отличную статью "Typeclassopedia", написанную Brent Yorgey и опубликованную ещё в тринадцатом номере "The Monad Reader".

Standard type classes

Пока я прочёл небольшую часть статьи, которая описывает такие классы типов:

  • Functor
  • Pointed (его нет в стандартной библиотеке, но он полезен для понимания)
  • Applicative
  • Monad

Раздел о каждом классе состоит из собственно его описания, примеров и части, посвящённой "выработке интуиции". Часть про интуицию, пожалуй, наиболее интересна, но для того, чтобы действительно начать интуитивно понимать суть классов нужно попрактиковаться и, возможно, почитать статьи из подразделов "Further reading". Для практики есть упражнения, в духе "выразить join через return и >>=", весьма уместно размещённые по ходу изложения.

Всякие наблюдения, почёрпнутые из статьи и сопутствующей литературыCollapse )
birds

Как я готовил презентацию. Часть 1. LaTeX.

Когда наступила надобность сверстать слайды для следующей презентации — я наконец решил воспользоваться LaТеХ-ом (это уже далеко не первый мой подход, но пока самый продуктивный). В процессе работы у меня возникали различные мелкие задачи: нарисовать диаграмму, нарисовать синтаксическое дерево, нарисовать несколько деревьев "в разных позах", раскрасить исходный код, ну и наконец всё это представить в виде более или менее симпатичных слайдов.

Поскольку часто полученные знания были достойны того, чтобы ими делиться, а весь этот подход по сравнению с традиционным WYSIWYG (в лице Open или Microsoft Office) весьма любопытный и просветляющий — я решил написать на эту тему несколько постов. Они не будут претендовать на роль учебных, т.к. я постараюсь быть кратким и выражать самую суть, чтобы позволить прочувствовать эту атмосферу, заинтересовать и дать толчок к дальнейшему изучению. Кроме того, я сам только изучаю LaTeX, потому не могу служить авторитетом в данной области.

Итак, начнём с LaTeXCollapse )
birds

Haskell: комбинаторные парсеры Parsec.

Что же, в прошлый раз мы вспомнили формы записи операторов и рассмотрели написание простого вычислителя постфиксных выражений на Haskell. Следующим шагом является создание транслятора выражений из инфиксной формы - в префиксную. Однако, перед этим нам необходимо улучшить разбор выражения на токены, поэтому в данной статье мы рассмотрим монадические комбинаторные парсеры на примере модуля Parsec, а также использование их на практике.

Haskell postfix: часть вторая. Комбинаторные парсеры Parsec.Collapse )
Tags: , ,
birds

Exaile и opensource

В очередной раз убеждаюсь, что хорошая штука opensource :)

Я пользуюсь Linux Ubuntu и недавно сменил основной аудио-проигрыватель с Amarok на Exaile, поскольку Amarok, будучи KDE-приложением, несколько тормозил при запуске в моём Gnome. Exaile - является некоторым подобием Amarok под Gnome, вполне приятный плэйер, в котором есть интеграция с last.fm, неплохой менеджер артворков, нотификации, работа с мультимедийными клавишами out of the box, приятный внешний вид и т.д. После перехода я обнаружил, что некоторых мелочей мне не хватает и решил сделать их сам.
Что же, получаем исходный код для разработчиков:
svn co svn://exaile.org/usr/local/svn/exaile/trunk trunk
и вперёд! :) Заодно познакомлюсь с Python и GTK.

Захожу на канал #exaile в IRC, знакомлюсь с одним из двух разработчиков Exaile - sjohannes, пытаюсь задавать какие-то вопросы. В принципе ребята на вопросы отвечают, но помогать в разборе кода особенно не хотят. Что ж, посмотрю сам.

Поначалу я реализовал простенькую фичу. Заключалась она в добавлении возможности "Load", которая параллельно очищала плэйлист и добавляла в него выбранный трек или альбом: добавил menu item "Load" в контекстное меню, навесил на него обработчик. В итоге всё вылилось в такой вот ticket с патчем.
Особого успеха у sjohannes этот патч не имел - сказал, что не думает что это особенно нужная функциональность, но, тем не менее, на следующий день пришло письмо от некоего благодарного пользователя, так что хоть кому-то он да понадобился :)

Вторая же возможность, которую я добавил, была навеяна похожей функциональностью Eclipse IDE и сразу понравилась разработчикам. Я говорю о возможности "Show in collection", которая может быть полезна при желании быстро перейти от трека в плэйлисте к соответствующему треку в коллекции (это важно при прослушивании случайных треков, при этом иногда хочется послушать полностью ту группу, которая только что играла и, как следствие, нужно искать её в коллекции, что возможность делает автоматически). В Eclipse этой возможности соответствует переход от текущего редактируемого файла к его ноде в дереве проекта. В итоге, я сделал ещё один патч.

Эта идея и её реализация уже гораздо больше впечатлила sjohannes, и он сказал, что непременно включит её в следующий релиз (см. UPDATE). Что ж, буду рад :)

Хочется отметить, что Python, как и обещалось многими, оказался действительно интуитивно понятным языком, с хорошим синтаксисом. Практически все вещи, что я делал почти наобум - работали именно так, как полагалось. Мне кажется, что это весьма важное качество языка - works as expected. Насчёт GTK и биндингов под Python - pyGTK, тоже ничего плохого сказать не могу, хорошая документация, поработал с деревом и его моделью без особенных проблем. Хотя здесь, конечно, моё мнение весьма поверхностно и сравнивать мне не с чем, ибо я никогда не занимался разработкой GUI под Linux.

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

UPDATE: Функциональность "Show in collection" добавили в Exaile в ревизии 2358 ("svn log -r 2358").
  • Current Location: /home
  • Current Mood: geeky geeky
birds

Haskell Postfix: часть первая. Операторы. Вычислитель постфиксных выражений на Haskell.

Недавно я встретил упоминание ещё об одном сайте, предлагающем разные математические и программистские задачи. Это Sphere Online Judge (http://spoj.pl). От популярного нынче "Проекта Эйлера" (http://projecteuler.net) отличается тем, что вводятся не ответы на задачи, а на сервер загружается сам код, который там компилируется и запускается на тестовых примерах. Решение одной из задач этого контеста привело к довольно интересным для меня результатам, о которых я решил написать небольшой цикл статей.

Некоторое время думал для кого писать эти статьи и какова их цель. Наверное, их будет интересно прочитать людям, желающим познакомиться с функциональным языком программирования Haskell без особого углубления в теорию, а также тем, кто просто интересуется математикой, языками программирования, всякого рода парсингом и прочими околоакадемическими вещами. Уровень изложения материала - весьма доступный, надеюсь многое будет понятно людям, не особенно знакомым с функциональными языками программирования.

Содержание статей будет примерно таким:
1. Формы записи операторов (инфиксная, префиксная, постфиксная). Реализация на языке Haskell простого вычислителя арифметических выражений, записанных в постфиксной форме.
2. Преобразование инфиксной формы в постфиксную. Алгоритм "сортировочная станция" Дейкстры. Транслятор на Haskell. Использование комбинаторных парсеров Parsec для разбора выражения.
3. Реализация более полного эвалуатора, вычисляющего как арифметические выражения, так и функции.
4. Переход от вычисления значения выражения к вычислению типа выражения. Последствия в виде использования в реальной жизни для вывода типов выражения в ActionScript 3.

Тех, кому интересно - прошу к прочтению первой части :)

Haskell Postfix: часть первая. Операторы. Вычислитель постфиксных выражений на Haskell.Collapse )
Tags: , ,
birds

Geek-анкета

Вдохновившись начинаниями martreya в области анкетостроения, я тоже решил "вспомнить молодость", но при этом перейти на новый качественный уровень, вооружившись знаниями в области IT и околоайтишного юмора.
Итак, вашему вниманию предлагается небольшой окологикерский опросник. Я надеюсь, что ответы на вопросы принесут вам несколько минут радости и подтолкнут к интересным размышлениям :)
Отвечать желательно на большинство вопросов, однако если вопросы вызывают затруднение или непонимание - пропускайте без проблем.

Кроме этого очень welcome предложения по поводу улучшения структуры и содержания анкеты, например внесения в неё интересных элементов - рекурсий, замыканий и т.д. и т.п. :)

1. Кто вы? (можно писать несколько своих алиасов :))
2. Вы человек или робот?
3. Ваша любимая операционная система.
4. Куда деваются программы, когда их удаляют? Есть ли небесный сервер?
5. Что даёт вам Интернет?
Читать дальше и отвечать :)Collapse )
  • Current Music: Forseti - "Stern (Kim Larsen)"