Introducing the spray-can HTTP server/client

Posted by Mathias in [spray]

27 Sep 2011

While continuing our work on spray (the lightweight framework for building RESTful web services with Scala and Akka) as well as our own commercial application built on top of it, we have come to more and more succumb to the “Scala way” of writing software. Our code has become more functional, our data models more immutable and everything just somehow more...

spray 0.7.0 released

Posted by Mathias in [spray]

27 Jul 2011

After a lot more time than originally planned the second spray release has finally hit its scala-tools.org shelves. It features a great many changes, extensions and general improvements over the first release, mainly:

  • Compatibility with Scala 2.9.0-1 and Akka 1.1.x
  • Independence from Akka Mist
  • A client module for consuming other REST APIs
  • Support for gzip/deflate compression, authentication/authorization (incl. HTTP Basic...

BlueForest - A dark color scheme for IntelliJ IDEA

Posted by Mathias in [misc]

15 Jun 2011

Up until last November I had been working exclusively with bright editor backgrounds for all my development work. Mostly because the IDEs I used always came with a dark-on-bright default color scheme and I didn’t bother fiddling around with color settings, especially since modern syntax-highlightings makes appealing color schemes much more complex to create.
Then however, at the beginning of the last...

Micro-Benchmarking Scala Code - The Easy Way

Posted by Mathias in [scala]

19 Apr 2011

While evaluating, which of the numerous available Scala JSON implementations to use for spray once again I found myself in need of some tool simplifying the writing of proper JVM benchmarks.
Manually writing benchmarks for the JVM that actually measure what you intend to measure is much harder than it initially appears. There are quite a few rules to keep...

Introducing spray - RESTful web services on top of Akka

Posted by Mathias in [spray]

31 Mar 2011

For some time now there has been increasing buzz around Akka as “the platform for the next generation event-driven, scalable and fault-tolerant architectures on the JVM” (http://akka.io). With the Akka team recently having released version 1.0 of its product more and more JVM developers (with Scala devs certainly being the majority) are turning to Akka as the enabler for building...

parboiled 0.11.0 released

Posted by Mathias in [parboiled]

21 Mar 2011

Today parboiled, the PEG parsing framework for Java and Scala, received an update to version 0.11.0. You can find the full changelog here.

The main focus of this release has been the improvement of the RecoveringParseRunner, which had a number of unfortunate bugs in the previous release. Error recovery is now a lot more stable, we use it...

parboiled 0.10.0 released

Posted by Mathias in [parboiled]

13 Jan 2011

Today parboiled, the PEG parsing framework for Java and Scala, received an update to version 0.10.0. You can find the full changelog here.

The main improvements of this release, apart from a number of important bug fixes, are more of the “under-the-hood” type and do not really affect the way you use parboiled. The build system has changed from...

How to make SBT download scala library sources

Posted by Mathias in [scala]

17 Dec 2010

Being in the process of setting up a new machine for Scala development I once again found myself scratching my head over a question I already faced several times in the past:
How to persuade SBT to automatically download not just the Scala standard library jar for my target Scala version but also the corresponding sources?

Since readily available information about this...

The QuickPimp Pattern

Posted by Mathias in [scala]

02 Dec 2010

Anyone turning to Scala for developing non-trivial applications will come across a number of more or less established Scala Design Patterns. One of the most widely-used ones is the “Pimp my Library” Pattern, which got it’s name from a short article Martin Odersky wrote in October 2006.

This pattern denotes the way in which you can augment (or “pimp”) an...

An integrated SBT + IDEA Scala Development Setup

Posted by Mathias in [scala]

12 Oct 2010

One of the more discussed topics at the Scala Lift Off in London last week was the Scala development setup favored by the various people. There are quite a few options, preferences depend to a large extend on the individual likings. However, there appeared to be a clear preference for SBT as the build tool of choice and a lot...

parboiled 0.9.9 released

Posted by Mathias in [parboiled]

05 Oct 2010

Yesterday parboiled, the PEG parsing framework for Java and Scala, received an update to version 0.9.9.0. You can find the full changelog here.
Apart from the usual line-up of bug fixes and smaller improvements this release comes with three things worthy of a little emphasis:

  • Much improved Scala facade
  • The TracingParseRunner
  • The IndentDedentBuffer

Improved Scala Facade

...

Scala Collections API Charted Out

Posted by Mathias in [scala]

02 Sep 2010

The revamped collections API is one of cornerstones of the recently released Scala version 2.8.
It provides an incredibly rich toolset for working with object collections and as such is one of the most important parts of the Scala runtime library. The Scala team has made an effort to provide thorough documentation uncovering its feature breadth, the most important sources of information...

Scala rich wrapping performance

Posted by Mathias in [scala]

27 Aug 2010

Recently I repeatedly found myself wondering whether relying on Scalas rich wrappers for convenience was actually coming with some performance cost or not. Not that it really matters in all but some really time-critical edge cases, however, I remember reading something about modern JVMs being able to completely optimize these wrapping constructs away (by means of so-called “escape analysis”?), so maybe there...

Installing Apache Buildr on OS/X 10.6

Posted by Mathias in [scala]

20 Aug 2010

For my first larger, Scala-only project I just set up a brand-new project space.
Normally all my projects have an IntelliJ IDEA project structure set up for the day-to-day work. However, I usually also include a paralleling project spec for some build system for creating the final deployment or distribution artifacts. For all my Java projects this is (and always has been)...

parboiled for Scala

Posted by Mathias in [parboiled]

16 Aug 2010

The recently released parboiled version 0.9.8 comes with a brand-new feature that will hopefully make parboiled an attractive tool for an even larger developer community: a Scala facade.
Before v0.9.8 parboiled was a pure-Java library written mainly for Java developers. It basically consisted of two things, an efficient recursive-descent PEG parsing engine and an...

parboiled 0.9.8 released

Posted by Mathias in [parboiled]

12 Aug 2010

Just about a month after the last release parboiled 0.9.8 has hit its github download page today.
It is once again a major step forward, with quite a few changes and additions, some of them being significant enough to accompany the release with a small series of blog posts. They should be of interest to both, people currently using previous parboiled...

decodified launched

Posted by Mathias in [misc]

29 Jul 2010

This is the first post in this shiny, new blog.
For some time already I had been pondering the question whether I should really go through the trouble of setting up a small blog of my own, however always put it off due to the feeling that I had no content of real general interest to talk about. Additionally, the time and...