Loading presentation...

Present Remotely

Send the link below via email or IM


Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.


Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Wintermute ScalaBE

quick wintermute architecture overview for deep-dive into code

Egon Nijns

on 17 October 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Wintermute ScalaBE

improve quality of care
improve patient safety

How? Perform more checks!
(off line or near-line)

Scala + Akka
2010: Programming in Scala book
2012: start of the project
Wintermute architectuur
Trigger Message Producers
Bulletin writers
Trigger message producer
Patient actors registry
wintermettes / patient actors
SBT, Scala Build Tool
getting started = OK
powerful, not always easy
integrating with UZL's ivy repo hardest part
docs could be better
good news: jsuereth's upcoming book
Scala ecosystem
Mature tools and libraries
std library
Almost there
ScalaIDE / IntelliJ
Some projects
lacking documentation
bleeding edge feel
Nice and growing community
concepts are clear and powerful
incredible documentation
good books available

promising features (not needed in this phase):
supervision strategies
cluster support
requires more study
Some experiments
Spray routes
Query composition
UZL's specific context
no good support for stored procs
other issues with non-standard DB stuff
=> long term: integration with UZ DB layer
Scala 2.10 def macros
val name = field[String]("name")
val name = mfield[String]
scalaIDE issues
implementation is scary
=> cleanup ala SBT 0.13 taskKey macro
|+| for merging Map[A,Seq[B]]
ListT[Future, A] ?
=> ???
Who is wintermute?
Adam Warski on his blog, 21 May, 2013

Akka is a great tool for writing distributed applications. One thing that always surprised me though is that while being based on Scala, which is a very type-safe language, the elementary construct in Akka – an actor – is not really type safe. You can send any message to any actor, and get back any object in reply.
Typed Ask Pattern
class PatientActor(ruleIndex: RuleIndex) extends Actor {
val log = Logging(context.system, this)
val evaluator = Evaluator(ruleIndex, runSideEffects = true)

def receive = {
case EadnrAndFacts(_, facts) => {
case _ => log.info("received unknown message")
Lord Wintermute
Wintermute console
Backend: spray
now: angularJS
soon: dart?
DSL for describing rules
Inside the pure function
Pure Scala goodness, side effect free
the output of a rule can be used as the input for another rule
can query the database for extra data
Inside the pure function
Some micro DSLs
Full transcript