Migration to Java 9 Modules or jigsaw is what everyone of us will be doing, eventually. Currently, there is a split package problem: it is not allowed to have the same package in several modules (aka .jars), no matter if the package is public or not.
java9c is a plugin for Gradle, that helps to detect possible conflicting packages.
The DSL Way
There is alternative way to add a support for a language to an IDE wihtout writing any IDE specific code or a plugin. The idea is to back and forth project an unsupported language to some supported language by an IDE. All IDE features and refactorings are projected too. See more read a detailed description in the main post.
Tags: the dsl way
Experimental project to create a DSL with Kotlin, as well as a tool to generate a DSL code from a given input data. The DSL is created to preserve identical map, so that a generated DSL produces exactly same input data as it was used as input. Thanks to the property, the toolset can be used to refactor an input data with the help of Kotlin, DSL, and IDEs. The Gradle plugin is created to simplify usages of the toolset.
Classes Versions Checker
A tiny java utility to make sure a project was compiled to the right java class versions. It scans application folder/.jar recursively into archives and generated easy-to-understand reports.
DSLs are nice to develop with Kotlin. I created a tiny DSL for XML generation. Next I did a DSL-styled XML data binding in Kotlin.
TeamCity Book Review
I was in charge of reviewing the Learning Continuous Integration with TeamCity book about JetBrains TeamCity, back in 2014
GitHub status API published for TeamCity. Nowadays TeamCity team created Commit Status Publisher plugin with nearly same functions
Probably the first plugin for TeamCity done in Kotlin. A runners set for TeamCity to support Node.js stack builds. Provides Node.js, NPM, Grunt, Gulp, PhantomJS builds.
Do you use IntelliJ IDEA projects with Kotlin? I did. So this is a meta-runner for TeamCity to configure TeamCity’s IntelliJ IDEA Project Runner to compile your Kotlin project with specified Kotlin compiler version.
There is also an example build configurations to implement mirroring of Kotlin builds on your local TeamCity server.
Do you like your build to run in container or VM? This plugin provides build runners for TeamCity to have your build step running in Docker container or in Vagrant box. We adopted running CI builds in Docker with the help of TeamCity.Virtual plugin.
A set of Ant tasks to generate Service Messages for TeamCity. Builds with Gradle and proguard, depends on TeamCity Open API. Thanks to proguard the package is only a few KBs.
Do you have dependencies between modules in IntelliJ IDEA project that can be removed without any errors? I was needed to solve this task on-and-on during some refactorings. To make things easier the plugin for IntelliJ IDEA was created.
Named Java Frames
In a normal java thread dump you see calls stack. But you do not see anything else. For example, you cannot know what project, repository or other context was around the stack. For my projects it was vital to know the context for each thread. Thread names did not play well for it. The library solves it via tiny classes generation.
This is mostly to simplest way to create IntelliJ IDEA project for new TeamCity plugin unless you use something from Documentation
What’s included is a sample IntelliJ IDEA project where your plugin .jsp files will be green as well as Spring Framework configuration files (of course if you are on IntelliJ IDEA Ultimate).
Android Battery Tweet
I was wondering to create an application for Google Play and Android. The idea was to have an application that make a phone scream loudly when battery is about to discharge. I was a twitter mega-fun that time, so I made the app to post on Twitter to notify everyone a phone is about to discharge.
You may still try it on Google Play
I was using Windows that time and Spotify. I also had Pioneer audio AV-receiver connected to home network. I wanted to listen Spotify via it. So the goal was to capture all playing sounds from by PC and stream it to the AV-receiver.
I created a tiny (and ugly) HTTP server, found the way to force AV-receover to play an HTTP .mp3 stream form my server. Made use of .mp3 library to encode what-u-head sound stream into an .mp3 stream. Found a way to capture what-u-hear audio stream on Windows. Made a commandline utility out of it. That is a hackathon quality project that solved my need.
It turned out I used it only a few times, quite soon I switched to Mac OS X and started using Air Play for that.
TeamCity NuGet Support
At the very beginning at JetBrains we decided to try implementing the initial support of NuGet for TeamCity. The project was made under Apache 2.0 license and soon was included into standard TeamCity package. I was supporting and developing the project from the beginning. Currently TeamCity team is supporting it.
Open-source .NET library to generate Service Messages for TeamCity. Available in NuGet
Traffic Lights Controlling
I did hacks on hardware with my friends. We used Arduino to create a USB device that controlled our transistor bridge that controlled relays. Next we used re-programmed WiFi router to work as the HTTP server. At some point the router had to be returned.
Next we implemented another device on Arduino that was able to toggle lights via UDP commands. Unfortunately, our Arduino was too small to fit HTTP server and DHCP inside.
Dynamic System Investigation Software
I did dynamic systems investigation software for may Master and and PhD degrees. The software was turning a dynamic system into an oriented graph, next we were running graph algorithms to extract system properties from it.
Project was done in C/C++ and C#. Close-sourced.
Journal Differential Equations and Control Processes
For nearly 15 years I help to maintain the web site of the Journal Differential Equations and Control Processes journal. Back in years (approx. in 2004) I invented a static site generator for the journal. It was not possible that time to use anything else but static HTML on our university hosting.
You may find most of my projects on GitHub