- E-mail: shaman.sir@gmail.com
- Location: Munich, Germany
- Phone: +49 176 84181188
- Website: https://shamansir.github.io
- Birthday: 4 March 1984
GitHub – StackOverflow – meetup.com – npmjs – GoodReads – Twitter (X) – YouTube – Instagram – SoundCloud – Vimeo – Bandcamp (Artist) – Bandcamp (Fan) – Last.fm – LiveJournal – Spotify (Artist) – Spotify (Listener) – Stepik – CodeWars – Exercism – Lanyrd – Telegram – Backloggery – InfiniteBacklog – Steam – Discord – Duolingo – LinkedIn
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
- Tags:
- Talks:
- Projects:
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
- Tags:
- Projects:
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
- Tags:
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
- Tags:
- 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
- Tags:
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
- Tags:
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!).
- Video (EN)
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.
- Video (EN)
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.
- Video (EN)
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.
- Video (EN)
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.
- Slides (EN)
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.
-
Slides (EN)
-
iElm in action (EN)
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.
-
Slides (EN)
-
iElm in action (EN)
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.
- Slides (ru) (RU)
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
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.
-
Slides, v.3 (EN)
-
Video (EN)
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.
- Slides (ru) (RU)
- Slides (en) (EN)
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.
- Video (RU)
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.
-
Slides (RU)
-
Video, p.1/3 (RU)
-
Video, p.2/3 (RU)
-
Video, p.3/3 (RU)
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
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
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
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
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
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
Tags: #java, #google-wave
nijiato
Finger-recognition in LISP with OpenCV
Status: Finished (to some point)
Started: more than ten years ago
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
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
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
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
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
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
Tags: #example, #demo, #gwt, #mvp4g
Interests
Generative Art, Visual Programming, Japanese Language, Functional Programming, Animation, Generative Music, Theorem Proving