CV (ORG)

CV: Anton Kotenko

#+CAPTION: Me
#+ATTR_HTML: :width 120px
#+ATTR_HTML: :height 120px

CV/assets/my_photo.jpeg

GitHubStackOverflowmeetup.comTwitter (X)InstagramSoundCloudVimeoYouTubeBandcamp (Artist)Bandcamp (Fan)Last.fmLiveJournalSpotify (Artist)Spotify (Listener)GoodReadsStepikCodeWarsExercismLanyrdTelegramBackloggeryInfiniteBacklogSteamDiscordDuolingoLinkedIn

Starting from 2003, I work as a FrontEnd & Software Developer, but that's since even earlier I discovered that developing user interfaces or quite anything visual and interactive, is my passion. I often preferred programming to gaming or watching TV or going outside (not to the extent, though, or else how would I find friends?).

It is thanks to this feeling of discovering something new and creating something new from the small little logical and mathematical parts, making something beautiful, appealing, friendly, and useful.

So during my work experience I developed many complex components, such as Treemap (or BinPacking) component for monitoring stocks implemented in Delphi, or the interface for Fast Fourier analysis of seismic signal in Borland C++, or the UI for first neural networks with no more than a dozen layers of neurons, or else your PC take weeks to compute them, then using now-forgotten protocols (e.g. Google Wave aka Federation One) for delivering immersive and friendly chat experience, then it would be JavaScript player for web animation tool Animatron, and through years it got me into developing generative art with functional programming languages in JetBrains for marketing purposes, so that design team wouldn't be required to manually produce all the variants of art, but just to overlook and rule the generation process.

From all this it could look like I loved mathematics all the way, but at the start I really didn't, and only now I find its laws everywhere around, including music, geometry, or theorem proving.

Timeline

JetBrains GmbH

FrontEnd & Software Developer

May 2016 — August 2024

In JetBrains, I mostly worked in Computational Arts Initiative, which is the team we formed by accident with the designer Serg Golovachev, with whom we've met while working in Animatron.

The purpose of the team is helping designers get rid of the repetitive tasks where marketing requires tons of variations of the same approaches. The technologies differed vastly between projects and years, always it was something with the Web Frontend though. If you ever used JetBrains IDEs then you there's a chance seen the splash screens produced by us or our folks from the CAI team, after the approve or even polishing by the Design Team, of course, or may be a background of some YouTube video telling your about Tips & Tricks in those IDEs. You can visit and try web versions of the generators yourself if you follow the link to the CAI below.

Aside from that, I was doing FrontEnd development for jetbrains.com website, some landing pages, or for example, some years of Developers Survey (2017 & 2018) are produced by yours FrontEnd Team representative in collaboration with designers.

  • Munich, Germany
Technologies:
JavaScript, React, Elm, HTML5 Canvas, GLSL Shaders, d3.js, Kotlin JS, Kotlin, DHall, PureScript
Tags:
#generative-art, #react, #redux, #elm, #glsl, #shaders, #html5-canvas, #animation, #dhall, #kotlin-js, #user-interfaces

Talks: :: The Basics of Generating Everything, Generative Animation in Elm, Tron : Minimalist UI for Generative Art, Noodle : Animation as Ramen, RPD: Reactive Patch Development, RPD: Reactive Patch Development v2.0, iElm @ JetBrains, About Git. That's easy

Projects: :: Open Elmsfeuer, Open Radiant, Tron GUI, Kvant, GEN UI Lang, Noodle

Animatron LLC

GWT/JS Developer

July 2011 — May 2016

At Animatron, I mostly developed the Web Player based on HTML5 Canvas technology, in pure vanilla JavaScript. Designing a friendly API was one of my tasks, bit not as important as integrating the player into the main GWT-Based Application so that it would reproduce properly and perfectly every feature that the Animation Editor had. That required some GWT coding too. Still, the player also could be used standalone and be embedded into websites, and has a sandbox with the code editor to provide user with an easy way to develop scenes.

  • Munich, Germany 2012 — 2016 (JetBrains GmbH)
  • Odessa, Ukraine 2011 — 2012
  • Boston, United States, MA
Technologies:
Java, Google Web Toolkit (GWT), JavaScript, HTML5 Canvas
Tags:
#html5-canvas, #javascript, #animation, #gwt, #svg, #graphics

Talks: :: Animatron Player API in Details, How to Grasp the Functional Way of Writing JavaScript

Projects: :: JS Player for Animatron

iPark Ventures

GWT Developer

April 2010 — June 2011

Programming and Architecture with GWT ﴾with mvp4g﴿, writing custom components. We developed two web portals: one for job-searchers and HRs, and another one is for pet-owners searching for the medical care or shelter or just to discuss general topics regarding their domestic animals. I am fortunate that the Team-Leads and folks from the company convinced my to give my first public talk on my knowledge which further really helped me in finding next places to work and led to Animatron & JetBrains in the end.

  • Odessa, Ukraine
Technologies:
Java, Google Web Toolkit (GWT), mvp4g GWT Framework, JavaScript, Python
Tags:
#java, #gwt, #mvp4j, #javascript, #python

Talks: :: Web-development with GWT & mvp4g, The Real JavaScript

Exectum LLC

Java EE / Web Developer

October 2009 — February 2010

The ExtJS-based FrontEnd for the Administration of a Billing Engine, which communicated to the server using Java-RPC.

  • St. Petersburg, Russia
Technologies:
Java, Java RPC, Spring, JavaScript, ExtJS
Tags:
#java, #spring, #java-rpc, #ext-js

FotoNation / Piclinq

Java EE Developer JavaScript Web UI Developer

June 2007 — June 2009

In FotoNation, we developed photo sharing service for Nikon, one of the very first of its kind. At that time, Nikon had released their first Photo Cameras with Wi-Fi support. I worked in the UI Team, responsible both for Java & JavaScript on the FrontEnd, the hardest were the Gallery page and the individual Photo viewer, like including Drag & Drop of images from the file system while there were almost no solutions for it at the time, beating Time Zones and other challenges.

Action System for the UI was the idea and implementation of ours since technologies we used provided no friendly and easy approach. // Development with Apache Wicket + JavaScript ‐ complex native‐JS+Java components and layouting scripts + action system, UI prototypes using JQuery. Components/Layouts are dynamically communicate with server‐side/Database.

  • St. Petersburg, Russia
Technologies:
Java, Apache Wicket, Java Server Pages, JavaScript
Tags:
#java, #apache-wicket, #javascript, #ajax, #jsp

Recommendations: :: #+BEGINQUOTE Anton is a very talented developer who developed a lot of Ajax-based Web UI as well as server-side Java code for myPictureTown service. His knowledge of web technologies and languages, such as Javascript+Ajax, HTML, CSS are on the expert level. He is a reliable, hard-working professional, and I recommend him without reservations. – Boris Berkman

#+END_QUOTE

I know Anton as a brilliant Javascript programmer with strong understanding of the most advanced concepts of this language. His Java skills are also allow him to write good Java code. It is a pleasure to work with such talented professional. – Sergey Kusnetsov

FK LTD

Web Developer

November 2006 — June 2007

CMS Project Development in PHP-JS-CSS for Real Estate Industry; Several small AJAX‐related projects.

  • St. Petersburg, Russia
Technologies:
PHP, JavaScript, AJAX, XML
Tags:
#ajax, #javascript, #php

EmDev LLC

Software / Web Developer

March 2005 — October 2006

Mostly driven by outsourcing, in this company I participated in J2EE Projects ﴾Spring, Hibernate﴿ from the scratch, writing components, usually trying out and using new technologies ﴾Ajax, JSF, Spring/Hibernate﴿, what used to do before, and keep doing till today. One of the main projects was UnlockAustin, which was a platform for introducing people the musical and theatrical events (but not only those) happening in Austin, Texas. Could be that Austin is a popular city nowadays due to this web portal :D. I also developed Delphi Visual Component for Stock monitoring (with realtime/dynamic data visualization support) using TreeMap Algorithm to be integrated into the client desktop application; Dealing with threads concurrency and a high rate of updates;

  • St. Petersburg, Russia
Technologies:
Java, Java EE, Enterprise Java Beans, Java Server Pages, Java Server Faces, Spring, Hibernate, Borland Delphi, Python
Tags:
#java, #java-ee, #jsp, #ejb, #jsf, #delphi, #python

FSBI VNII Okeangeologia

Software Developer Animation Creator for Conferences Scientific Researcher Interpreter

March 2003 — March 2005

By chance, I got to work at the GeoPhysics University at my age of 19, thanks to the friend. Among the work at the site, we did several travels with camping and monitoring seismic waves in real-time. The purpose was to predict earthquakes so that people would be aware in advance or would know if it is safe to build bridges at place. I developed the UI for calculating and configuring Fast Fourier Transform of the raw signal so that significant peaks would be easily noticable on the graphics. At the time I didn't know how significant this algorithm is in almost every technology (like breaking audio into harmonics, actually the same we did here, or converting digital pictures to their vector counterpart keeping almost the perfect representation of the form), but now I do. Also, it happend that someone noticed I know how to use Macromedia Flash and our Head of Science asked me to provide a friendly and descriptive animation of the tectonic plates colliding for his talks. After all, he invited me to be a guest of his talk with this animation in Arkhangelsk and hired the professional Animator to teach me further.

  • St. Petersburg, Russia
  • Xiao Nang Hai, China
  • Privetnoye, Ukraine
Technologies:
Borland Delphi, Object Pascal, C++, Assembler, Macromedia Flash
Tags:
#animation, #delphi, #macromedia-flash, #asm, #cpp

Talks

The Basics of Generating Everything

in 2023

@ Lambda Meetup @ JetBrains ('tail 23). Munich, Germany

How we can use waves a base for generating both audio or static graphics or video or something else, on the example of oscillators, how generic its concept is, and how in the end everything is a wave (and a monad!).

PureScript with a chance of Free Monads

in 2023

@ Lambda Meetup @ JetBrains ('head 23). Munich, Germany

This talk describes the use of Free Monad concept in the core of Noodle project of mine. The pros and cons of Free Monads are yet discussed a lot, but in my case they really helped in abstracting concepts while keeping the code user-friendly.

Noodle : Animation as Ramen

in 2022

@ JetBrains Design Talks '22. Munich, Germany

This talk was recorded during Covid and is about my project Noodle, for visual programming, which is the next version of RPD and now is in the development. The talk was a part of the next iteration of design talks from our company, and company helped a lot in its recording, but its production was finished later and its public promotion was cancelled due to the world-turning event such as declaring war by my own country, so we had no emotional/moral resources as well as reasons to proceed with it.

Tron : Minimalist UI for Generative Art

in 2020

@ JetBrains Design Conference '20. Munich, Germany

Tron, the grid-based UI we use for generators, developed by me and designed by Egor Alexeev from JB, given its structure could be defined both in JSON or Dhall, and iterpreted and rendered in Elm.

Generative Animation in Elm

w/Sergey Golovatschov

in 2019

@ f(by) '19. Minsk, Belarus

How we developed one of our splash screen generators for JetBrains in Elm language by making it manipulate WebGL shaders.

The Future of Web UI Development.

September 2018

@ FrontEnd Developers Meetup. Munich, Germany

Nothing less, nothing more, how I think we are going in the direction of using pure functional programming in the web.

iElm @ JetBrains

January 2017

Munich, Germany

JetBrains GmbH

The technology behind the notebook REPL iElm (see the previous talk), mostly regarding reverse binary engineering I had to perform to dig out type information from Elm internals.

iElm

December 2017

Munich, Germany

iElm is a web notebook-like REPL I developed for the Elm language so that it would be easier to learn it with having visual help of both its type system and values show even when they have complex visual representation like canvas graphics. The talk is a poem though.

Elm. The language itself and how it brings functional programming into web

September 2017

@ Frontend Developers Meetup. Munich, Germany

The syntax of Elm language, its benefits and downfalls. Not the talk I am proud of.

About Git. That's easy

(Про Гит. Вот так просто)

in 2017

Munich, Germany

JetBrains GmbH

The details of how the Git command line interface works with the interactive example of rebasing, as well describing other merging techniques.

Elm: 2D & 3D Graphics.

June 2017

@ Frontend Developers Meetup. Munich, Germany

How the new, and easy-to-learn, functional language for web, named Elm, brings the simple matchematical ways to do both 2D and 3D graphics in Web.

RPD: Reactive Patch Development v2.0

February 2017

@ JavaScript Meetup. Munich, Germany

Google

The slightly extended version of the talk about my visual programming project RPD

RPD: Reactive Patch Development

in 2016

@ JS Kongress. Munich, Germany

15-minute Lightning Talk about the visual programming project I developed in JavaScript, driven by reactive programming concepts (i.e. event streams).

Animatron Player API in Details

November 2013

@ Ultracode Munich Meetup _#4. Munich, Germany

Wayra GmbH

The details of how API of the Animatron JS Player is desined, with history, examples and sandbox demonstration.

How to Grasp the Functional Way of Writing JavaScript

(Постигаем функциональный JavaScript)

in 2012

@ Meetup @ e-legion. St. Petersburg, Russia

Discover functional approach in JavaScript as opposed to trying to apply Object-Oriented approach in non-friendly circumstances.

The Real JavaScript

(Настоящий JavaScript)

October 2011

@ Web Standards Days. Kyiv, Ukraine

Putting a stop in the discussion of prototype inheritance in JavaScript with the only best approach possible. Just kidding, it's not possible, but I wanted to share my findings. Be aware: contains octocats and penguidogs.

Fluxus

April 2011

@ Application Developer Days (ADD). St. Peterburg, Russia

Fluxus is the visual tool for developing interactive three-dimensional visuals, for example to react on music. It uses Scheme / Racket stack over OpenGL backend. This talk shares my inspiration with it and demonstrates features of the engine. However, my Jack (not a person, but audio Linux driver) failed at the time of talk, so there was no audio to rely on.

Web-development with GWT & mvp4g

(Веб-разработка на GWT и mvp4g)

April 2011

@ Application Developer Days (ADD). St. Peterburg, Russia

The huge (but as fun as possible) talk in three parts on how you could architect your own GWT application using mvp4 framework which simplifies many process and routing. Contains a story of how we did it at iPark.

Projects

Finished (to some point)

  • RPD

    Visual Programming for Generative Art, in JavaScript, driven by Reactive Streams Programming

    Status: Finished (to some point)

    Started: more than ten years ago

    (GH:rpd, RPD Docs & Demos)

    Tags: #javascript, #svg, #visual-programming, #generative-art, #reactive-programming, #kefir.js, #computational-arts

  • Tron GUI

    Innovative approach for generative art User Interfaces: now grid-based

    Status: Finished (to some point)

    Started: around two-three years ago

    (GH:tron-gui, Tron Constructor @ CAI, Computational Arts Initiative, Tiler @ CAI usage example, Neobeam @ CAI usage example, Plasmatic @ CAI usage example)

    Tags: #elm, #gui, #user-interface, #functional-programming, #dhall, #javascript, #generative-art, #computational-arts, #graphs

  • iElm

    Interactive Visual REPL for Elm language, showing types and SVG and even `elm-canvas` Graphics

    Status: Finished (to some point)

    Started: around four-five years ago

    (GH:ielm)

    Tags: #elm, #repl, #functional-programming

  • node-elm-repl

    CLI client for iElm to get the information about the type of the entered expression

    Status: Finished (to some point)

    Started: around four-five years ago

    (GH:node-elm-repl)

    Tags: #elm, #javasript, #binary, #repl, #functional-programming

  • JS Player for Animatron

    Status: Finished (to some point)

    Started: more than five years ago

    (GH:animatron-player)

    Tags: #javascript, #canvas, #animation

  • JetBrains Splash Screen Generator, with RPD

    Status: Finished (to some point)

    Started: more than five years ago

    (GH:jb-rpd-splash, SETI Generator in Action @ CAI, Computational Arts Initiative)

    Tags: #javascript, #visual-programming, #computational-arts, #glsl, #shaders

  • sametimed

    The Chat with Friedly-UI based on Google Federation One (a.k.a. Google Wave) protocol

    Status: Finished (to some point)

    Started: more than ten years ago

    (GH:sametimed)

    Tags: #java, #google-wave

  • nijiato

    Finger-recognition in LISP with OpenCV

    Status: Finished (to some point)

    Started: more than ten years ago

    (GH:nijiato)

    Tags: #lisp, #camera-tracking, #opencv

  • Open Radiant

    One of the first art generators for JetBrains

    Status: Finished (to some point)

    Started: around four-five years ago

    (GH:open-radiant, Computational Arts Initiative)

    Tags: #elm, #functional-programming, #computational-arts, #generative-art

  • Open Elmsfeuer

    Another one of the first art generators for JetBrains

    Status: Finished (to some point)

    Started: around four-five years ago

    (GH:open-elmsfeuer, Origami Generator in Action @ CAI)

    Tags: #elm, #functional-programming, #computational-arts, #generative-art

  • PegJS - FN

    The concept of functional PEG-driven parsers for JavaScript where every grammar rule is represented with a single pure function

    Status: Finished (to some point)

    Started: more than five years ago

    (GH:pegjs-fn, PegJS-Fn Playground)

    Tags: #javascript, #functional-programming, #parsing, #grammar

  • How to LiveCode (PDF / EPUB version)

    The markup for the 1st version of "howtoco34ptliveCode" book by co¥ᄀpt

    Status: Finished (to some point)

    Started: around four-five years ago

    (1st Edition compiled)

  • JavaScript Gardern

    I participated in translation of JavaScript Garden to Russian language

    Status: Finished (to some point)

    Started: more than ten years ago

    (GH:javascript-garden)

    Tags: #javascript, #translation

  • Japanese Language Reference in Russian

    (PDF, 300+ pages)

    Status: Finished (to some point)

    Started: more than 20 years ago

    Tags: #japanese, #pdf, #translation

  • Python 3.5 (RU)

    Translating Python 3.5 Reference @ Wikibooks

    Status: Finished (to some point)

    Started: more than 15 years ago

    Tags: #python, #translation

  • PDF version for how-to-livecode Book

    Laying out PDF for how-to-livecode book

    Status: Finished (to some point)

    Started: more than five years ago

    Tags: #pdf, #generative-audio

  • Finite State Machine engine+example for PureScript

    The code for the examples from my posts at dev.to

    Status: Finished (to some point) (Library)

    Started: around two-three years ago

    (GH:purescript-fsm, FSM Post @ dev.to, p. I, FSM Post @ dev.to, p. II)

    Tags: #functional-programming, #purescript, #user-interface

  • purescript-yoga-tree-utils

    Status: Finished (to some point) (Library)

    Started: during last year

    (GH:purescript-yoga-tree-utils)

    Tags: #functional-programming, #purescript

  • München-Flu

    Blog about Munich hidden places, cafes and nightclubs, in Russian

    Status: Finished (to some point)

    Started: more than five years ago

    (Telegram: Мюнхен-Флю)

Finished (but expect to continue developing)

Almost Finished (at least looks like it)

  • Noodle

    Visual Programming for producing Generative Art and more, with CLI & Web & VR (planned) frot-ends, written in PureScript

    Status: Almost Finished (at least looks like it)

    Started: more than five years ago

    (GH:noodle, Last working Noodle Demo)

    Tags: #purescript, #visual-programming, #functional-programming, #generative-art

  • purescript-blessed

    Port of JavaScript Blessed library, which is the powerful window management and component library for Command-Line-interfaces (CLI)

    Status: Almost Finished (at least looks like it) (Library)

    Started: during last year

    (GH:purescript-blessed)

    Tags: #cli, #functional-programming, #purescript, #user-interface, #components

  • purescript-doc

    The generic documents definition for PureScript inspired by Doc in LEAN (but it turned out PureScript has Dodo library which has the same purpose)

    Status: Almost Finished (at least looks like it) (Library)

    Started: during last year

    (GH:purescript-doc)

    Tags: #functional-programming, #purescript, #org-mode, #markdown

  • purescript-text-formatting

    The generic formatting library for PureScript which allows to produce Markdown, HTML, Org org LaTeX using single formatting API

    Status: Almost Finished (at least looks like it) (Library)

    Started: during last year

    (GH:purescript-doc)

    Tags: #functional-programming, #purescript, #org-mode, #markdown

  • purescript-grammar

    Reinventing PEG grammars and parsing in PureScript with ability to keep parsing on any error and keeping all the places of failure in the Syntax Tree, inspired by Lingo IDE by Pete Vilter

    Status: Almost Finished (at least looks like it) (Library)

    Started: during last year

    (GH:purescript-grammar, Lingo IDE Talk by Pete Vilter)

    Tags: #functional-programming, #purescript, #grammar, #parsing, #datalog

Managed (has no finished state and always actual in some sense)

  • My TouchDesigner VJing sources

    Status: Managed (has no finished state and always actual in some sense)

    Started: around two-three years ago

    (GH:touchdesigner)

    Tags: #touchdesigner, #visuals

In progress

  • purescript-org

    org-mode document definition for PureScript

    Status: In progress (Library)

    Started: during last year

    (GH:purescript-org)

    Tags: #functional-programming, #purescript, #org-mode

  • purescript-flex-layout

    Bin Packing algorithm for PureScript UIs

    Status: In progress (Library)

    Started: around two-three years ago

    (GH:purescript-flex-layout)

    Tags: #functional-programming, #purescript, #bin-packing, #user-interface

Stagnated (started, may be accomplished smth, but wasn't finished for a long time)

  • Kvant

    Translating Wave Function Collapse algorithm to Elm, and UI for it

    Status: Stagnated (started, may be accomplished smth, but wasn't finished for a long time)

    Started: around four-five years ago

    (GH:kvant, Kvant Demo @ CAI, Computational Arts Initiative)

    Tags: #elm, #gui, #generative-art, #functional-programming, #computational-arts

  • GEN UI Lang

    On storing UI components definitions for Generative Art in JSON or D-Hall format, for Tron GUI mostly

    Status: Stagnated (started, may be accomplished smth, but wasn't finished for a long time)

    Started: around two-three years ago

    (GH:gen-ui)

    Tags: #elm, #dhall, #gui, #functional-programming, #computational-arts

  • Web PD: PureData for Web

    A try to re-implement PureData UI and audio generation (using WebAudio) in the Web

    Status: Stagnated (started, may be accomplished smth, but wasn't finished for a long time)

    Started: more than five years ago

    (GH:web-pd)

    Tags: #javascript, #pure-data, #svg, #audio-generation, #visual-programming

  • Elm Symbolic Logic Game

    Symbolic Logic Playground, inspired by books of Lewis Carrol

    Status: Stagnated (started, may be accomplished smth, but wasn't finished for a long time)

    Started: around two-three years ago

    (GH:elm-symbolic-logic)

    Tags: #elm, #logic, #lewis-carrol, #game

  • Cayley Rust

    The driver for Graph Database `Cayley` written using one of the first versions of Rust for training

    Status: Stagnated (started, may be accomplished smth, but wasn't finished for a long time) (Library)

    Started: more than ten years ago

    (GH:cayley-rust)

    Tags: #rust, #graphs, #database

  • Vimeoid

    A client for Vimeo video service for HTC Hero (Android)

    Status: Stagnated (started, may be accomplished smth, but wasn't finished for a long time)

    Started: more than ten years ago

    (GH:vimeoid)

    Tags: #android, #java, #application

  • LeBanal

    Writing short stories on users' requests, in Russian

    Status: Stagnated (started, may be accomplished smth, but wasn't finished for a long time)

    Started: around four-five years ago

    (Telegram: Лё Баналь)

Just Started

  • WinniPeg

    Visual aid and editor for implementing PEG grammars (purescript-grammar) in PureScript

    Status: Just Started

    Started: during last year

    (GH:winni-peg, GH:purescript-grammar)

    Tags: #functional-programming, #purescript, #org-mode, #peg, #grammars, #parsing, #datalog

Draft

  • &ndORG

    An attempt to develop a user-friendly web ORG-mode editor while conversing most of its `emacs` profits and build UI on visual-keystrokes-concept

    Status: Draft

    Started: during last year

    (GH:ndorg)

    Tags: #functional-programming, #purescript, #org-mode, #grammars, #parsing

  • purescript-optics-interactive

    An attempt to demonstrate visually and interactively how Profunctor Optics work in Functional Languages like PureScript (mostly for my own self)

    Status: Draft

    Started: around two-three years ago

    (GH:purescript-optics-interactive)

    Tags: #functional-programming, #purescript

  • purescript-mahjong

    Implementing Riichi Mahjong game in PureScript

    Status: Draft

    Started: around one-two years ago

    (GH:purescript-mahjong)

    Tags: #functional-programming, #purescript, #mahjong, #game

  • PrimCivile

    Status: Draft

    Started: around two-three years ago

    (GH:primcivile)

    Tags: #purescript, #functional-programming, #game

Unknown