NOTE: Blog has moved to new location at

MapDB 2.0 update

To begin with, there is a small notification of changes. From now on I am moving the MapDB related posts to a new blog at Here is new RSS. This blog will be used for my interests outside MapDB (most likely it will stay empty).

September 25 2015 | Read more

MapDB 2 beta 1 is out

Beta 1 is out. It brings storage format and API freeze into MapDB 2.0 branch. This format and API should be supported for several years to come. Stable MapDB 2.0 will share the same format. Also latter 2.1 release with performance optimizations and long-term support will use the same.

June 29 2015 | Read more

MapDB 2 is near

Format and API freeze for MapDB 2.0 is just a few weeks away. I did not write much about the new generation of MapDB (aka JDBM) and it is time to fix that.

June 16 2015 | Read more

MapDB 1.1 and sun.misc.Unsafe

High performance Java projects usually use sun.misc.Unsafe to directly manipulate memory. It is not officially part of JDK, so it does not work on Dalvik and some other JVMs. Also it might cause JVM to crash in cause of an error, making debugging and user support hard.

July 01 2014 | Read more

MapDB Roadmap and near future

MapDB 1.0.0, the first stable version, was released last week. Some people tweeted "Christmas came early". For me it is the culmination of 5 years work. Lets open another chapter and have a look at MapDB in the near future.

May 14 2014 | Read more

CodeFutures: the new MapDB home

MapDB was a hobby project for almost 12 years (under the name JDBM). Last year I quit my daily job and started on MapDB full time. The plan was to finish MapDB 1.0 and build a consultancy business around it. I also wanted to work from home and spend more time with my family.

January 21 2014 | Read more

MapDB 1.0 will be released in January

If you follow me on Github, you may have noticed I started preparations for 1.0 release. Some features were moved after 1.0, a long manual is slowly growing and number of remaining TODOs is shrinking fast.

November 06 2013 | Read more

MapDB and the road ahead

Five months ago I left my regular job and started on MapDB full time. I have been quiet since, so it is time to refresh my plans with MapDB.

September 25 2013 | Read more

MapDB 0.9 format support

MapDB has currently semi-stable branch 0.9.x. My plan was to keep stable API and storage format. However to support some new features (store size limit, async API) I have to make changes in storage format, which are not backward compatible. Also now I work full-time and project is evolving much faster than I expected.

July 01 2013 | Read more

MapDB Reloaded

Last month I wrote about the future of MapDB. It was not very optimistic. MapDB is my hobby project and the time I could give it is severely limited. This led to some absurd situations: despite having a very fast db-engine I would not publish any performance benchmarks. I also discouraged possible users so I would not have to deal with support emails.

June 19 2013 | Read more

MapDB Future

MapDB 0.9.x was released a few weeks ago. Now that the project enters usable alpha phase, is time to talk about the future.

April 23 2013 | Read more

3 billion items in Java Map with 16 GB RAM

One rainy evening I meditated about memory managment in Java and how effectively Java collections utilise memory. I made simple experiment, how much entries can I insert into Java Map with 16 GB of RAM?

November 12 2012 | Read more

JDBM4 renamed to MapDB

'JDBM' (Java Database Manager) name has long history. Original 'DBM' (Database Manager) has been introduced in seventies. Java version started in 2001 and first stable version was introduced in 2005. Until 2012 it has dozen forks including JDBM2,3,4 and ApacheDS.

November 03 2012 | Read more

JDBM4 now open for public

After 4 months of development JDBM4 is now stable enough for the first public testing. Now is good time for any early adopters or possible contributors to take JDBM4 for a quick spin.

September 16 2012 | Read more

Announcing JDBM4

The JDBM3 project has been quiet for the last few weeks, but a lot has happened in between. I talked about JDBM3 at the Geecon conference in front of 50 people. I also met a handful of JDBM users. Results were not very encouraging. JDBM3 is very fast, but it is synchronized on single-big lock and does not scale well with concurrent access on multi core CPUs. And for most people this can be a deal breaker.

June 08 2012 | Read more

Kotlin pre-pre-pre alpha survival guide

Jetbrains recently open-sourced Kotlin, so you may want to take it for a quick spin. Here are a few tips and workarounds. I worked with Kotlin last few weeks as volunteer tester, I am not connected with Jetbrains.

May 24 2012 | Read more

JDBM 3.0 alpha 1 released

I am proud to announce first alpha of JDBM3. JDBM is embedded Java key value database with more than 10 years of history. It provides java collections (maps, sets and lists) backed up by disk storage. And it has unbeatable performance and simplicity.

April 24 2012 | Read more

Pixy2 updated

Pixy 2 System is an astronomical image examination and object identification application. It process raw images and makes basic corrections. It can also identify asteroids, comets and find variable stars. It was developed by Seiichi Yoshida, I took liberty and updated it a bit.

April 23 2012 | Read more

JDBM 3 is coming

A few weeks ago I started work on JDBM 3 at github. Main goal is to improve simplicity and performance. JDBM3 is packed with new features and changes. Difference from JDBM2 is even bigger than between JDBM1 and JDBM2. But there is still policy 'no test left behind', so we should enjoy great stability similar to previous releases.

April 23 2012 | Read more

scala problems

I love Scala, it lifted my capabilities and made me incredible productive. But after 18 months I found a few problems.

April 23 2012 | Read more

Galway Sky Atlas 1st edition

I am pleased to announce first edition of Galway Sky Atlas. It is an opensource community free a beer atlas. It coverts 200000 stars down to 10.5 magnitudes. It also contains 10000 objects from SAC deep sky database. Atlas comes on 473 charts with same layout as first edition of Uranometria.

April 23 2012 | Read more

Quick look at upcoming Parallel Collections in Scala 2.9

Scala 2.9 should be released "in weeks", so I took recent snapshot for quick spin, to see how it work with my open-source project. Upgrade was easy, nothing compared to 2.7. Just replacing scalac and scala-lib jar files. I encountered three minor problems:

April 23 2012 | Read more

JDBM 2.1 and beyond

JDBM 2.0 was released just a few weeks ago, now is time to start working on new version. JDBM 2.1 will bring fixes and performance improvements, but keeping file format and API compatible with 2.0.

April 23 2012 | Read more

Enumeration problem at Scala 2.8.1

Scala is great language and I love it. But sometimes one can found strange stuff in there. A few weeks ago I updated Scala library in my project from 2.8.0 to 2.8.1. There were a few minor issues. But also one really big one. It took me a few hours to find reason why my tests are failing.

April 23 2012 | Read more

JDBM2 released

I am proud to announce stable release of JDBM2 key-value database. It is similar to BerkleyDB Java Edition, but is free as beer and under Apache 2 license. JDBM2 provides 'java.util.Map' stored on disk.

April 23 2012 | Read more

JUnit3 Scala TestCase

There is number of new testing framework for Java and Scala. For example JUnit4, TestNG, Spec, ScalaTest... I never liked annotation driven test cases or 'story driven tests'. So I wrote my own TestCase which works with JUnit3 and can use some Scala features.

April 23 2012 | Read more

SwingUtilities.invokeAndWait with return value

Threading in Swing is tricky. In many cases it is necessary to make a calculation on EDT thread and receive result back. For example components should not be created outside of EDT, or values should be accessed in thread safe way.

April 23 2012 | Read more

RangeSet and huge datasets

Most of collections does not use memory efficiently. But there is simple compression trick to store virtually unlimited data sets. And there are practical implementations.

April 23 2012 | Read more

Using Ant and Javac without installation

Installing Ant and JDK can be pain. This post shows howto make Ant Java compiler part of your project. So it does not require installation. Only one external dependency needed to make build will be JRE. This setup makes it also much easier for new comers to start on project

April 23 2012 | Read more

Piccolo and SVG

I was thinking how to improve symbols on map. Star clusters, nebulas etc have complicated signs and it is difficult to draw them with plain Java2d. I decided to use SVG vector graphic to draw those symbols. Using vector editor is way way easier then coding in Java2d.

April 23 2012 | Read more

More realistic view on Groovy

Realistic evaluation of Groovy based on half year usage in hobby projects.

April 23 2012 | Read more


I am not sure if you know Pixy2. It is very good program for making photometry on CCD image. It can also identify starts on CCD image. But Pixy2 depends on external XML parser and does not start with JRE 1.6 (internal XML parser).

April 23 2012 | Read more

Label layout algorithm

One of most common problems in astro cartography are labels. There is many objects on map and many of them have an label. In highly concentrated areas (galaxy clusters, Saggitarius) it is hard to place label without overlaping with other objects and labels.

April 23 2012 | Read more

Writing fast NIO webserver

I wrote fast and simple web server using New I/O and Kilim microthreads. No locks, no blocking, no channel selector. With a few optimization tricks, it is probably fastest webserver written in Java.

May 31 2012 | Read more

Spring and memento pattern

Memento pattern is common way howto save and restore object state. It is used in many applications including Eclipse and Netbeans. Implementation in OpenCoeli is easy to use, Spring friendly and very simple.

April 23 2012 | Read more

Spring bean name resolver

OpenCoeli is heavily using Spring IOC framework. It is great, but is missing one feature: inverse bean name resolver. Why it is good to know bean name? For example for configuration, if you inject different bean you just need to save bean name. Also it can be very useful for logging.

April 23 2012 | Read more

Astronomy and GIS

There is entire engineering discipline called Geographic information system, it is all about how to draw maps and present various informations on Earth's surface. About GIS was written many books.

April 23 2012 | Read more