InterSystems Hackathon 2015

[Русская версия статьи изначально опубликована на Хабре здесь]

We have never arranged hackathon before, and none of us has even participated in such events. But if we bring ~50 of experienced COS developers to the same location for multi days training then why not try to apply their expertise for our good? Divide to teams, ask for ideas, and make them code some crazy projects in 1 day of hacking. [Well a little bit less than 1 day as we have found actually, but still idea is the same]

We are newbies in hackathon organization, so we asked for the external help – we have contacted Grigory Petrov (now technical evangelist of Voximplant, and former evangelist of Digital October center where he arranged several hackathon and similar events). He was willing to help, but we have discovered the harder way that he has to be in PyCon 2015 the same days we arrange Russian InterSystems School. Sigh. In any case, after long discussion with Grigory we have got clear understanding of all possible scenarios, of steps we need to proceed before hackathon, during, what to do, when and in which sequence. We were mentally ready for it.

InterSystems Fall School is usually 2-3 days long event. This year we were planning to start with almost 2 days of technical training and exercises (where most of training were doing various operations over the same dataset – database of posts). And after those 2 days participant supposed to be well prepared to use modern practices (using Angular for the client development, DeepSee and iKnow for analytics, and such).

At around of 17:00 of 2nd day we started hackathon: after brief introduction of rules and planned schedule, we started initial project teams assembly. The plan was  – get all possible ideas for projects from all relevant sources (i.e. our Russian University grants suggested projects, or suggested extension ideas to some already existing GitHub projects), start to discuss them and then choice project from the list, or any other relevant idea (which might be influenced by the list of suggested ideas).


If we review now all projects, which started, and categorize them by their sources, then we see that only small fraction were using topics of the suggested list. Most winners were developing their own idea.

Here is the list of projects at the start:

1.       Atom plugin; Suggested development of existing project
2.       CPM web site; Suggested development of existing project
3.       Geo-spatial indices Suggested but new
4.       Caché <> JS projection Brand new
5.       Arduino connect Suggested but new
6.       Call diagram Brand new
7.       B*-Tree map Brand new

We have proceeded a couple of intermediate stops where we have reviewed project advancement (i.e. at around 22:00 the 1st day, and at 11:00 the next day). And we stopped development at the 13:00 the 2nd day (due to logistics constraints), and not as if it would be spanning whole day hacking – the 17:00 the 2nd day. i.e. teams have only 20 hours for development, but apparently it was not a big deal for those who prepared well enough.

Each team had 5-10 minutes for presentation, and then ISC SEs decided which teams are winners. We have touch problem to choose – there were 4 brilliant works, each of them in other circumstances would be considered a winner. But we decided that Nikita Savchenko/Anton Gnibeda work this day was the best. Just because of astonishing development speed (only 1 day since the project inception) and the shown quality and achieved results.

hackathon-1 hackathon-2 hackathon-3

Here are more details about projects winners:

1st place

Nikita Svchenko and Anton Gnibeda are stars of our local community. They both participated in many outstanding projects, e.g

Although Nikita, Anton and Irina are all living in Kiev nowadays, but they usually not working on the same project at the same time, and this school was a rare chance for them to work together. But when they decided to form the team we (organizers) were tending to break a team and rebalance to others because other teams will be lacking of frontend skills we need elsewhere. However, at the end we decided to just see where this star team could go given opportunity and chance. [That was correct decision as we see today]

This project was not developing some precooked project as many other were doing. They have developed idea at the start of 2nd day of school, and then started coding immediately.

JavaScript Object Data Model — JavaScript object projection from Caché

Team: Nikita @ZitRos Savchenko, Anton @gnibeda Gnibeda, Irene @Gra-ach Mikhailova
GitHub repo:

There are 2 parts in this projects: server COS and client JavaScript. Server-side is simple REST data-points which allow get access to methods/properties of a classes. Client-side uses dirty JavaScript magic for extending client-side objects with the list of available server-side methods/properties. Which simplify debugging in the debugger


The beauty of this API design – it uses “proper”, modern paradigms in the JavaScript part, i.e. async calls and cascading where possible.

cjs.connector.connect("", "Samples", ["School2015"], function (cache) {
// creating a new object
 var p = new cache.School2015.Participant();
 p.Name = "Anton";
 p.Surname = "Gnibeda";
 p.$save(function(obj) {
   console.log("Participant with name " + + " saved!");
// executing instance method
 cache.School2015.Group.openById(1, function (group) {
   group.PrintInfo(function (res) {
// executing linq-like queries
   .where("Carma < 100 OR Carma > 140")
   .where("$id > 10")
   .exec(function(res) {

2nd place

As I already mentioned as a preparation step to hackathon we have formed a list of “interesting” task, which might be approached during hackathon. This was collected of Russian grants backlog and current GitHub projects backlog, with few additions of ideas from ISC employees.

And it was a good surprise for us when 1 of topics from grant backlog list was selected as a hackathon projects – geo indices.

Geospatial — spatial indices in Caché

Team: Andrey @Arechitsky Rechitsly, Alexander @adaptun Koblov, Alexander @Apogrebnikov Pogrebnikov
GitHub repo:

This was a long-staning request – we wanted that someone would implement support of geo spatial indices in Caché. There was no single reason why it could not be done eventually, given enough of expertise and opportunity. This hackathon was a good chance, because this team formed was overwhelmed with mathematics skills and COS expertise.

Thanks to this project now we have custom indices which internally use quad-trees for given set of geo pairs. Also authors have demonstrated simple Angular application, which visualizes quick search for the given box on map, and this search takes fractions of seconds even for the multiple millions in dataset.

In essence adding of such geospatial indices could be done this way:

  1. Add index for the pair of properties (longitude, latitude):
Index x1f on (Latitude,Longitude) As SpatialIndex.Index;
  1. Search for the given box of coordinates
 FROM SpatialIndex.Test
 WHERE %ID %FIND search_index(x1F,'window','minx=56,miny=56,maxx=57,maxy=57')
  1. Search for the given ellipse
 FROM SpatialIndex.Test
 WHERE  %ID %FIND search_index(x1F,'radius','x=55,y=55,radiusX=2,radiusY=2')
 and name %StartsWith 'Z'

This is only beginning of an implementation, obviously, and not in any case is pretending to be ISO 19125 compliant in this early development state. But that was an important 1st step, and is already usable in the COS projects

I am super excited about this particular project! It is not that polished as other winning projects, but could be influencing product in a long run…

3rd place

We decided to give 3rd place to 2 brilliant projects: call diagram visualizer and global map visualizer.

And worth to note that both these projects were directly influenced by Nikita Savchecnko’ UMLExplorer

Callsmap —call diagram visualization

Team: Oleg @doublefint Dmitrovich, Evgenia Litvin, Alexander @TsvetkovAV Tsvetokov
GitHub repo:

Oleg Dmitrovich liked how UMLExplorer visualized class hierarchy, and he wanted to extend it with call diagram functionality. They parse classes themselves, extracting method and function names, and then want to show call graph somehow. But unfortunately the components used in the UMLExplorer was not scalable enough to handle so many classes as Oleg had in their development namespaces (several thousand of classes, with the corresponding number of call edges). Thus he had to find another JavaScript component which could handle their situation and eventually they ended up using Viva Graph, which is very fast.

In some of their namespaces call diagram “galaxy” could be visualized this way:


Static picture does not show the whole beauty of a visualized diagram (which has nice animation effect in Viva Graph, in real life this graph animation is really astonishing)

CacheBlocksExplorer — global tree and database map visualizer

Team: Dmitry @daimor Maslennikov, Olga Kazantseva
GitHub repo:

Yet another project, which has been created on UMLExplorer engine — is that global tree, and database map visualizer created by Dmitry Maslennikov. Actually he had working globals b*-tree visualizer even before hackathon started (as a side effect of one question he has been asked at the Vladivostock training he delivered before). But once he showed his project at the start of hackathon the consensus was that we all want database map just like in old school “Norton SpeedDisk”. So Dmitry has implemented just exactly that map in 1 night.

global-tree disk-map

Now, as a side effect of this project development we have 2 very valuable tools, which might be useful both for education and for performance analysis.

It will be one of my favorite tools, I guess.

Other noticeable projects

There were 3 more projects which got to the final pitching stage in various conditions. Most of them are long-standing projects, and will be probably mentioned later, once some notable development would happened and went online. Not today

Here are their repositories in any case:

Atom COS Studio
Arduino Snippets


Now, several days after the hackathon completion we might derive cold hearty conclusions, and should admit that this hackathon experiment was more than successful, and produced 4 brilliant projects which will be of much help to community and to the product in a longer run.

Ain’t it cool?


Школа Инноваций 2015 – что такое хакатон?

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

Раз уж мы собираем в одном месте на несколько дней такое большое количество высококвалифицированных специалистов в разных областях платформы InterSystems, и раз уж мы традиционно заставляем работать слушателей в командах над разными заданиями, то почему бы не расширить такие практические упражнения и не сделать это тем, что сейчас привычно называют “хакатоном”?

Хакатон (англ. hackathon, от hack (см. хакер) и marathon — марафон) — форум разработчиков, во время которого специалисты из разных областей разработки программного обеспечения(программисты, дизайнеры, менеджеры) сообща работают над решением какой-либо проблемы. Сегодня хакатоны уже не относятся к хакерству, это просто марафоны программирования. Обычно хакатоны длятся от одного дня до недели.”

Источник <>

У каждого из нас (надеюсь) есть несколько идей проектов, которые хорошо бы было когда-нибудь сделать, но никогда не доходили руки. И вот хакатон на школе будет таким шансом. У вас будет целых 24 часа (что равно 1440 минут) чтобы в команде с коллегами максимально продвинуться в любом из направлений. Не обязательно пытаться завершить проект за эти первые сутки активного развития, но опыт показывает, что при правильной концентрации и при достаточном количестве ресурсов, за первые сутки можно сделать максимальное количество ошибок, и вырулить на наиболее правильное направление развития, продвинувшись максимально далеко. Чем если бы вы делали самостоятельно и в свободное от работы время.

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

Real path to success


Как это будет происходить?

Перед началом хакатона, будущие лидеры команд выходят и за пару минут пытаются “продать” идею другим (есть такая идея, нужны программисты с такой-то экспертизой, и художники с такой экспертизой). Если идея привлекла и команда сформирована, то они начинают суточный марафон, если его идея не стрельнула, и никто не вызвался помогать, то есть несколько альтернатив: автор продолжает в одиночку, он присоединяется к какой другой достойной команде, или организаторы формируют команду волюнтаристcки. (В конце-концов, куда вы денетесь из пансионата за городом? ;) )

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

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

За пару часов до конца марафона, организаторы проводят тренировочную защиту проектов, и лидеры команд учатся правильно и быстро продавать текущий (или будущий) успех проекта. По завершении марафона все лидеры команд выступают перед аудиторией и организаторами и “за пару минут” выступления пытаются теперь уже всех убедить, что их проект самый полезный и крутой. По завершении докладов команд организаторы совещаются и выбирают победителей/распределяют призы. В настоящий момент предполагается что будут 3 приза от InterSystems, и один приз зрительских симпатий.

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

Любые, в которых используются технологии платформы InterSystems (Caché, Ensemble, DeepSee, iKnow, whatever). Главным критерием в успехе хакатона всегда, всегда была хорошая идея (ну и правильные люди, собравшиеся в нужном месте). Мы открыты любой идее, если она релевантна InterSystems. Но даже если у вас нет ничего подходящего, у нас есть список тем, которые вы можете использовать для начала работ:

Вы можете выбрать любую из предложенных тем, и скооперировавшись с авторами этих проектов (большинство из которых будет на школе), продвинуть их максимально далеко за заданное время.


Персонально я бы обратил ваше внимание на запросы по расширению Atom-COS-Studio, CPM, или cache-map-reduce :)

Но вы, конечно же, вольны выбрать любую тему, даже не из названных списков. Главное, чтобы вам было интересно.

Итоги номинации InterSystems на Golden Byte 2014

golden byte26 апреля в Киевском городском Доме учителя состоялся финал Международного чемпионата компьютерных талантов «Золотой байт 2014», организатором которого является Компьютерная академия «Шаг». На конкурсе было 9 номинаций, и одна из них – NoSQL Expert – была посвящена использованию продуктов компании Intersystems: Caché и GlobalsDB.

Темой конкурса в этом году была «Changing the world», т.е. работы, представленные на суд жюри, должны были так или иначе улучшить, облегчить, обезопасить, упростить взаимодействие с окружающим миром. Итак, посмотрим, как же победители предложили изменить мир…
Читать далее

Репортаж с InterSystems Global Summit 2014

InterSystems Global Summit 2014С 16 по 19 марта в Орландо, Флорида, прошел ежегодный Global Summit проводимый компанией InterSystems. На это мероприятие съезжаются сотни разработчиков и партнеров, работающих с продуктами компании. В этом году собралось более 800 человек. Много кто был со своими родными, которым думаю тоже было чем заняться, потому что в округе много разных парков аттракционов, в одном из которых мы побывали все вместе.

Под катом небольшой фоторепортаж.

Конкурсы InterSystems: быстрее, выше, сильнее!

Конкурсы InterSystems
Этой осенью мы предлагаем студентам а также всем неравнодушным к технологиям InterSystems разработчикам поучаствовать сразу в нескольких программистских забегах:
CIS Student Innovator Awards 2013 – наш традиционный конкурс для программистов вузов InterSystems Campus.
“Золотой байт” 2014 – международный конкурс компьютерных талантов.
“IT-Планета” 2014 – международная олимпиада в сфере информационных технологий.
О том, что, где, когда и какие призы – добро пожаловать под кат.

Репортаж с InterSystems Global Summit 2013

С 7 по 11 апреля в г. Орландо, Флорида состоялся очередной InterSystems Global Summit 2013. Это ежегодное событие собирает сотни разработчиков и партнеров компании InterSystems со всего мира. В рамках саммита топ-менеджмент InterSystems объявляет об итогах работы компании за год, проводятся лекции и семинары с hands-out по новинкам и лучшим практикам в работе с технологиями InterSystems. Под катом небольшой фоторепортаж с InterSystems Global Summit 2013.
Читать далее

Грантовая программа InterSystems

Уважаемые студенты!
Закончилось скоротечное и беззаботное лето – впереди два долгих семестра напряженной учебы, гранита науки и адреналиновых сессий.
Компания InterSystems предлагает разнообразить учебный процесс и совместить полезное с прибыльным –
принять участие в грантовой программе InterSystems Campus, научиться новым технологиям и заработать неплохую прибавку к стипендии собственным умом.
Читать далее

GlobalsDB Challenge 4-й забег

29 марта в 18-00 по восточному времени (30 марта 3 часа ночи по Москве) начнется очередной турнир программистов GlobalsDB.

Формат мероприятия: 1 неделя на выполнение задания, с выкладкой его на github ресурс.

Приз победителю – $3500 и специальный пресс-релиз InterSystems в его честь.

Тема задания станет известна в день открытия турнира, а тема предыдущего GlobalsDB Challenge #3 была посвящена разработке инновационных решений.
Победу в нем одержала команда студентов НИЯУ МИФИ во главе с Антоном Лапицким, которая разработала движок документарной СУБД внутри GlobalsDB и предоставила Java API для работы с ним.

Вручение приза команде студентов - победителей GlobalsDB Challenge 3

Репортаж с InterSystems Global Summit 2012

В Орландо, штат Флорида США, с 19 по 23 марта состоялся InterSystems Global Summit 2012.  Это ежегодное событие, привлекающее тысячи разработчиков технологий InterSystems со всего мира.

Представляем фоторепортаж главы филиала InterSystems в России СНГ и странах Балтии Николая Кречетова.
Осторожно! Под катом много фотографий.
Читать далее

GlobalsDB programming contest, 3-й конкурс. 1 неделя, 3500 долларов

Уважаемые программисты!
Приглашаем вас принять участие в 3-м конкурсе GlobalsDB Challenge.
Два месяца назад состоялся второй GlobalsDB Challenge, о чем ранее уже сообщалось. Из 6 конкурсных проектов 4 созданы российскими программистами, один из них и выиграл главный приз.

Компания InterSystems планирует сделать турнир традиционным. Почему бы и победы российских программистов не превратить в  хорошую традицию?

Читать далее