Earlier I wrote about issues with the new offer from Google - the "Inbox" mail service. Recently Google released updates for its Inbox web and Android clients. As a result, it works almost perfectly. In particular:
val values in Scala are, by specification, const, or final in Javaspeak. That means once assigned, they cannot be re-assigned. This doesn't mean that the assignment has to be something dull or simple. In fact, you can have a large piece of code doing all sorts of calculations with the result assigned to your value. Do it like this:
When it comes to SQL queries, there are two ways you can execute them from your program, whether it targets Android or not. One is ad hoc - create an SQL statement that finds your data (or manipulates it), with all the parameters of the actual query clauses already embedded in it. For example:
Recent versions of Idea (14 at the time of writing) play along quite nicely with SBT (Simple Build Tool - not so simple in fact). It can load project definitions, even when multiple subprojects are defined, and work with them. Unfortunately, it does the reading only once, when you import the project into the IDE. If you update your definitions afterwards, for example, when you add a new dependency, Idea might not be aware of the change. How to fix that?
I wrote earlier regarding the new product from Google - the Google Inbox. GI is still work in progress, so some features present in the familiar GMail are absent or broken. I counted the "mute" functionality among them, because there was no obvious menu for it. Mute allows you to ignore conversations, which you don't particularly care about. This can be very useful when you are subscribed to various mailing lists.
I gave Eclipse its fair chance. To be honest, I gave it more than one chance over the years. Each and every time it was a disappointment. It is actually amazing how broken the beast is. I tried various version and every time I tried to do anything that was even slightly out of simple Java editing using Eclipse' own project format, the thing failed in the most miserable way. For example, I tried repeatedly to install Android plugin so that I could write code for the platform.
DSL (Domain Specific Languages) are, as the name implies, software development languages created for a specific niche or limited domain. Where could one use a DSL? For example, when writing a library to evaluate highly complicated financial products, it might be very beneficial to have a language designed to describe such products. The language will check correctness of a new product, will allow sharing of common pieces of definition, will be able to generate output that can be fed into other systems (risk calculation, trade processing, graphic representation).
Scala is a great language. One of its strengths is the effortless interoperability with Java. However, given the fact that the language is still evolving, some compromises are needed in order to facilitate cooperation between Scala in Java. In effect, sometimes you can't write 100% pure Scala solutions. Sometimes you have to add some Java code to your project, even if very simple one. There are two common examples of this: enumerations and annotations.