CV: Anton Kotenko

Me

GitHubStackOverflowmeetup.comnpmjsGoodReadsTwitter (X)YouTubeInstagramSoundCloudVimeoBandcamp (Artist)Bandcamp (Fan)Last.fmLiveJournalSpotify (Artist)Spotify (Listener)StepikCodeWarsExercismLanyrdTelegramBackloggeryInfiniteBacklogSteamDiscordDuolingoLinkedIn

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 both with JavaScript + GLSL, as well as functional programming languages in JetBrains on 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.

Of course, there were Java EE or GWT or React-driven application, and even Python was among my skills.

Skills

Java, JavaScript, React, Python, Animation, Elm, PureScript, Functional Programming

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

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, GWT (Google Web Toolkit), JavaScript, HTML5 Canvas

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, GWT (Google Web Toolkit), mvp4g GWT Framework, JavaScript, Python

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 for Java EE, JavaScript, 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, JSP (Java Server Pages), JavaScript
Recommendations:

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

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

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, EJB (Enterprise Java Beans), JSP (Java Server Pages), JSF (Java Server Faces), Spring for Java EE, Spring + Hibernate, Borland 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++, Assembly Language, Macromedia Flash

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

(–)

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

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, #comp-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, #comp-arts, #graphs

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: #wfc, #elm, #gui, #user-interface, #generative-art, #functional-programming, #comp-arts

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, #javascript, #binary, #repl, #functional-programming

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, #user-interface, #functional-programming, #comp-arts

JS Player for Animatron

Status: Finished (to some point)

Started: more than five years ago

(GH:animatron-player)

Tags: #javascript, #html5-canvas, #animation

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, #generative-audio, #visual-programming

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, #comp-arts, #glsl, #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, #open-cv

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, #comp-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, #comp-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, #parsers, #grammars

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, #gui, #user-interface

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, #databases

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, #app

Elm Goose Driven Tutorial

The Sources for Elm Goose Driven Tutorial

Status: Finished (to some point)

Started: around four-five years ago

(GH:elm-goose-driven-tutorial, Elm Goose Driven Tutorial @ YouTube)

Tags: #elm, #tutorial, #html5-canvas, #graphics

Showdown Blog

Blog engine driven by JavaScript + XSLT

Status: Finished (to some point)

Started: more than 15 years ago

(GH:showdown-blog)

Tags: #xml, #xslt

elm-bin-pack

Bin-Packing algorithm written in Elm

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

Started: around two-three years ago

(GH:elm-bin-pack)

Tags: #elm, #bin-packing

Exercism

Solutions for some Exercism tasks

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

Started: more than five years ago

(GH:exercism)

Tags: #training, #elm, #haskell

GWT-mvp4-layouting-demo

A demo for the GWT+mvp4 Talk

Status: Finished (to some point)

Started: more than 15 years ago

(GH:gwt-mvp4-layouting-demo)

Tags: #example, #demo, #gwt, #mvp4g

Interests

Generative Art, Visual Programming, Japanese Language, Functional Programming, Animation, Generative Music, Theorem Proving

Links to this page
#generative-art #react #redux #elm #glsl #glsl-shaders #html5-canvas #animation #dhall #kotlin-js #gui #user-interface #javascript #gwt #svg #graphics #java #mvp4g #python #spring #java-rpc #ext-js #apache-wicket #ajax #java-jsp #php #java-ee #java-ejb #java-jsf #borland-delphi #macromedia-flash #asm #cpp #4 #purescript #visual-programming #functional-programming #reactive-programming #kefir-js #comp-arts #graphs #wfc #repl #binary #pure-data #generative-audio #google-wave #lisp #camera-tracking #open-cv #parsing #parsers #grammars #rust #databases #android #app #tutorial #xml #xslt #bin-packing #training #haskell #example #demo