Imagine shipping a nice wooden coffee table from one part of the world to another. It seems easy enough and relatively trivial at the outset. The customer pays for it and you simply place a coffee table in a box, wrap it up nicely and put it on the next plane or shipping service and wait for it to get to the destination. Now, imagine that when it gets halfway to its destination, one of the countries the table is passing through has a law that, for security reasons, the coffee table must be disassembled into each individual part, photographed and then put together again. This becomes a much more difficult problem. To overcome this hurdle, you now must prepare a set of instructions on how to safely take apart the coffee table and put it back together again. You can only hope that your instructions were perfect and that they were followed precisely, otherwise the coffee table won’t arrive in the condition that it left. At the next country on its path, there is a ban on transport of wooden coffee tables, so now your coffee table must be taken apart into the individual parts and metal parts must be fabricated to precisely match the original dimensions. The original gets thrown away or recycled. It’s not the same coffee table, but it still is a coffee table.
At the next country, there is a ban on transport of metal coffee tables. Now, the process must be completed again with wooden parts fabricated to precisely match the original dimensions. Now the coffee table looks identical to the original, but you’ve thrown away your original coffee table, built and thrown away a metal coffee table, and built an entirely new coffee table to match the original.
The recipient opens a box weeks later and finds a simple wooden coffee table inside and a bill for a discarded identical coffee table, a metal coffee table and the labor to build two tables that were thrown away.
“What in the world happened?” the customer would ask.
Once you’ve sent one of these coffee tables, you’ll discover that shipping a coffee table may not be the best idea. It may be a better idea to send the plans to a coffee table builder at the destination so that the coffee table can be built at the destination and the whole process can be far cheaper and faster.
Coffee Table Problems in the Software World
In the software world, situations like the coffee table problem happen frequently when data is moved from one complex application to another. It can be very difficult to figure out which approach is best until many have been investigated, or in some cases, tried and failed.
With CentralSync — the configuration software for In|Sync used in previous versions — there were some technical stumbling blocks along the way. For example, CentralSync could configure tunnels and In|Sync parameters pretty well, but it was unable to combine those factors and determine whether or not the configuration would actually run as intended at the intersection. This required more guidance and training from experienced professionals at Rhythm Engineering to determine whether or not there would be any hidden side effects or unintended behaviors.
Just like the circumstance where metal or wood coffee tables are banned during shipping, having the intelligence from In|Sync help us validate the configuration wasn’t a feature that was possible without building an identical second copy of In|Sync into CentralSync because of a fundamental difference in programming language models. CentralSync was built in C++ with Windows Desktop Application technology and In|Sync was built in Microsoft’s .NET system. While the two systems can eventually be made to work together, it’s a very time consuming process to get right and prone to error. This was the technical equivalent of shipping coffee tables and building multiple copies of the tables in wood and metal to overcome the transit laws. This was seen as too much of a challenge to take on due to our upcoming investment into In|Traffic.
In|Traffic also has a different programming language than In|Sync because we’ve built a world-class server system utilizing Java technologies while the In|Sync intelligence at the cabinet takes advantage of Microsoft’s .NET system.
>> Read More About In|Sync Here
What Could We Do to Get These Two Systems to Communicate?
After extensive research, we found an open source technology that allows us to automatically convert In|Traffic code built in Java into code that works directly on the .NET platform with our In|Sync cabinet software. It’s the technical equivalent in our earlier story of simply sending our coffee table plans to our destination country and building the table for the customer on location rather than building and scrapping coffee tables by trying to ship them through countries that did not permit our tables to get through.
The project that created this technology is named IKVM (https://www.ikvm.net/). It’s a play on words by taking the term JVM, which is the acronym for Java Virtual Machine, and picking the two adjacent letters to J in the alphabet and creating IKVM. It has the capability of taking standard Java applications and converting them into native .NET software that also allows previously written .NET software to directly interface with the translated output. One of the most impressive demonstrations of this system is that it can flawlessly convert Minecraft, one of the world’s most popular Java-based games and a complex application, and convert it to .NET.
Ultimately, with IKVM in hand, we could write one single piece of software in Java that would work for us at the cabinet with the rest of our .NET technologies and in our Java-based configuration software. We are pleased that we could choose the right technologies for the cabinet and our configuration application and not have to compromise on the wrong technology for either solution or build two identical models. This ability to share code gives us the brand new ability to test and validate our tunnels and parameters inside our configuration software with the same exact scrutiny that would occur at the cabinet and do so in a language that every system understands.
We are very happy to utilize an open source project like IKVM to help our products and services be industry leaders today and in the future.