-
Breaking the Rules - Making Java Fun with Mirah

With any luck this should become a series of postings on new and emerging languages and I am going to begin on familiar territory with, somewhat counter intuitively, one of the most widely adopted languages of them all; Java. Java has gained a bad reputation within the communities of the up and coming dynamic languages; Python, Ruby and their peers, for its perceived bloat, boilerplate and seemingly endless determination to over-engineer. Goslings decision to recycle much of the C++ syntax for his new language was a pragmatic one at the time, aiming to ensure the language the best possible chance of survival and adoption in a world heavy on C family programmers. It worked, oh did it work. Unfortunately for Java though a largely unforeseen movement was taking place within the backstreets of programmer land where language terseness, readability and programmer enjoyment were being prioritised over a programs computational efficiency.
“Java is C++ without the guns, knives, and clubs” - James Gosling, Co-Inventor Of Java
-
Distributed Ruby - Exploiting ‘Enterprise’ Software
Enterprise.
Even saying the word can send shivers down the spine of the ‘enlightened’ developer. It can conjure up thoughts of gargantuan XML configuration files tied down with lashings of buzz, pomp and sales patter. Of documentation and usage so verbose that the eyestrain is almost palpable from the mear tonguing of the term. However, sometimes, on rare occasion, our gut is wrong and our reaction foolish because out there in ‘enterprise’ land are some truly fabulous nuggets of software. In this posting I will be looking at one such ‘diamond in the rough’ and seeing how we can exploit it in rubyland.Distribution.
In the sense of networks within software systems, distribution has near boundless uses; session sharing, shared processing, file access, logistics, analytics, etc., however its implementation is non-trivial. It is, in fact, a bloody hard problem to solve requiring schemes for; networking, fail-over, discovery, clustering, events, backups, locking and more besides.
