Good Scala introductory article/video to whet the appetite - scala

What are some good online articles or videos you've seen that would be most likely to get a developer interested in Scala? I'm looking for an introduction that is brief & to the point that dives right into example code, and would leave a developer who does not know Scala wanting to learn more about it.

Try in this order:
Pragmatic Real-World Scala - This video shows off all kinds of things that would make a Java developer drool.
Programming In Scala - This is simply a great general-purpose programming book. In addition to being a gentle, clear introduction to the language, it's also a fantastic introduction to functional programming concepts and language design. Even if you hate Scala,
this book will make you a better programmer.
Scala For Java Refugees - Very well-written mostly gentle introduction to major Scala concepts.
Another tour of Scala - A Java-centric breakdown of fundamental Scala features.

i went to this talk, it was excellent. can't tell if it is still there due to our internet restrictions, if it's not i'll delete this post.
http://powerhost.powerstream.net/008/00102/100203Scala.wmv

I'd go straight to the horse's mouth, the Scala website itself: Code Examples.

http://www.escalatesoft.com/screencasts
Escalate software is in the process of creating a series of screencasts for Scala information sharing and training purposes. The first available screencasts are provided here for free and cover the new features of Scala 2.8. In the longer term we will create training materials in the form of these videos along with supporting material that will be for sale from this and other sources as well.

http://blog.jaoo.dk/2009/03/09/an-introduction-to-the-scala-programming-language-by-bill-venners/

Take a look at the following presentation by Jonas Bonér (a well known figure in the Scala community, responsible for the AKKA actors concurrency framework). I'm sure this will whet the appetite for Scala.
http://www.infoq.com/presentations/Scala-Jonas-Boner

german introduction, maybe useful for you: http://www.rheinjug.de/videos/gse.lectures.app/Player.html#Scala

I would recommend Chapter 1. Zero to Sixty: Introducing Scala of the Programming Scala book by Dean Wampler and Alex Payne. The rest of the book is also great. The book is freely available online.
EDIT
I recently bought and read the Atomic Scala book by Bruce Eckel and Dianne Marsh. This is the best book I have read so far for anyone wanting to learn Scala.

Related

What is simplest reactive programming language?

I teach a course in Programming Paradigms. Last year I used Elm as an example of (Functional) Reactive Programming. This summer I noticed that Elm is no longer FRP (according to http://elm-lang.org/blog/farewell-to-frp). I'm looking for another vehicle, one for which I don't have to first teach a lot of syntax.
Reactive Programming in JavaScript seems way too complex. My students will have learned some Scala, but I haven't found a good tutorial on RP in Scala.
Suggestions, anyone? Requirements: reactive, simple syntax.
You can also check Reactor for Spring ecosystem https://github.com/reactor/reactor-core/blob/master/README.md
I suggest RxJava with Java8. It is well documented and maintained. There is a lot of materials- books, articles, tutorials, conference talks, etc.
'reactive, simple syntax'..
I do not see much in common between syntax and being reactive. Java8 has excellent free IDE support (Intellij or Eclipse). For me, it is important in learning new language than paradigim- more important than language itself.

Is there any book or online tutorial for Scala DSL?

I read this one for DSL scala http://camel.apache.org/scala-dsl-getting-started.html. It doesn't help much for me. I want more details. Can any one help me out?
There is Debashish Gnosh book DSLs in action. It isn't focused entirely on Scala, but has a good section on DSL developemnt using Scala. Generally this would be enough for starter knowledge, for deeper experience I would look at either ScalaTest or Specs source code.
There is a lot of research ongoing in this area, especially regarding high-performing Scala DSLs. Look at:
Lightweight Modular Staging
Delite
I've published an article about building regular DSLs in Scala.
A short overview: most-likely the DSL you're trying to build belongs to a class of regular languages. If so, you can model this DSL with a finite state machine. The article contains a step-by-step manual how to transform that FSM to Scala code.

Is there a central site/page for "advanced Scala" topics?

Despite having read "Programming in Scala" several times, I still often finds important Scala constructs that were not explained in the book, like
#uncheckedVariance
#specialized
and other strange constructs like
new { ... } // No class name!
and so on.
I find this rather frustrating, considering that the book was written by the Scala "inventor" himself, and others.
I tried to read the language specification, but it's made for academics, rather than practicing programmers. It made my head spin.
Is there a website for "Everything "Programming in Scala" Didn't Tell You" ?
There was the daily-scala Blog, but it died over a year ago.
Currently, we're working on a central documentation site for scala-lang.org. We're hoping that this solves a lot of the documentation issues that new users face. More details on this effort can be found at http://heather.miller.am/blog/2011/07/improving-scala-documentation/, but in summary...
Believe it or not, there are a lot of documents that the Scala team has produced but which simply aren't in HTML or are otherwise difficult to find. Such as Martin's new Collections API, his document on Arrays, or Adriaan's on Type Constructor Inference.
One goal of such a site is to collect all of this documentation in one place, in a searchable, organized, and easy-to-navigate format.
Another goal is to collect excellent community documentation out there, and to put it in the same place as well. For that, we are actively looking for quality (article/overview-like) material with maintainers. Examples include the Scala Style Guide, and Daniel Spiewak's Scala for Java Refugees.
Yet another goal is to make it easy for contributors to participate- so the site is built from RST source, which will live in a documentation-only github repo at https://github.com/scala/scala-docs.
So, in short, something better is on it's way, and contributors are very welcome to participate.
EDIT: http://docs.scala-lang.org is now live.
Several documents considered to be rather detailed or even obscure are already available. This includes all "Scala Improvement Proposals" (the proposals produced when new language features are suggested, and which are usually very detailed, and written by the implementers themselves). Also available is the entire glossary from Programming in Scala, Scala cheatsheets, amongst many other documents. The bottom-line of the site is to be community-focused and contribution-friendly-- so, free, and totally open. Suggested topics to cover are also welcome.
Take a look at scalaz and typelevel librairies (shapeless, spire, etc.), they rely on many advanced features of Scala.
*scalaz was for a time part of typelevel, but it is no more the case.
Josh Sureth's book goes a little beyond the usual. It's not as far as I'd like but I'm not his core audience - still, there's a lot of good stuff in there.
http://www.manning.com/suereth
Scala IRC: irc://irc.freenode.net/scala
Scala forum: http://scala-forum.org/
Blogs: Just look at http://planetscala.com/
Programming Scala (Wampler, Payne): http://ofps.oreilly.com/titles/9780596155957/
Programming in Scala (Odersky, Venners, Spoon) - good but Scala 2.8: http://www.artima.com/pins1ed/
The new documentation page is online:
http://docs.scala-lang.org/
I've kept a library of advanced Scala resources, primarily talks and blog posts. It's updated pretty regularly as I find new, interesting content.
Happy to add new links to it if anyone has recommendations.
Try to read SBT Source: https://github.com/harrah/xsbt/wiki
Its a good exercise. Also check out the book 'scala in depth' : http://www.manning.com/suereth/ by
Joshua D. Suereth
I believe there are a lot of good answer here. But as a sharing of experience. I have been coding Scala for 2 year (not my full time job), and been progressively better at it. My project is 97% Scala, and I have been able to do most of it with:
Programming Scala
The scala-user list
Stackoverflow
This cover most of the need for the "user" side of Scala, meaning all you need to create working application. However if you want to write some more complex code, or create powerful typed libraries you definitely need more.
If you want to go beyond the basics and are prepared to delve deeply into type system, and libraries, then the alternatives I use:
Use the community, scala enthusiast are really nice. I have worked with folks form Specs, Scalaz and Lift.
IRC is really good and some of the core contributors to some of the big library frequently show up.
Jump to source code, but don't try to understand everything. Scala type system can be daunting, however you normally don't need to understand 100% of it to use it.
If you really need to get into the nitty gritty details, hit the language specs, development list, and get to know the key people.
However you can really be very effective in Scala without needing to understand every single bit of the language.

Canonical pattern reference in Actors programming model

Is there a source, which I could use to learn some of the most used and popular practices regarding Actor-/Agent-oriented programming? My primary concern is about parallelism and distribution limited to the mentioned scheme - Actors, message passing.
Should I begin with Erlang documentation or maybe there is any kind of book that describes the most important building blocks when programming Actor-oriented?
(Most useful examples would be in Scala or F#)
The Erlang and Scala's Akka are most popular and have large community. In case you want to know ML-based style there is JoCaml. They have simple intro text and collection of more formal papers. I'm using JoCaml about two years in my research work and very happy with it. Also, you can find many examples of the F# mailboxes usage to implement actor-style message passing.
For a colorful and interesting explanation I'd recommend to read some entries on this blog
Other than that, we welcome you to the Akka mailinglist!
With regards to the usage of Actors in Scala, you might want to look into the Akka framework. It has good documentation, and here they have a list of articles and presentations with many examples.
You won't find much in the Erlang documentation that explicitly talks about Actors. The documentation and recent Erlang books explain how to use concurrency/distribution/message passing in the Erlang context. As an aside we hadn't actually heard of Actors when we developed Erlang.

Please suggest direction for my small scala project

As a academic project of 6 months in college me and my 3 friends are going to implement "Distributed Caching" in scala language.
Being new to both of these concepts and this being our first project I would be really happy if you guys could provide some direction.
I am currently learning scala.
Please let me know which particular features of language to be learned for this particular project.
Any online resources for learning distributed caching.
thanks in advance
You could have a look at Terracotta and especially at its uses in implementing Distributed Caching. You could have a look at the source code of the open source edition of Terracotta. Also, you could even consider Terracotta as your framework for building the distributed cache. I don't have any personal experience in using Terracotta with Scala, but it has been done.
Features of the language... Try starting with the Programming in Scala book. It's a very good resource. If you want to do any concurrency you will have to be proficient in using Actors. I would recommend having a look over all the features of Scala. Each one has its uses and you will need to know at least a bit of them to recognise situations in which to use their power. :)
-- Flaviu Cipcigan
You might want to look at the project Velocity page.
In MSDN also there is an article about distributed caching in general.
I'm not sure, but I think the Akka project might is already doing what you're looking for (and a whole lot more). Perhaps you can take inspiration from that.