Some of us ConSol Labs guys enter this year’s Devoxx, the largest
Java conference in Europe. You can expect some blogging about the
state of Java, the newest trends and cool stuff in general out there
for this week.
The first two days of Devoxx are the University Days with talks
covering some topic in depth within 3 hours. The organization is
perfect for a conference of this size (3000+ attendees). But the great
rush will start on Wednesday, when the “real” conference is
starting. These two days are a good chance for warming up, with some
in-depth treatment on various topics.
In this talk, Neal Ford from Thought Works gives some insights for
best programming practices, approaching it from various angles. This
three hour presentation was divided into two parts: First Neal
shows some Mechanics for increased productivity, after the break he
showed 10 real work themes he encountered in his daily work.
The Mechanics parts focussed on four themes: Acceleration, Focus,
Canonicality and Automation. Most of this came out of his book The
Productive Programmer with quite a bunch of very concrete hints
ranging from tool support to recommendation how to arrange one’s
environment.
My favourite (because new to me) snippets were:
Key promoter plugin
for IntelliJ IDEA which popups with the key shortcut as soon as you
use the equivalent menu item. It can be even configured to forbid
using the menu usage if there is there is a shortcut for it and the
user was notified a certain time. A rigourous approach for sure, but
I think it helps you in thinking in shortcuts.
Plugins for Windows
Explorer and OS
X Finder for blending in a
command line window.
Use Screen dimmers for avoiding to let the flow go away, e.g.
Jedi
concentrate
for Windows.
Switch off baloon tipps on Windows. Use the registry or Tweak UI.
Selenium IDE is
not only good for end user testing but also for debugging. Since
bugs usually occur in the middle of a web application, a certain
amount of repeating steps are necessary to reach it. Use Selenium
IDE to record it onces, and replay it as often as the bug is
fixes. Selenium scripts are also good for reproducing bugs reported
by the QA department.
In second part Neal talked about best practice collected from real
world experiences. This was a rather entertaining collection of
experiences, with short anecdotes like the angry Monkey experiment (from Dave
Thomas) and cargo cults. Very good start for this year’s Devoxx.
This three hour crash-course on MongoDB started with the basics on
MongoDB, a NoSQL DB implemented in C++. It
is a document style database with consiciously abandons joins and
transactions. This way, scaling can easily be done by replication and
sharding without much synchronisation overead. All this is done
transparently for the application developer. Documents are formulated
in JSON and can be arbitrary complex. One of the nicest feature is,
that MongoDB’s “schema” can be changed dynamically on the fly. There
are many other functional aspects, which were shortly explained:
findAndModify
for atomic identifaction and update of documents.Conclusion: If you need to persist large data sets with the
opportunity for horizontal scaling and if you don’t need hard
transaction support, MongoDB seems to be a valuable alternative to the
traditional RDBMS approach.
This thirty minute talks gives a crash-course on programming plugins
for VisualVM, which is based on the
Netbeans RCP. Free-style demo without savety net, but at the end
Jaroslav managed to get the plugin running, which visualized the CPU
frequency of a local linux box. I think, a VisualVM plugin for
Jolokia would be a nice addition to the
portfolio and this shouldn’t be that hard.
Mahout is a framework for machine learning, implementing different algorithms for data mining applications. Typical use cases include pattern mining and data classification, such as for mail classification, news topic discovery or recommendation systems.
Isabel gives a general introduction into the steps and challenges of machine learning, how the basic algorithms work and how Mahout employes hadoop to deal with large data sets. Unfortunately, a scheduled half hour does not allow any time for detailed and in depth presentation of Mahout.
#Hadoop Fundamentals: HDFS, MapReduce, Pig, and Hive (Tom White)
The cloud/NoSQL track starts with the basics of Hadoop and finishes by comparing two data anlysis projects from the Hadoop ecosystem.
Hadoop provides a redundant storage of massive data and computation platform using commodity and potentially unreliable hardware.
The base of Hadoop consists of two core parts:
Hive and Pig target data warehousing with different approaches.
Typical usage includes analyzing large log files, such as produced by Apache HTTP Server.
Both use HDFS and Map/Reduce underneath.
Hive:
Pig:
#Groovy update, ecosystem, and skyrocketing to the cloud with App Engine and Gaelyk! (Guillaume Laforge)
This is another three-topics-in-one talk, starting with changes in recent Groovy releases, mentioning a few hot projects from the Groovy ecosystem and finishing with an introduction to Gaelyk.
A summary of my favorite changes. For details, check the Groovy JIRA.
@Immutable class Coordinates { Double lat,lng }
@Grab(group = "org.mortbay.jetty", module="jetty-embedded", version="6.1.0")
def startServer() {
def src = new Sever(8080)
...
}
Number.metaClass {
multiply { ... }
}
Multiple assignments and tupels for return values
Example: Swap values with (a,b) = [b,a]
class Foo { boolean asBoolean() {..} } ; !new Foo()
Gaelik is a Groovy based extension for the Google App Engine (GAE).
The framework uses Groovys’s servlet support (Groovlets), Groovy templates for the view and wraps the GAE services (mailing, image manipulation, datastore, memcache,…).