Interview: Konstantin Chikarev on Epictetus Database Manager
Hi Konstantin, can you start by introducing yourself?
Hi Geertjan! My name is Konstantin Chikarev. I have worked as a Java web developer for the past 5 years. I live in Moscow, in the Russian Federation.
Antilogic Software -- what is that company all about?
Antilogic Software was established at the end of November 2007 by myself, though I will be gathering a small team around me in the future. My idea is to create a database tool with a free core and low-cost plugins for developers and database administrators.
However, this isn't my primary work and I'm developing Epictetus in my spare time at the moment, but I think that a production release is not far off.
Why did you decide to develop a database tool?
The project was originally started by my friend and ex-collegue, 4 or 5 years ago, when he made some useful components for database monitoring. Then he decided to create a cross-platform and cross-database tool, similar to TOAD and PL/SQL Developer. He later froze the project and gave it to me.
I used part of that project to create Epictetus. I'm sure that developers needs the strongest possible database tool to work with, and not only under Windows. I am certainly one of them, anyway.
The application used to be called "Chronos" and now "Epictetus". What's the story?
Yes, first it was "Chronos". It wasn't my idea. Chronos is a Greek god, the father of other gods. Sounds epic. :) But for most people it is associated with time. You can find many applications with that name for time management, periodic scheduling, etc. So, I decided to change the name while the product is still unknown. Epictetus is harder to remember but unique, I hope. I think Epictetus was very interesting. He was born a slave and became free and a philosopher. Marcus Aurelius considered him his second teacher, after his father.Which databases does Epictetus support?
It supports Oracle, MS SQL, MySQL, Firebird, and HsqlDB. I started with these because I use them (or have used them) myself, so I can run the tests myself. I am going to add support for as many as possible. The next databases to be supported will be H2 and PostgreSQL. Anyone is free to contact me and request support for a particular database to be added.
What are the tool's basic features?
The current release provides the following main features:
- Query execution. All, current or selected parts of queries can be executed, with the results and execution time then being shown. There are buttons to load the next page or all data. You can change the limit in the connection settings.
- Database object browser. Tables, views,
procedures, triggers, sequences, etc, can all be browsed.
The most useful feature here is the loading of primary and foreign keys. After they are loaded, you can see highlighting (primary keys marking red and foreign are blue), edit data (update, delete and insert rows), and jump to the table to which the foreign key refers:
You can view BLOBs and CLOBs and save them on disk:
And if the BLOB contains a serialized Java object, you can browse its content if you have such a class in your CLASSPATH. But this is a secret trick!
- Monitoring. Based on JFreeChart, you can add your queries, set their execution periods, and select output fields. This feature can be used for visual statistics, but is not an official feature yet, because I want to make it more user-friedly.
Also note that Epictetus has a multithreading model: while your query is running, you can edit text or open another window for further work.
The tool is based on the NetBeans Platform. Why?
First of all, the NetBeans Platform is based on Swing. I just tried it once and immediately understood that we had spent a lot of time creating functionality that the NetBeans Platform already has out of the box for free. For example, right now I am working on project support. I have implemented the NetBeans "ProjectFactory" class and added my implementation to the NetBeans Lookup:
public class EpicProjectFactory implements ProjectFactory
private static final String PROJECT_FILE_NAME = "project.epic";
public boolean isProject(FileObject fileObject)
return fileObject.getFileObject(PROJECT_FILE_NAME) != null;
public Project loadProject(FileObject fileObject, ProjectState projectState) throws IOException
// load project
return new EpicProject(fileObject, projectState);
public void saveProject(Project fileObject) throws IOException, ClassCastException
// save project
From this point onwards, the user is able to load and save projects. Projects can also be opened and saved and recently closed projects can easily be opened.
What are the NetBeans Platform's most useful features to you?
- Plugins. Since I want to write these myself, this feature is "a must".
- Library management. I can easily include everything that NetBeans provides into my project.
- Action Wizard. Just three clicks and I have a new action, with a menu item and toolbar button.
- Finished interface. Out of the box, it is is ready for production (docking windows, menu and toolbar, and user interface for customization).
Also, I am going to use the NetBeans editor, instead of ours.
What are the plans for the future?
I am going to promote the product and make a community section on the site where end users will be able to choose what they want to see in future releases. Here are some ideas already:
- Add support for all JDBC-compliant databases.
- Create plugins for developers with features of different databases.
- Make plugins for DBAs (for monitoring, migration, replication).
- Perhaps I will add scripting (now I am inclined to JavaFX).
- Soon I will make an interface for creating views, sequences, triigers and other objects, to add auto-complete and PL/SQL execution support.