понедельник, 19 ноября 2012 г.

Учимся problem solving: Rubik Hackathon.


О целях хакатона.

У меня в окружении есть несколько человек, которые любят математику и имеют развитое аналитическое и алгоритмическое мышление. Они хотели бы участвовать в создании интересных программных решений, но при этом имеют достаточно ограниченные навыки программрования. А как известно - лучший способ улучшить свои навыки прогаммирования - программировать. Так же участвующие имеют возможность поразвивать свои problem solving skills.



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

четверг, 15 ноября 2012 г.

Вспоминая дискретную математику...

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

Я довольно последовательно улучшаю знания и навыки в трудных для меня областях математики, и, несомненно, для меня одним из наиболее трудно дающихся, а потому наиболее желанных разделов математики является комбинаторика. Так же в этом посте я буду касаться рекуррентного анализа и метода математической индукции. На первый взгляд всё очень просто - несколько формул, которые понятны, бери и применяй... Но вариативность задач комбинаторики просто сводит с ума. Малейшее изменение в условии зачастую полностью меняет подход к решению. И еще. В комбинаторике очень часто приходится обращаться к интуиции.

суббота, 3 ноября 2012 г.

Прощай BizSpark...

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

Сегодня запусился korobov-labs.com

Для дальнейших эксперементов вместо сервера запущенного на старом ноутбуке с выделенным IP нам требуется нормальная веб площадка. Как это водится, теперь все мы "ветаем в облаках".. а именно вместо обычного хостинга используем облачный instance от Amazon AWS. Итак, все эксперементальные сервисы буду располагать на ресурсе
http://korobov-labs.com ну и его поддоменах.

пятница, 26 октября 2012 г.

Kyiv PyCon 2012


На прошлых выходных прошла одна из самых мной любимых конференций. Kyiv PyCon 2012. Двухдневная конференция, хоть и привлекает довольно молодую аудиторию обычно, тем не менее интересна для меня очень, потому что во первых она о Python и местами о Computer Science. Обе темы мне интересны, плюс - пайтон комьюнити мне всегда нравилось ) Я не думаю, что был единственным C# разработчиком там, но думаю таких немного, особенно учитывая накладку событий.

четверг, 25 октября 2012 г.

Управление временем и сознанием.


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



Основные сложности с которыми сталкиваешься следующие:

  • как не разрушить режим дня? 
  • как научиться сосредотачиваться на проблемме длительный промежуток времени не давая мысли блуждать хаотично? 
  • как не переставать мечтать, но двигаться к реальным целям? 
  • как сохранить порядок в вещах и мыслях при том что ты постоянно решаешь задачи, ходишь к репетитору, программируешь, гуляешь с детьми, читаешь несколько книг параллельно и вообще сталкиваешься с большим количеством дел которые нужно сделать на фоне того, что твой мозг занят обучением? 
  • как натренировать смелость и выносливость необходимые для борьбы со сложными задачами, которые неочевидно как решать? 
  • как в течении дляительно времени сохранять режим тренировок/занятий иностранным языком/дисциплинированно читать запланированное/поставить нужные эксперементы и отчитаться о них?
  • и прочие родственные сложности

пятница, 19 октября 2012 г.

AForge.NET & Accord.NET

Сегодня обнаружил, что AForge.net и Accord.net доступны даже в nuget (aforge, accord).
Для тех, уто вдруг забредет случайно в мой блог на всякий случай поясню:

NuGet is a Visual Studio extension that makes it easy to install and update third-party libraries and tools in Visual Studio

среда, 17 октября 2012 г.

Обучение для меня стало работой на этот месяц.


Я нахожусь в творческом и оздоровительном отпуске. И использую его по зазначению - программирую, учусь и улучшаю здоровье.

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

Dart is celebrating bithday

Нашел ролик в Гугл Блоге посвященный дню рождения языка Dart. Раньше я слышал о нем только как о лабоработоном эксперементе гугл. Год назад был первью, потом относительная тишина, и вот:


вторник, 9 октября 2012 г.

Хорошая книга оказалась Effective Java (2nd Edition)...

Я конечно не Джавист, как принято у нас называть фанатов или, скорее, знатоков Java. Однако это очень широко распространенный язык, часто попадающийся в гетерогенных системах, и в реальной жизни на нем нужно писать. Потому что в реальной жизни проекты гетерогенные. Да и вообще, нельзя быть дотнетозомби или питонозомби (не говоря про С/C++зомби). Нужно быть развитым и не зацикливаться. И если писать на чем то, то делать это с любовью.

понедельник, 8 октября 2012 г.

GNU-GPL and Free инструменты для ученых и студентов. Python, Maxima, Octave и не только...

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

Сначала немного о питоне

Питон местами слабоват в плане производительности, многопоточности, и конечно не идеален как язык, как не идеален любой другой. И тем не менее я люблю его, хотя и пока еще знаю хуже чем C# например. Причин, почему я  использую Python, будучи разработчиком на C# и немного на Java и C, много.

воскресенье, 30 сентября 2012 г.

Переворот сознания.

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

Изменился.

Я не могу точно сказать для чего я это сделал. Потому что вернее будет сказать почему. Но обо всем по порядку.

Я мечтал работать с кодом и идеями, воплощенными в коде. Через терни студенческой нехватки денег и отсутствия минимальной материальной базы я смог добиться этого. И идея захватила меня. Мечта росла и крепла и мне хотелось быть сильнее как разработчик и инженер, быть эффективным в продакшине.

пятница, 21 сентября 2012 г.

Наивная классификация. Naive Bayes multiclass classifier.

Предпосылки.

Проходя курсы и изучая материалы по машинному обучению и обработке натуральных языков я конечно же неоднократно сталкивался с задачами в которых нужно было применять классификаторы. Самым простым случаем классификатора, который мне попался, был пример из лекции про Sentiment Analysis с помощью которого решалась задача бинарной классификации текса (позитивный или негатиыный). Я выполнил это задание, чему-то научился, но мне этого было мало, и я набросал прототип и поставил пару эксперементов с использованием мультиклассового Naive Bayes классификатора. В этой статье я хочу описать то, что и как получилось.

среда, 19 сентября 2012 г.

Знания и опыт. Или ценность "ползанья на пузе"

Когда я был на 2-м курсе у меня небыло ни компьютера ни удобных условий для обучения, и тем не менее, я был захвачен идеей научиться программировать. А информации как учитья небыло никакой. Ну прочел несколько умных книжек, на которые хватило студенческих коепеек. Иногда даже купленных невпопад. Ну поэксперементировал с различными моделями донести какой-то отпрограммированный функционал конечному пользователю. С теми моделями, которые были доступны для меня в компьютерном классе.. NT 4.0, Visual Basic, Delphi, DHTML+JavaScript, WSH ... В общем не лучший и не самый передовой зоопарк технологий. И тем не менее, мне нравилось...

воскресенье, 26 августа 2012 г.

Нехватка computer-science tools для .net платформы.

Современная реализация .net очень хороша. Конечно нет предела красоте узора. Но .net действиетельно мощная и крутая платформа, плюс для нее очень много всего реализованно как самим Майкософтом так и 3-rd part сторонами. И мэйнстримовый для .net язык C# очень радует. Сделан действительно хорошо. Будучи так же знакомым с Java, Python и С я бы сказал, что C# наиболее зрелый и развитый инструмент для создания целых семейств бизнес решений. Однако есть свои "но". Для меня, например, очень важно что .net не реализован для unix.

воскресенье, 5 августа 2012 г.

Bogosort algorithm.

Сегодня я узнал что в computer science наряду с нормальными и практически применимыми подходами к упорядочиванию (sorting) элементов есть еще один алгоритм сортировки (bogosort) который всерьез применяют, по крайней мере для оценки сложности и при обсуждении вопросов в глубоком CS а так же для сравнения с другими алгоритмами...  Но то детали.

четверг, 2 августа 2012 г.

К слову о незрелости NLP библиотек на C#

Работая в grammarly нередко сталкиваешься с задачами natural language processing. Как разработчик, посвятивший несколько лет разработке на C# и осзнавая его мощность я конечно был заинтересован в том чтобы разобраться, а какие решения есть для C# или вообще .net.

А оказалось что в сети с этим не густо. А то, что таки было найдено зачасую, после пристального взгляда не выдерживает критики... Сами посмотрите на код этого токенизатора:

четверг, 19 июля 2012 г.

Книги... По следам прошедшего года.

В течении последнего года мои знания и представления о софтверной инженерии изменились. Эволюционировали. Очень много понятий  и областей узнал обзорно. Некоторые копнул полгубже. Было много чего - изучение онлайн курсов, посещение семинаров, общение с отличными профи. Но это ведь только направляющие вещи. Важным является не только то, чтобы понять куда можно копать. Более важная составляющая - это писать код. Ставить эксперементы. Непонимая пытаться понять. И читать. Что касается кода и эксперементов - это тема для других статей. Эту же я хочу посвятить своим спутникам этого года, а именно - книгам, которые я читал и продолжаю читать. Книгам, которые мне нравятся. Тем, которые я считаю нужными и полезными для разработчика и человека, полного духа исследования.
И тем, которые мне хочется прочесть.

среда, 7 июля 2010 г.

New exam passed (edited)

Итак, я сдал ещё один экзамен.

Почему именно этот? Потому что именно он стоял на пути к более высокому левелу тестирования (70-563), но не смотря на то, что я заработал всё, что необходимо для сдачи 70-563, в мои планы входит уделить внимание сертификации 70-502, посвященной WPF, ибо нынче эта область в которой я работаю, и мне интересно, приятно и полезно получить сертификат. Итак, в планах - получение сертификатов 70-502,70-563. И надеюсь эту программу реализовать в течение лета. На текущий момент у меня есть сертификаты 70-536 и70-505.

среда, 12 мая 2010 г.

Разбор полётов

Итак, подготовка позади, теперь аналитика. Во первых, скажу, что я очень рад, что сдал, так как давно хотел это сделать. Во вторых,скажу, что из 1000 возможных при 700 минимальных баллах я набрал не особенно много - 815 баллов. Причем,среди моих знакомых есть множество, у кого балл более 900, и один, у кого 1000. И набрать эти баллы ВПОЛНЕ РЕАЛЬНО! Суть в том, что подготовка к этому экзамену может быть прстроена по разному + как повезёт с вопросами. Итак, как сдать этот экзамен и набрать как можно больше баллов? Подготовка должна включать:

70-536 Позади

В общем, Таск Комплит.

Тест пройден успешно, балл меня устраивает. Я очень рад, спасибо за внимание.

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