FlashFiler to RDBMS Data Converter

Transformer_Flux.svgOur work at a Oasis Digital often includes migrating legacy code or data into a new system. We often find off-the-shelf tools, or create ad hoc single use tools to assist that process, but occasionally something reusable emerges.

We recently needed to convert a lot of data from a legacy FlashFiler database (an Turbo Pascal then Delphi specific database from the 1990s) to something more modern. We took the opportunity to make a tool for this purpose outside of any specific customer project, so we are able to release it for anyone to use. It looks like this:

ffrdbms4

We have released this data converter as open source software. You can download it, or learn more, on its page on GitHub.

 

3D Configurator Intern Project

One of our specialties at Oasis Digital is in rules-based configurator systems of various types. For example, we have worked on complex model number configuration systems, quotation systems with complex sales commission rules, graphical system of configuration widgets, and other similar tools.

For our 2013 intern program, one group (led by Zach Kimberg) worked on a 3-D rules-based configuration system. This project lasted about half of the summer, and got far enough along to produce a visually interesting demo, shown below. The screenshot doesn’t really do it justice – it is dynamic and continuously moving.

swing-set-snap

This works entirely as a web application, with no use of flash or any other plug-in. It relies on WebGL, built-in to most modern web browsers. It is coded entirely in JavaScript, with help from AngularJS for the user interaction and Three.js for the 3-D model management. The 3-D model is hacked up and simplified from a 3-D model example from a website we have forgotten.

3d-config-still

We see this as a proof of concept showing that it is possible today to build complex rules-based configuration systems, with a rich visual display, that run easily in a browser. It is no longer necessary to build difficult-to-deploy desktop software for this type of need.

Update: We recently added this short video demo of the configurator. Unfortunately the video doesn’t show the rules in action – there are rules to block certain combinations of settings in the configuration. The video shows a slightly jerky rotation of the swing-set – in the live software, it is completely smooth. Enjoy:

 

The Clojure Programming Language

What is Clojure?

Clojure appeared in 2007, which makes it still a relatively new programming language. Clojure is a dialect of LISP, modernized to include built-in support for numerous data types beyond lists.

Power, Simplicity, Efficiency

We find Clojure appealing in numerous ways:

  • Clojure is built on the JVM (Java virtual machine), enabling extensive straightforward integration with thousands of Java libraries and Java runtime environments.
  • Clojure data structures are immutable. The lack of mutability first sounds like a limitation; but it is actually an enormous benefit. Clojure’s data structures are persistent, which means they implement “change” very efficiently.
  • As a result of the above, Clojure code is often much easier to reason about than it might initially appear.
  • Startlingly, Clojure code often requires fewer parentheses than a direct translation of the same code to Java.
  • Yet Clojure also requires considerably less code to accomplish the same work compared to many other languages; Clojure is in a unusually high level language.
  • Therefore, Clojure makes efficient use of the most expensive resource, developer time.
  • Closure is also available in a variation which compiles JavaScript, making it possible to write a program entirely in Clojure, and share parts of it between server and client execution.

Caveats

Although Clojure is a general-purpose programming language, and can be used to write any program which could be written ] in (for example) Java, there are a few caveats:

  • Clojure is currently dependent on the Java virtual machine, which means these deployments involve running a Java virtual machine. For some organizations this is extremely easy, for others it is a burden that would prefer to avoid.
  • Some developers are very troubled by LISP-like syntax, even though Clojure code is not particularly parentheses-dense compared to other non-LISP languages.
  • Compared to mainstream languages, Clojure has been much smaller community, fewer libraries, fewer companies and developers which can be hired to work on it, and so on.

Clojure Development at Oasis Digital

Our Experience:

  • Oasis Digital developers have been using Clojure since approximately 2010.
  • We have used Clojure in our summer intern program.
  • We have delivered project prototypes in Clojure.
  • We have written and deployed utility projects, such as an Github->JIRA issue converter, in Clojure.
  • We use software in Clojure to process Oasis Digital time and billing data.

We recommend considering Clojure for certain types of projects:

  • Systems with complex logic, for which Clojure’s power and expressiveness are very beneficial.
  • Data services behind front-end web systems, suitable for local or cloud deployment.
  • Applications where concurrency in important – it is greatly facilitated by Clojure’s immutable data structures.

Our Clojure developers and consultants can take on an entire project, or assist with one already underway. Please contact us to discuss your Clojure project.