package no.java.incogito.domain; import fj.data.List; import static fj.data.List.list; import fj.data.Option; import fj.data.TreeMap; import fj.pre.Ord; import no.java.incogito.domain.Event.EventId; import static no.java.incogito.domain.Level.LevelId; import static no.java.incogito.domain.Session.Format; import org.joda.time.DateTime; import org.joda.time.Interval; import org.joda.time.LocalDate; import java.io.File; import java.util.UUID; /** * @author <a href="mailto:trygvis@java.no">Trygve Laugstøl</a> * @version $Id$ */ public class IncogitoTestData { public static final Level Introductory = new Level(LevelId.Introductory, "Introductory", new File("")); public static final Level Introductory_Intermediate = new Level(LevelId.Introductory_Intermediate, "Introductory/Intermediate", new File("")); public static final Level Intermediate = new Level(LevelId.Intermediate, "Intermediate", new File("")); public static final Level Intermediate_Advanced = new Level(LevelId.Intermediate_Advanced, "Intermediate/Advanced", new File("")); public static final Level Advanced = new Level(LevelId.Advanced, "Advanced", new File("")); static Label java = new Label("java", "Java", "Java", new File("java.png")); public static LocalDate sep17th = new LocalDate(2008, 9, 17); public static final List<Room> jz08Day1Rooms = list(new Room("Lab I"), new Room("Lab II"), new Room("BoF")); public static DateTime s17 = sep17th.toDateMidnight().toDateTime(); public static List<Interval> jz08Day1Timeslots = list( new Interval(s17.withHourOfDay(9), s17.withHourOfDay(10)), new Interval(s17.withHourOfDay(10).withMinuteOfHour(15), s17.withHourOfDay(11).withMinuteOfHour(15)), new Interval(s17.withHourOfDay(11).withMinuteOfHour(45), s17.withHourOfDay(12).withMinuteOfHour(45)), new Interval(s17.withHourOfDay(13), s17.withHourOfDay(14)), new Interval(s17.withHourOfDay(14).withMinuteOfHour(15), s17.withHourOfDay(15).withMinuteOfHour(15)), new Interval(s17.withHourOfDay(15).withMinuteOfHour(45), s17.withHourOfDay(16).withMinuteOfHour(45)), new Interval(s17.withHourOfDay(17), s17.withHourOfDay(18)), new Interval(s17.withHourOfDay(18).withMinuteOfHour(15), s17.withHourOfDay(19).withMinuteOfHour(15))); public static LocalDate sep18th = new LocalDate(2008, 9, 18); public static final List<Room> jz08Day2Rooms = list(new Room("Lab I"), new Room("Lab II")); public static DateTime s18 = sep18th.toDateMidnight().toDateTime(); public static List<Interval> jz08Day2Timeslots = list( new Interval(s18.withHourOfDay(9), s18.withHourOfDay(10)), new Interval(s18.withHourOfDay(10).withMinuteOfHour(15), s18.withHourOfDay(11).withMinuteOfHour(15)), new Interval(s18.withHourOfDay(11).withMinuteOfHour(45), s18.withHourOfDay(12).withMinuteOfHour(45)), new Interval(s18.withHourOfDay(13), s18.withHourOfDay(14)), new Interval(s18.withHourOfDay(14).withMinuteOfHour(15), s18.withHourOfDay(15).withMinuteOfHour(15)), new Interval(s18.withHourOfDay(15).withMinuteOfHour(45), s18.withHourOfDay(16).withMinuteOfHour(45)), new Interval(s18.withHourOfDay(17), s18.withHourOfDay(18)), new Interval(s18.withHourOfDay(18).withMinuteOfHour(15), s18.withHourOfDay(19).withMinuteOfHour(15))); public static List<LocalDate> jz08Dates = List.list(sep17th, sep18th); public static List<List<Room>> jz08RoomsByDate = List.list(jz08Day1Rooms, jz08Day2Rooms); public static List<List<Interval>> jz08TimeslotsByDate = List.list(jz08Day1Timeslots, jz08Day2Timeslots); public static final Event javaZone2008 = new Event(EventId.eventId(UUID.randomUUID().toString()), "JavaZone 2008", Option.<String>none(), List.<Room>nil(), jz08Dates, jz08RoomsByDate, jz08TimeslotsByDate, TreeMap.<LevelId, Level>empty(LevelId.ord).set(Intermediate.id, Intermediate), List.<Label>nil(), TreeMap.<String, Label>empty(Ord.stringOrd).set(java.id, java)); public static final Label EMG = new Label("id", "EMG", "EMS", new File("")); public static final Label Method = new Label("id", "Method", "Method", new File("")); public static final Label Core = new Label("id", "Core", "Core", new File("")); public static final Label BOF = new Label("id", "BOF", "BOF", new File("")); public static final Label Enterprise = new Label("id", "Enterprise", "Enterprise", new File("")); public static final Label BOF_Method = new Label("id", "BOF_Method", "BOF_Method", new File("")); public static final Label Web = new Label("id", "Web", "Web", new File("")); public static final Label Emerging = new Label("id", "Emerging", "Emerging", new File("")); public static final Label Experience = new Label("id", "Experience", "Experience", new File("")); public static final Session session3 = new Session(new SessionId("b8a6034f-573d-4321-9155-a5ed31885958"), Format.Presentation, "(Hvordan lage) Sikre applikasjoner i Java ME", Option.some(new WikiString("h1. Outline\n\n* Introduksjon:\n* Signering av MIDlet\n* Sikker kommunikasjon i Java ME\n* Sikker lagring\n* Spørsmål og svar")), Option.some(Intermediate), Option.some(new Interval(1221634800000L, 1221634800000L)),Option.some("Lab 2"), List.<Label>list(EMG), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session6 = new Session(new SessionId("99bea350-c191-4f78-913f-ac855659df07"), Format.Presentation, "Achieving greater code reuse through decoupling of feature implementations from the domain", Option.some(new WikiString("h1. Outline:\n\n* Introduction (1 min)\n* What's wrong with the way we build software applications today? (5 mins)\n* The scaffolds we see in rails, grails, etc.. are the beginning (2 mins)\n* Decoupling concerns implementations from the domain = Freedom to reuse implementations across applications (1 min)\n* How to decouple the model: coupling to the metamodel (5 mins)\n* Demonstrating sample applications constructed in this fashion (5 mins)\n* Overview of Generic Implementations:\n* Generic Create, Read, Update, Delete (2 mins)\n* Deployment (5 mins)\n* Analysis of the results (5 mins)\n* Conclusions/References (1 min)\n* Q&A (5 mins)\n\nh1. Language: \nEnglish\n\nh1. Level: \nIntermediate\n\nh1. Required experience:\nParticipants should have experience in designing and implementing business software solutions. Code examples will be given using the following specific tool stack: the Java programming language, the Swing GUI Toolkit, the Hibernate O/R Mapping framework, and Java reflection, metadata concepts.\n\nh1. Expected audience:\n\nPlease consider attending this session if you are either a developer or manager with interest in exploring ways to improve the current state of software applications development in the areas of: developer productivity, usability, software application maintainability.")), Option.some(Intermediate), Option.some(new Interval(1221668100000L, 1221668100000L)),Option.some("Lab 6"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session9 = new Session(new SessionId("30f29c73-3114-4510-86cd-a32f105013f9"), Format.Presentation, "Adding Animation and Media to JavaFX and Java Applications", Option.some(new WikiString("h1. Outline:\n\n* Overview of JavaFX 5 mins.\n* Language features (binding, sequences, etc.) 10 min.\n* Animation 15 min.\n* Media and support for media types 15 min.\n* Deployment 5 min.\n* Q&A 10 mins.\n\nh1. Language:\nEnglish\n\nh1. Level:\nIntermediate\n\nh1. Required experience:\n2-3 years of Java development experience especially w/ rich client apps.\n\nh1. Expected audience:\nJava developers ")), Option.some(Intermediate), Option.some(new Interval(1221731100000L, 1221731100000L)),Option.some("Lab 6"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session10 = new Session(new SessionId("2f4024f7-23aa-4c0d-a89c-e23082d4d9b4"), Format.Presentation, "Agility at Scale - Using Team Concert in a Globally Distributed Team", Option.some(new WikiString("h1. Outline\n\n* Quick introduction to Jazz and Rational Team Concert\n* Our practices - the eclipse wayMe\n* Component based development\n* Our organization and roles\n* The artifacts we track\n* Isolating work not people\n* Planning, release and iteration planning, tracking cross team dependencies\n* Continuous integration - getting green builds\n* The endgame\n* Evolving the process\n* Experiences & Lessons Learnt")), Option.some(Intermediate), Option.some(new Interval(1221634800000L, 1221634800000L)),Option.some("Lab 1"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session12 = new Session(new SessionId("c126c757-a421-4f0e-b774-5cbea0e24318"), Format.Presentation, "Amazon EC2 – Grid på 1-2-3", Option.some(new WikiString("Mange løsninger basert på moderne Java-arkitektur har behov for å lage skalere ytelse takt med at behovet vokser. Dersom man har et høy ytelseskrav (100 eller 1.000 vis av transaksjoner pr. sekund) krever dette avansert og kostbar infrastruktur med mange servere og gjerne eget lagringsnett (SAN). \n\nSom Java utvikler gir dette en utfordring i forhold til hvordan man skal få utviklet og testet en slik applikasjon. Hvordan vet jeg at valgt arkitektur skalerer utover et par testservere? Hvordan vet jeg at løsningen skalerer i produksjonsmiljø over tid når volumene vokser? \n\nDette foredraget gir et praktisk eksempel på hvordan man kan bruke Amazon EC2 som skalerbar infrastruktur for en Java Servlet basert applikasjon. Foredraget forutsetter ingen forkunnskap om EC2 og vil gi en kort introduksjon på hva EC2 er, hvordan det virker og hva man kan bruke det til. \n")), Option.some(Introductory), Option.some(new Interval(1221663600000L, 1221663600000L)),Option.some("Lab 2"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session13 = new Session(new SessionId("0ff2fe30-d29f-49f2-a77c-beb4792d5103"), Format.Presentation, "An affair to remember - technology and user experience", Option.some(new WikiString("As we go along, we will show a best practice case study; how two senior Swing developers and a usability specialist transformed good user experience principles into a successful photo editor.\n\nThe Photo Editor is developed as part of the new version of the Escenic Content Studio CMS client. Content Studio is used daily by more than 400 media sites worldwide, with several thousand end users, and is tailored to support modern newspapers' online publishing routines.\n\nThe goal was to create an intuitive, task-oriented photo editor that fulfills 95% of our typical users' needs. These tasks include correcting image orientation, crop for aspect or composition, simple image adjustments as well as obfuscating incriminating details.\n\nh1. Required experience\n\nNone\n\nh1. Expected audience\n\nDevelopers, Project Managers, UX-specialists\n")), Option.some(Introductory_Intermediate), Option.some(new Interval(1221649200000L, 1221649200000L)),Option.some("Lab 6"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session21 = new Session(new SessionId("338df93d-2830-4335-9079-b8fcf8bb26bc"), Format.Presentation, "Better Domain Driven Design", Option.some(new WikiString("h1. Outline\n\n* Introduction. This section is just a brief introduction to the ensuing topics. ~2 minutes.\n* ΄When Patterns Become Anti-patterns‘. This section will show how we unconsciously collapse our ap- plication structures by using design patterns to increase flexibility and let rigidity creep in to our designs. ~5 minutes.\n* The Strategy Pattern. The Strategy pattern enables us to select algorithms at runtime, but this comes with at the cost of forcing classes to have knowledge about the contexts in which these algorithms are used. Focusing on the implementation of a commonly used pattern drives attention to- wards how we can implement the same pattern with different means, which will be one of the themes for the rest of the talk.\n* The Collapse of Application Structure. Our implementations of common design patterns causes a ΄pattern lock-in‘ that can fragment domain logic and blur out the distinction between domain and in- frastructure logic. This can hurt the maintainability of our applications. Making Roles Explicit. This section will focus on improving the design of a domain model’s internals to achieve better separation of concerns and improved flexibility and maintainability. ~15 minutes\n* Our Objects Play Too Many Roles. Our domain objects, especially Aggregates, often violate sound software engineering principles. The upside of this is that it gives developers using these a better experience, the downside is that it hurts maintainability. In this section I will show how the common validation patterns we use in our models violates the single responsibility principle and eschew domain concepts.\n* Refactoring to Explicit Roles. In this section I will show how to separate the concerns in the previ- ous section into domain objects and services that adhere to the single responsibility principle and makes the solution more extensible.\n* Data Access is Infrastructure. This section will focus on improving the architecture of an application by clearly distinguishing between domain logic and infrastructure code. Towards the end we connect the dots by combining the lessons from this section with the ones form the previous section. ~20 minutes\n* Don’t Repeat Yourself! In domain driven design we use Repositories to abstract the data access layer. Different Repositories often share the same behavior and their implementations often violate the DRY principle. In this section I will show how to refactor the repository concepts into an application’s supporting infrastructure to increase productivity, reusability and maintainability without sacrificing the flexibility of hand-rolled repositories.\n* Lazy About Lazy Loading. Repositories are commonly used in conjunction with object/relational mappers to increase separation of concerns. As the real-world concerns of software development manifest themselves, these abstractions start to leak and soon our domain services get tainted with fetching strategies and similar. In this section I will show how we can combine the concepts from previous sections with Inversion of Control to keep our models clean.\n* Wrap up. In this section the emphasis is on separation of concerns, the DRY-principle and the importance of keeping roles explicit. ~5 minutes\n\nh1. Required experience\n\nAttendants should have at least a basic understanding of domain driven\ndesign to get full yield. The design principles and techniques\npresented are generally applicable, and can be of interest to\nattendants with out experiences with domain driven design.\n\nh1. Expected audience\n\nThis talk is directed towards developers and architects who practice\nor want to practice domain driven de- sign. It should also be of\ninterest to domain driven design skeptics who feel that this practice\nbring too much complexity into their designs.\n")), Option.some(Intermediate), Option.some(new Interval(1221653700000L, 1221653700000L)),Option.some("Lab 3"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session22 = new Session(new SessionId("07de21e6-8387-4527-9fc6-9f0eb6f36141"), Format.Presentation, "Beyond the hype: OSGi in practice", Option.some(new WikiString("h1. Outline:\n* OSGi overview\n* Part 1: OSGi class and resource loading\n* Persistence\n* Part 2: Working with OSGi services\n* Summary\n* Q&A\n\nh1. Required experience:\n* Basic OSGi, persistence and web knowledge\n* Good Spring knowledge\n* Good Java Class/Class Loading knowledge\n\nh1. Expected audience:\nAnybody interested in using OSGi for enterprise applications\n")), Option.some(Intermediate_Advanced), Option.some(new Interval(1221663600000L, 1221663600000L)),Option.some("Lab 4"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session26 = new Session(new SessionId("d659be83-3c94-46a7-8bbe-a06c141da474"), Format.Presentation, "Building the Big Brother of the Java Virtual Machine", Option.some(new WikiString("h1. Outline \n\n* Introduction\n* What sets Usemon apart from other profiling and performance measurement tools?\n* Modifiying the class loader using byte code manipulation\n* Architecture and extension points\n** Using Soft references in the Agent to reduce memory consumption dynamically and letting the garbage collector (GC) to the job for you.\n** Living in the Java virtual machine without affecting the production environment\n** Collection of statistics and transmittal to the collector(s) using multicasting\n** Receiving the collected data and insertion into a dimensional data model\n* Extending Usemon to your liking\n** Usemon Live; A cool visualization app using the Processing (processing.org) framework and physics simulation model to show you what is happening in real time\n** Dimensional data analysis, JasperServer to the rescue!\n* Q&A\n\nh1. Expected audience \n\nHard core developers with interest in performance and run time dependencies. ")), Option.some(Advanced), Option.some(new Interval(1221659100000L, 1221659100000L)),Option.some("Lab 2"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session27 = new Session(new SessionId("0ee5be41-2984-4b99-801e-cb3a2fbbdfb4"), Format.Presentation, "Bytecode Manipulation in the Real World", Option.some(new WikiString("h1. Outline:\n\n* Introduction\n* What is byte-code manipulation?\n* Popular projects and what they use it for\n* Don't be afraid\n* Plugging in the manipulation\n* Code examples from open-source projects using ASM\n* Tips, tricks and gotchas\n* Q/A\n\nh1. Language:\nEnglish")), Option.some(Intermediate), Option.some(new Interval(1221639300000L, 1221639300000L)),Option.some("Lab 6"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session30 = new Session(new SessionId("d6e7438e-b5b3-453b-b7f9-27004abad564"), Format.Presentation, "Clean Code III: Functions", Option.some(new WikiString("In this talk we will look at a lot of code; some good and some bad. We will experience how such code is analyzed, critiqued, and eventually refactored. We will understand the decisions made by an expert in the field as bad code is gradually transformed into good code. How big should a function be? How should it be named? How should it be documented. How many indent levels should it have? How should it deal with exceptions, arguments, and return values. This talk is all about code at the lowest level. And yet the principles and techniques presented have far reaching implications. ")), Option.some(Intermediate), Option.some(new Interval(1221735600000L, 1221735600000L)),Option.some("Lab 1"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session31 = new Session(new SessionId("d42ab0e9-6c14-4863-909d-227261b880cd"), Format.Presentation, "Comet: Ajax-push med Jetty og Dojo", Option.some(new WikiString("En vanlig løsning er å spørre serveren med jevne mellomrom ved å bruke Ajax. Slik polling gir dårlig responstid og fører til et unødvendig høyt antall forspørsler. Ved å trikse litt med HTTP kan vi imidlertid holde en forespørsel åpen over lang tid og la serveren sende data når det passer. Denne asynkrone push-arkitekturen kalles gjerne \"Comet\".\n\nDette foredraget forklarer teknologien bak Comet, de nye mulighetene den tilbyr og utfordringene vi får på kjøpet. Foredraget tar utgangspunkt i servletcontaineren Jetty og Javascript-biblioteket Dojo. Sammen gjør disse det svært enkelt å utvikle Comet-baserte applikasjoner. Vi viser hvordan man kommer i gang med Comet og hvordan vi ved hjelp av Jetty og Dojo kan lage en webbasert chatapplikasjon på få minutter. Vi ser på flere eksempler der Comet er i produksjonskode og diskuterer ytelse og skalerbarhet i Jetty sin implementasjon. Vi viser også hvordan Comet støttes i forslaget til den kommende versjon 3.0 av Java Servlets-spesifikasjonen.\n\nh1. Outline:\n\n* Why Comet?\n** Increasing need for low latency, \"always current\" services\n** Limitations of Polling, Ajax\n* What is Comet?\n** Comet transports, long poll vs. streaming\n** Comet is HTTP\n** Asynchronuous IO (it's hard)\n** Bayeux protocol\n* Some Comet examples (Screensshots / live demos / screencasts)\n** SVNSearch real-time commits\n** live.chess.com\n** GMail\n** Distributed Paint clone implemented with Javascript and Comet.\n* About Jetty\n** Small, fast, testable, embeddable, and enjoyable open source servlet container.\n* About Dojo\n** Javascript toolkit\n** DOM manipulation, Effects, Widgets\n** Plugin based\n** Client side of Bayeux protocol implemented as a Dojo plugin\n* Chat example with Jetty and Dojo. (probably a mix of live coding and slides)\n** Create Maven project\n** Add Jetty, Dojo, Comet dependencies\n** Add ContinuationCometdServlet to web.xml\n** Adding a main method for Jetty with a SelectChannelConnector\n** Creating a simple chat application with Dojo\n* Comet performance and scalability\n** Greg's numbers?\n** 20.000 concurrent users\n** Comparison with polling\n* Comet limitations\n** Container support\n** OS/Container tuning (file descriptors, )\n** Firewalls\n** Proxying (Apache mod_proxy?)\n* The future\n** Servlet 3.0\n** Bayeux on Tomcat, Glassfish\n\nh1. Required experience:\n\nDeltakere bør ha kjennskap til web-progammering i Java og ha grunnleggende kunnskap om HTTP. Erfaring med Javascript er en fordel.")), Option.some(Intermediate), Option.some(new Interval(1221668100000L, 1221668100000L)),Option.some("Lab 2"), List.<Label>list(Web), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session33 = new Session(new SessionId("e933b739-42e6-4854-a393-7185b845769f"), Format.Presentation, "Comparing IoC containers (Spring, Guice, Tapestry 5 IOC, HK2)", Option.some(new WikiString("h1. Summary\nMany Java developers have used a IoC container - or at least heard about Spring. Today there are a good number of IoC containers and each of them claiming to do Dependency Injection (DI) in a better way. This session will explain what IoC/DI really is, why we should use it, how the containers work and when to use each specific container.\n\nIn this session, you will learn:\n\n* What Dependency Injection can add to your applications;\n* How various frameworks, including Spring, Guice, Tapestry 5 IOC, HK2 and PicoContainer, work;\n* Tips on when to use each specific container.\n\nh1. Required experience \nKnowledge of an IoC container\n\nh1. Expected audience\nPeople eager to know more about IoC containers")), Option.some(Intermediate), Option.some(new Interval(1221663600000L, 1221663600000L)),Option.some("Lab 6"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session35 = new Session(new SessionId("474a8680-3607-4d83-8be0-964ac01590c2"), Format.Presentation, "Comprehensive Project Intelligence: Apache Maven, Nexus, Hudson and m2eclipse", Option.some(new WikiString("In this talk, Jason van Zyl, founder of Sonatype and creator of Maven’s Central Repository, will present a constellation of open-source software which can be used to extend Maven’s capabilities, from next-generation Eclipse support provided by m2eclipse to the Nexus Maven Repository Manager and Hudson which offer Maven support. Jason will also introduce some of the more unexpected uses of Maven to support development with Flex and to support the publishing industry")), Option.some(Intermediate), Option.some(new Interval(1221721200000L, 1221721200000L)),Option.some("Lab 5"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session36 = new Session(new SessionId("4569a582-5078-4e49-8ccc-0a0fd941428c"), Format.Presentation, "Concurrency and Performance Reloaded", Option.some(new WikiString(" In this talk we will explore recent advanced in the JVM\nthat can help us reduce the impact the protecting data. We will also\nexplore up and coming techniques that can help us meet the challenge of\ndelivering more concurrency in our own applications.\n")), Option.some(Intermediate), Option.some(new Interval(1221745500000L, 1221745500000L)),Option.some("Lab 4"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session38 = new Session(new SessionId("424f8d25-fc53-479a-9280-9fd367955aef"), Format.Presentation, "Creating an assisted music composition application using a Topic Map driven Java model", Option.some(new WikiString("h1. Outline \n\n* Structure of the talk\n* About the authors\n* Aerobic Instructor/Deaf Composer - User Stories\n* Short introduction to fundamentals of music composition and DJing\n* Tagging music fragments with human readable information\n* Why working with Topic Maps is different\n* The problem of implementing rich models in OO\n* Creating a dynamic model from Java objects, while keeping complexity low\n* Presentation of Vaudeville - The DJ´ing application created in KPRO\n* Questions\n\nh1. Expected audience \n\nAnyone interested in multimedia, Topic Maps and Object Oriented theory\nThe audience will be introduced to simple concepts of Topic Maps and music composition theory. Basic knowledge of Object Orientation is preferred.")), Option.some(Introductory), Option.some(new Interval(1221644700000L, 1221644700000L)),Option.some("Lab 2"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session39 = new Session(new SessionId("bb168960-02ac-4b03-803a-005300000a94"), Format.BoF, "Creating attractive clients with NetBeans Rich Client Platform", Option.some(new WikiString("h1. Outline:\n\n* Introduction \n* The needs of an advanced rich client \n* The main components of the NetBeans RCP\n* The Office 2007 LAF OpenSource module\n* (Demo) Creating a simple distributed, Internet enabled RCP from scratch \n* Conclusions \n* Q&A ")), Option.some(Introductory), Option.some(new Interval(1221750000000L, 1221750000000L)),Option.some("Lab 6"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session43 = new Session(new SessionId("d592899b-d1be-4f55-87a6-447102b1a5c7"), Format.Presentation, "Design Sense - Cultivating Deep Software Design Skill", Option.some(new WikiString("In his book 'Blink', Malcom Gladwell makes the case that experts don't \"think through\" problems when solving them, they arrive at solutions almost unconsciously. The thing that differentiates an expert from a novice is not the ability to \"reason through\" but rather the ability to see a problem differently than a novice would. This different way of seeing is something that experts arrive at through their experience and long periods of exposure to problem contexts. In this talk, Michael Feathers will work you through a set of examples and describe concrete strategies for cultivating design sense - the ability to instantaneously recognize appropriateness and inappropriateness in software design.\n")), Option.some(Intermediate), Option.some(new Interval(1221721200000L, 1221721200000L)),Option.some("Lab 1"), List.<Label>list(), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session46 = new Session(new SessionId("ea7e7e5f-77ad-4023-a4b8-d09bbcb2e227"), Format.Presentation, "Dokumentasjon uten pistol - går det an?", Option.some(new WikiString("h1. Outline:\n\n* Presentasjon av meg selv og foredraget\n* Litt om hva trenger vi å dokumentere i systemutviklingsprosjekter, og nytteverdien av dette\n* Noen erfaringer med wiki-basert doumentasjon\n* Noen praktiske eksempler på wiki-basert dokumentasjonsstruktur fra et prosjektteam, bl.a. for krav og arkitektur\n* Noen gode råd for sunn dokumentasjon\n* Spørsmål og kommentarer\n\nh1. Required experience\n\nNone. However, some experience with participating in software\ndevelopment projects is helpful to understand the real-life challenges\nin this part of the work.\n\nh1. Who should attend this session? \n\nProject managers, architects and other participants in software\ndevelopment projects\n\nh1. How will the participants benefit from attending? \n\nGet some concrete examples of how to manage, communicate and maintain\nvital doumentation in software development projects. Get experience\nreports and reflections around the theme.\n")), Option.some(Introductory), Option.some(new Interval(1221649200000L, 1221649200000L)),Option.some("Lab 2"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session48 = new Session(new SessionId("bdb1a0f1-0af1-4a5e-96f9-fdb4fa0c76a8"), Format.Presentation, "Dynamic languages and frameworks in an enterprise application server world - an approach with GlassFish v3", Option.some(new WikiString("The first step is to have the dynamic language run on the JVM to benefit from the HotSpot investment, the second one is to have the associated web framework take advantage of an application server infrastructure providing pooling, recycling and other monitoring services.\n\nWith the advent of modular architectures at the heart of modern application servers, it becomes now possible de make the wealth of Java APIs and the\nbenefits of such a runtime available to artifacts beyond J2EE/Java EE.\n\nThis talk will cover the value of dynamic languages to augment the value of existing applications and how these are implemented on the new, modular, OSGi-based GlassFish v3 architecture. It will discuss the integration of JRuby on Rails, PHP, Groovy/Grails, Python/Django and maybe other dynamic technologies in GlassFish. Demos and a couple success stories included.\n\nThe list of APIs available to scripting frameworks include (but are not limited to):\n\n* Metro (JAX-WS and advanced Web Services)\n* Java Persistence API\n* Grizzly Comet for Ajax Push\n* JBI/ESB integration\n* JMS/MQ connectivity\n* Connector integration\n\nh1. Audience\nJava and scripting architects and developers. They will be \nable to see for themselves the value and the maturity of mixing a \ntraditional application server approach with the agility provided by \nscripting languages and frameworks.")), Option.some(Intermediate), Option.some(new Interval(1221634800000L, 1221634800000L)),Option.some("Lab 3"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session49 = new Session(new SessionId("ad08131d-dfdd-40ce-bf0b-5ed3a536da14"), Format.Presentation, "EDR-MDS \"a less is more approach to SOA Master Data Management\"", Option.some(new WikiString("h1. Outline\n\n* Introduction\n* Problem description\n* Solution strategies - strength and weaknes analysis\n* How to do more with less - EDR MDS concepts and tradeoffs\n* Experience reports\n* QA\n\nh1. Required experience\n\nIntermediate knowledge of architecting and building SOA systems. Experience with Master Data Management chellenges and integration strategies. \n\nh1. Expected audience\n\nArchitects, Developer-leads and project managers. ")), Option.some(Intermediate_Advanced), Option.some(new Interval(1221663600000L, 1221663600000L)),Option.some("Lab 5"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session50 = new Session(new SessionId("ad5c44c4-ada5-463a-8d8c-1206c875e9e5"), Format.Presentation, "Easy and maintainable enterprise testing with Unitils ", Option.some(new WikiString("Unitils started in 2005, when a group of developers and architects joined in a task force to share their testing experience. These discussions resulted in a set of testing guidelines. The leaders of this task force started writing code to help implementing these guidelines. Unitils has emerged from concrete experience and lessons learned, with the ultimate goal of making unit testing easy, effective and maintainable. \nUnitils offers a lot of support in testing the database layer: automatic maintenance of test databases, automatic post-processing of the database to make it more test-friendly, loading test data using DbUnit and verifying the contents of the database after execution of a test. Unitils provides specific support for testing with JPA or hibernate, and offers integration with spring. It makes abstraction of the testing framework that is used for executing the tests, making it useable with JUnit3, JUnit4 or TestNG. \nBut Unitils is not limited to persistence layer testing only: The reflection assert utility is a very useful alternative to the classic assertEquals method with a range of leniency options. Unitils also provides superior support for dynamic mock objects, offering a simple syntax for specifying method behavior and verifying expectations.\nDuring this talk, I will present the different features of Unitils using simple, concrete examples. I will talk about problems from real projects and demonstrate how Unitils helps solving these problems.\n\nh1. Outline: \n* Introduction\n* Feature overview: Using examples, I’ll demonstrate the features of Unitils: assertion using reflection, test data management, test database maintenance, JPA / hibernate and spring integration, testing with mock objects.\n* Demo: demonstration of the database maintainer, JPA / hibernate entity-database mapping test\n* Architecture: Provide some insight into how Unitils works.\n* Summary and roadmap: What are our plans for the future\n* Q & A\n\nh1. Required experience: \nBasic experience with unit testing. Knowledge of hibernate and spring is useful but not required.\n\nh1. Expected audience: \nDevelopers, technical project leaders and architects, who are into unit testing and want to improve testing on their projects. \n")), Option.some(Intermediate), Option.some(new Interval(1221735600000L, 1221735600000L)),Option.some("Lab 2"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session51 = new Session(new SessionId("7283d741-3746-45b3-b3c0-595c21a27f16"), Format.BoF, "Effektiv kunnskapsdeling – kanskje den viktigste nøkkel til suksess?", Option.some(new WikiString("h1. Outline\n\n* Introduksjon Mesan og NITH\n* Formidling av kunnskap\n* Forskningsbasert kunnskap\n* Utfordringer ved kunnskapsformidling og opplæring\n* 3 ”best practices”, Forskningsbasert undervisning, Scaffolding og Prosjektbasert tilegnelse av kompetanse\n* Q & A")), Option.some(Introductory), Option.some(new Interval(1221672600000L, 1221672600000L)),Option.some("Lab 3"), List.<Label>list(BOF), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session52 = new Session(new SessionId("bd2aae96-5f1f-460c-a544-13d51ac630d6"), Format.BoF, "Effektive samarbeidspraksiser for kravhåndtering", Option.some(new WikiString("h1. Outline\n\n* Introduksjon – samarbeid og kommunikasjon i utviklingsprosjekter\n* Effektive praksiser for å definere en prosjektprosess\n* Effektive praksiser for kravhåndtering og forretningsprioritering\n* Effektive praksiser for å samarbeide om estimering og planlegging\n* Hvordan binde det sammen – praktiske erfaringer\n* Diskusjon\n\nh1. Required Experience\n\nDeltakere bør ha erfaring fra programvareprosjekter, enten som del av utviklingsteam, kunde, forsker, student eller lignende.\n\nh1. Expected Audience\n\nHovedmålgruppe er ledere, prosjektledere, kunderepresentanter, utviklingsteam og lignende. Vi ønsker deltakelse fra kunde og utviklingsside enten man er involvert i intern produktutvikling, skreddersøm eller produktutvikling for massemarkedet. ")), Option.some(Intermediate), Option.some(new Interval(1221735600000L, 1221735600000L)),Option.some("BoF"), List.<Label>list(BOF_Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session54 = new Session(new SessionId("8d0d6ca3-5980-4257-8678-716fbe90a400"), Format.BoF, "En kort historie om nesten alt fra et smidig prosjekt", Option.<WikiString>none(), Option.some(Introductory), Option.some(new Interval(1221731100000L, 1221731100000L)),Option.some("BoF"), List.<Label>list(BOF), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session55 = new Session(new SessionId("61c260d1-760a-4bc0-8126-0b0631235cc2"), Format.BoF, "End-to-end Continuous Integration", Option.some(new WikiString("h1. Required experience\n\nFrom none to years, this is a BOF, so you should just be interested\n\nh1. Expected audience\n\nAnybody from developer to project manager\n")), Option.some(Intermediate), Option.some(new Interval(1221672600000L, 1221672600000L)),Option.some("Lab 5"), List.<Label>list(BOF), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session57 = new Session(new SessionId("185773b2-42f8-4532-953c-59d9736823c1"), Format.Presentation, "Enterprise-utvikling med Seam og JBPM", Option.some(new WikiString("h1. Outline:\n\n* Introduksjon\n* Presentasjon av nåværende løsning\n** Forklare applikasjon og arkitektur\n** Forklare hvordan Seam brukes i web-applikasjonen\n*** Hva fungerte og hva fungerte ikke\n** Forklare hvordan batch-applikasjonen er implementert\n*** Problemer med applikasjonen\n* Presentasjon av utvidelse: jBPM\n** Hvilke fordeler gir et prosessverktøy som jBPM gir\n** Alternative strategier ved bruk av et prosessverktøy\n** Forklare hvordan jBPM integreres med applikasjonen\n* Eksempel:\n** Vise demo av opprinnelig applikasjon\n** Vise eksempler med jBPM\n\nh1. Required experience:\n\nGrunnleggende forståelse av Java EE utvikling.\n\nh1. Expected audience:\n\nUtviklere med interesse for enterprise- utvikling og arkitektur.")), Option.some(Intermediate), Option.some(new Interval(1221721200000L, 1221721200000L)),Option.some("Lab 6"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session58 = new Session(new SessionId("6cd40f54-2ea8-4281-9fdd-7484e934bc41"), Format.Presentation, "Environment aware spring context", Option.some(new WikiString("h1. Outline:\n\n* The ultimate goal\n* Configuration techniques that failed miserably\n** Using your build system for resource filtering\n** JNDI as configuration repository\n** Commons Configuration\n** The evil PropertyPlaceHolderConfigurer\n* Introducing the Stage Enabled Spring Contexts project\n** Brief introduction to annotation based configuration in Spring\n** Choosing implementation of services based on the running environment\n** Increase testablility\n** Configuration options\n** Handling property files\n* Customization options\n* Q&A - 10 min\n\nh1. Language:\nEnglish\n\nh1. Level:\nIntermediate\n\nh1. Required experience:\nAttendees will be expected to be experienced Java programmers with fairly good knowledge of the Spring framework. Experience with large scale enterprise applications would be a benefit.\n\nh1. Expected audience:\nThis session targets software architects and software developers, working on Spring based enterprise applications.\n")), Option.some(Intermediate), Option.some(new Interval(1221653700000L, 1221653700000L)),Option.some("Lab 6"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session61 = new Session(new SessionId("9502de9b-425d-46c1-a5ea-f13ffc229904"), Format.Presentation, "Experiences from using JSF, Spring Webflow and Ajax as a platform for rich web-applications", Option.some(new WikiString("Through this talk the presenters will share their experiences using these frameworks, and demonstrate how these frameworks can be used to develop web-applications. They will give examples of both positive and negative experiences using these frameworks.\n\nThe presenters will give a full demonstration of the technology, their architecture for the presentation layer and the structure of their code base by giving a demonstration on how they implemented “wizards”, menus, breadcrumbs and security using features of Spring Web Flow. In addition they will demonstrate the integration with JSF (MyFaces) and AJAX (Ajax4JSF).\n")), Option.some(Intermediate), Option.some(new Interval(1221639300000L, 1221639300000L)),Option.some("Lab 2"), List.<Label>list(Web), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session62 = new Session(new SessionId("020fe8fb-1d30-4520-aa7f-c73c2c1da570"), Format.Presentation, "Extending Continuous Integration: Implementing a full value chain from development to production in Java EE", Option.some(new WikiString("h1. Required experience: \n\nThe participants should have worked with Java in an enterprise context or had architectural responsibility for such a project.\n\nh1. Expected audience: \n\nArchitects and developers will come away from the session with an understanding of what part of the agile hype is real, what it requires to adopt, and how to get started.")), Option.some(Advanced), Option.some(new Interval(1221725700000L, 1221725700000L)),Option.some("Lab 3"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session66 = new Session(new SessionId("20ff4647-911b-492c-8e53-23216d5a23e6"), Format.BoF, "FitNesse in the real world - yes, it really does work.", Option.some(new WikiString("")), Option.some(Introductory), Option.some(new Interval(1221672600000L, 1221672600000L)),Option.some("Lab 6"), List.<Label>list(BOF), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session67 = new Session(new SessionId("08e5722a-2e75-4c6c-8760-e8911dec9672"), Format.Presentation, "Fra kildekode til bytecode - Implementering av egne språk for JVMen", Option.some(new WikiString("h1. Outline:\n* Kompilatorteori \n* Fra kildekode til bytecode \n** Lexing \n** Bygging av AST \n** Semantikk \n** Generering av bytecode \n* Motivasjon\n* Oppsummering \n\nh1. Language:\n Norsk\n \nh1. Level:\n Intermediate/Advanced \n\nh1. Required Experience: \nDeltakerne vil ha en fordel av god forståelse av JVM-plattformen. \n\nh1. Expected Audience: \nUtviklere som er nysgjerrige på hvordan språkene til plattformen vi jobber på til daglig fungerer.\n\n")), Option.some(Intermediate_Advanced), Option.some(new Interval(1221634800000L, 1221634800000L)),Option.some("Lab 6"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session68 = new Session(new SessionId("35ea9bc0-feeb-4d82-a8fc-3997368add16"), Format.Presentation, "Fri programvare - lønnsom innovasjon?", Option.some(new WikiString("h1. Om Friprogsenteret:\n\nFriprogsenteret er en pådriver for verdiskaping i offentlig sektor og\nnæringsliv. Som uavhengig kompetansesenter er vår oppgave å skape\ntrygghet for valg, bruk og deling av fri programvare. Dette gjør\nFriprogsenteret ved å spre kunnskap, bygge nettverk og tilby arenaer for\ndeling. Friprogsenteret eies av Troms og Buskerud fylkeskommuner, Rådet\nfor Drammensregionen, Høyskolen i Buskerud, KS og IKT-Norge.")), Option.some(Intermediate), Option.some(new Interval(1221634800000L, 1221634800000L)),Option.some("Lab 5"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session71 = new Session(new SessionId("e33cae0c-31f0-4559-9cbb-d7a2960f7ba5"), Format.Presentation, "Fully Distributed Scrum: The Secret Sauce for Hyperproductive Outsourced Development Teams", Option.<WikiString>none(), Option.some(Intermediate), Option.some(new Interval(1221639300000L, 1221639300000L)),Option.some("Lab 4"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session72 = new Session(new SessionId("e7db6126-e196-4561-850f-011306414af4"), Format.BoF, "Future and Present of Java ME development – Netbeans Mobility IDE", Option.some(new WikiString("h1. Subjects of this session\n\n*Present:\n** Visual Mobile Designer for MIDP, Game Builder for Game API, Databinding library for Java ME, Device fragmentation solution, Deployment, Support for SVG\n*Future:\n** Support for Open Source and non Open Source Java ME platforms: PhoneME, MicroEmulator or Sprint Titan\n** MIDP 3.0\n** Visual Databindings\n\nh1. Outline\n\n* Why is Java ME so difficult\n* Give us some tools\n* Making better and nicer applications\n* Future of Java ME\n* Q & A")), Option.some(Intermediate), Option.some(new Interval(1221672600000L, 1221672600000L)),Option.some("Lab 4"), List.<Label>list(BOF), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session77 = new Session(new SessionId("b34f942b-fcc3-48f8-b563-4378f6218219"), Format.Presentation, "GridGain 2.0 – Grid Computing Made Simple", Option.some(new WikiString("h1. Outline: \n* Introduction \n* What is Grid Computing? \n** Compute grids (MapReduce) \n** Data grids \n* Why is Grid Computing? \n** Real-life examples \n** When to use grid computing? \n** When NOT to use grid computing? \n* MapReduce: GridGain vs. Hadoop \n** Pros and Cons \n* What is GridGain? \n* Key Features \n* Live coding demonstration \n* Conclusion \n* Q&A \n\nh1. About GridGain: \nGridGain is the fastest growing open source Java grid computing framework. In \nthe first 6 months since the first release in august 2007 GridGain has been \ndownloaded over 15000 times, used by more than 500 unique projects and grid \nnode with GridGain starts somewhere around the globe every 60 seconds. \n\nGridGain has active production and testing users on all continents and in over \nseveral dozen different countries. \nGridGain project has financial sponsorship of GridGain Systems that sponsors \nthe development and provides commercial services around it. \n\nh1. Required Experience: \n* Java 5 \n* Basics of AOP \n\nh1. Expected Audience: \nAudience is expected to include developers, architects and technical managers \nwho are interested in grid computing technology that breaks away from traditional \nmold and makes Java grid computing fun, simple and productive to use. \nWe are expecting this talk to be really interesting and popular among the \nattendees as it includes a live end-to-end demonstration of something that not so \nlong ago would require weeks and months of just configuration and was part of \nonly privileged projects in the government research and large corporate sectors. \n")), Option.some(Advanced), Option.some(new Interval(1221725700000L, 1221725700000L)),Option.some("Lab 4"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session79 = new Session(new SessionId("dc7e58b1-017c-4cb3-b942-18305dd59a92"), Format.Presentation, "Groovy, The Red Pill: The Groovy Way to Blow a Buttoned-Down Java Developer's Mind", Option.some(new WikiString("h1. Summary\nWe'll start by talking about how you can thumb your nose at The Man by leaving out many of the main syntactic hallmarks of Java: semicolons, parentheses, return statements, type declarations (aka duck-typing), even try/catch blocks. Of course, there's no way that we'd leave metaprogramming out of the discussion...\n\nWhat is metaprogramming? We'll add new methods to classes at runtime -- even if they were originally implemented in Java; even if they were declared final. (Thanks, ExpandoMetaClass!) We'll call methods that don't exist and avoid the dreaded MethodNotFound Exception. (Thanks, invokeMethod!) We'll narrowly scope our metaprogramming shenanigans using Use blocks and Categories, and then cast our changes to the wind such that every instance of a class gets our added juice.\n\nIf you are happy taking the Blue Pill, this talk is not for you. You can continue using Groovy as a slimmed-down dialect of Java -- an \"After\" picture to Java's \"Before\". If, however, the Red Pill looks interesting, please join me. Remember, all I'm offering is the truth. Nothing more.\n\nh1. Expected audience:\nThis session is aimed squarely at Java developers. The more experience you have, the better, but even neophytes will appreciate what Groovy offers Java developers.\nExperience with other dynamic languages like Ruby, JavaScript, or Python will help, but certainly isn't required.\n\nh1. Required experience:\nYou should be comfortable with the basic syntactic rules of Java (so that we can mercilessly squash them). You should understand the basic \"Laws of Java\" when it comes to the semantics of a statically typed language (so that we can kick sand in its face). Most importantly, you should posses an open mind and a belly full of Dynamic-language KoolAid. This is not the forum for someone to vocally defend the merits of checked exceptions and static typing. You will be unceremoniously tossed out on your ear, Jerry Springer-style. Seriously. I'm not trying to convince you that this is the way you should write Java. The status quo can defend itself quite nicely, thank you very much. I'm here to show you how your code could look, if you so desire. ")), Option.some(Intermediate), Option.some(new Interval(1221668100000L, 1221668100000L)),Option.some("Lab 1"), List.<Label>list(Emerging), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session81 = new Session(new SessionId("35a823d0-e726-4a0b-86df-510ab7ef3c52"), Format.Presentation, "Groovy, the Blue Pill: Writing Next Generation Java Code in Groovy", Option.some(new WikiString("h1. Summary\nWe'll look at the dramatic reduction in line of code you can achieve by simply flipping your POJOs to POGOs (Plain Old Groovy Objects). We'll talk about calling Java classes from Groovy, and calling Groovy classes from Java. We'll look at Groovyc, the integrated compiler that manages Groovy/Java dependencies without a hiccup.\n\nThere are wild-eyed radicals out there telling you that Java is dead, statically-typed languages are passe, and your skills are hopelessly out-of-date. Those extremists are the same ones who don't bat an eye at throwing out years of experience to learn a new language from scratch, pushing aside a familiar IDE for a new one, and deploying to a whole new set of production servers with little regard to legacy integration.\n\nWhile this \"burn the boats\" approach to software development might sound exciting to some folks, it's giving your manager the cold shakes right now. What if I told you that there was a way that you could integrate seamlessly with your legacy Java code, continue to use your trusty IDE and stable production servers, and yet take advantage of many of the exciting new dynamic language features that those fanatics keep prattling on about? You'd probably say, \"Groovy!\" I would, too...\n\nNot once will I tell you to throw out the old in favor of the new. In each case, I'll show you how to integrate the new with the old. Don't throw out your Ant build scripts; mix in a bit of Groovy to spice 'em up. Don't toss out your existing unit tests. (You are unit testing, aren't you? AREN'T YOU?) If not, Groovy is the perfect excuse to get started with a new language in way that improves the quality of your Java application without actually putting the new code into production. That is, until you get hooked on doing things the Groovy way...\n\nIf the Red Pill of Dynamic Languages scares the pants off of you (or your manager), don't worry about it. The Blue Pill still offers plenty of benefits. There is no other language on the JVM that offers you the level of deep Java compatibility such that you could rename your \"dot J-A-V-A\" files to \"dot G-R-O-O-V-Y\" and not skip a beat. Of course, they both end up with a \"dot C-L-A-S-S\" extension at the end of the day, so there's good chance that no one would ever be the wiser anyway. Groovy: funny name, serious software, and Java through-and-through.\n\nh1. Expected audience:\nThis session is aimed squarely at Java developers. The more experience you have, the better, but even neophytes will appreciate what Groovy offers Java developers.\n\nh1. Required Experience:\nNothing more than standard Java knowledge. ")), Option.some(Introductory), Option.some(new Interval(1221663600000L, 1221663600000L)),Option.some("Lab 1"), List.<Label>list(Emerging), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session85 = new Session(new SessionId("1559daf7-fae3-4d77-a4d7-fc27347248fc"), Format.Presentation, "Guerrilla SOA", Option.some(new WikiString("In this talk Jim will discuss how protocol-centric approaches like Web\nServices or the RESTful styles can constitute a robust integration\nfabric, providing the same benefits as proprietary middleware without\nvendor lock-in, and show how incremental, endpoint-centric integration\nis a viable strategy for enterprise service-oriented systems.\n\nh1. Outline\n* Historical perspective of EAI\n* Enterprise Architecture Today\n* Deploying an ESB\n* Enterprise architecture medium, long term\n* Spaghetti Oriented Architecture\n* Using commodity integration\n* Web Services example\n* Aiming for high cohesion with loose coupling\n* Arriving at SOA\n\nh1. Required experience\nParticipants in this session should be aware of general SOA concepts \nsuch as services and buses. Architecture experience is useful, but not \nnecessary.\n\nh1. Expected audience\nArchitects and developers with an interest in SOA and enterprise \narchitecture. No technical pre-requisites are necessary, but a sense \nof optimism, fun, and open-mindedness would be useful.")), Option.some(Intermediate), Option.some(new Interval(1221639300000L, 1221639300000L)),Option.some("Lab 1"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session86 = new Session(new SessionId("5528b9b3-d74a-43bf-9e33-a6dcc44aeec2"), Format.Presentation, "Hands on JavaFX", Option.some(new WikiString(" Some of the topics covered will be:\n - A JavaFX tutorial\n - Binding the UI to a model\n - Using a graphical node-based UI approach to create \"filthy-rich clients\"\n - Understanding sequences -- the native JavaFX data structure\n - Using triggers to eliminate need for setters\n - Deploying JavaFX appl")), Option.some(Introductory), Option.some(new Interval(1221735600000L, 1221735600000L)),Option.some("Lab 3"), List.<Label>list(Web), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session88 = new Session(new SessionId("1a8fd8a9-9fdb-4d6d-89a3-8b830ea75166"), Format.BoF, "How Can Amazon EC2 Benefit from the Elastic Grid Solution?", Option.some(new WikiString("h1. Required Experience: \n\nNone\n\nh1. Expected Audience: \n\nUsers of Amazon Web Services in need of a good solution for scalability and management of their applications.")), Option.some(Intermediate), Option.some(new Interval(1221745500000L, 1221745500000L)),Option.some("Lab 6"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session89 = new Session(new SessionId("fbb42a67-773d-47f7-b3e8-7b6493b9333f"), Format.Presentation, "How I learned to love and hate web-testing", Option.some(new WikiString("h1. Outline\n\n* Background\n** A trip down memory lane in Storebrand: How did we get started? \n** How we learned to love web-testing, and \n** How we learned to hate it. \n* Web-testing practices\n** Testing the web and nothing but the web \n** Black-box testing \n** Acceptance/system testing \n** Integration testing \n** How to fit web-tests into the rest of your test-model \n** How web-tests can give you good URLs and HTML design \n** Running web-tests on the Continous Integration server \n** Getting your users to help out: delivering bug reports with test-scripts \n** Test fixtures \n* Advanced web-testing\n** Acceptence web-testing combining FitNesse and Selenium \n** Behaviour-Driven Development with web tests (Selenium combined with the RPsec Story Framework) \n** Web tests from a test strategy perspective \n** How to scale (with Selenium Grid)\n* Pitfalls\n** Too many tests \n** Too slow tests \n** The tests break all the time! \n** Some refactoring breaks all the tests \n** Using web-tests for everything \n** How to combine system testing with manual testing \n** Capturing system requirements in web tests \n* QA\n\nh1. Required experience: \n\nNo particular experience is strictly required, but having tried out some web- testing tool could be an advantage. \n\nh1. Expected audience:\n\n* Web developers \n* QA/testers \n* People interested in testing in general \n\nh1. By attending this presentation, participants will learn... \n\n* How to get started with web-testing \n* How to keep doing it successfully \n* How to use web-tests as part of an agile project \n\n")), Option.some(Introductory), Option.some(new Interval(1221731100000L, 1221731100000L)),Option.some("Lab 4"), List.<Label>list(Web), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session91 = new Session(new SessionId("951239d3-9fdc-4ea1-8efc-49eb2099f85d"), Format.Presentation, "How to implement a dynamic map in your web page (without\nmarrying a vendor)", Option.some(new WikiString("h1. Outline:\n* Introduction\n** What's in it for me! Why is an open source map client interesting?\n* A few concepts\n** Projections. Why it matters, and what you need to know about it.\n** Libraries for projections, proj4 and derivatives. A short, short\n** slide about the math.\n* Map data\n** Free WMS sources. NASA. Google.\n** Why you need a tile cache, and how can make one.\n* Combining other geographical information\n** Let's integrate and plot data from some sources. Perhaps Flickr and Yr?\n* Why Oslo Plaza suddenly may be in surrounded by water, if you didn't understand projections.\n* Demo\n** Putting it together, combining map data and sources.\n* Tile cache\n** How to determine if you need one, and how to size it. A simple demo in java.\n\nh1. Required experience: \nCuriousness for map. The mapping concepts will be simplified.\n\nh1. Level: \nIntroductory\n\nh1. Expected audience:\nThose who wants to implement a map solution, and those who have geographical data and wonder how they can use it better.\n")), Option.some(Introductory), Option.some(new Interval(1221634800000L, 1221634800000L)),Option.some("Lab 4"), List.<Label>list(Web), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session92 = new Session(new SessionId("249f933f-176b-4787-9a6e-5d309ef8889f"), Format.Presentation, "How to please your wife - The leap from strategy to implementation ", Option.some(new WikiString("h1. Outline:\n* Introducing a classic scenario - From strategy, through requirement specification to development.\n* The problems - What are we loosing along the way?\n* A different approach - It only works if it's important enough and we lean in.\n* Q & A\n\nh1. Required experience:\nExperience from software development projects\n\nh1. Expected audience:\nIT-managers, Project Managers, Technical Managers or other experienced people who have been involved somewhere in the process from where a strategy is defined to the implementation of the IT-system starts.")), Option.some(Intermediate), Option.some(new Interval(1221721200000L, 1221721200000L)),Option.some("Lab 4"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session94 = new Session(new SessionId("d8670756-fd6b-4327-9e22-ed8cb7a72d55"), Format.Presentation, "Hvorfor Læring av Erfaring er Vanskelig og Hvordan Bli Bedre (inklusiv NM i estimering)", Option.some(new WikiString("h1. Outline:\n* En interaktiv oppgave som illustrerer hvor lett man feillærer i en systemutviklingskontekst.\n* Evidensbaserte anbefalinger for å bli bedre til å lære av erfaring. Presentasjonen vil bygge på flere av våre egne studier om læring og på kjente læringsskjevheter (som å se mønster der ingen finnes, å vektlegge direkte men overse \"systemtiske\" årsaker, forskjell i type årsaksanalyse som gjøres i når man lykkes (\"vi lykkes\"), og mislykkes (\"utenforstående hendelser gjorde slike at vi ...\"), m.m.\n* Norgesmesterskap i estimerings\n\nh1. Required experience: \n\nIngen spesiell.\n\nh1. Expected audience: \n\nAlle med interesse i bedre læring av erfaring")), Option.some(Intermediate), Option.some(new Interval(1221668100000L, 1221668100000L)),Option.some("Lab 5"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session96 = new Session(new SessionId("16721089-1c46-42e8-b357-fadbd3db732e"), Format.Presentation, "I'm sick of agile theory, now tell me something useful ", Option.some(new WikiString("h1. Outline\n\n* Intro - Bakgrunn\n* Problemområder og forbedringspotensialer\n** Cargo cult \n** Synlighet \n** Hindringer fungerer som strikk - tilbake til gamle synder \n** Smidige team: Felles mål - hver vår båt? \n** Skape felles forståelse \n** \"Hvordan kommunisere med teknologer\" \n* Prosjektøkonomi\n** Hvorfor smidig lønner seg \n** Økonomisjefens case for smidig \n** Hva koster egentlig en forsinkelse \n* Oppsummering \n* Q & A\n\nh1. Required experience\nGrunnleggende kunnskap om smidig prosjektmetodikk er en forutsetning. Praktisk erfaring er en fordel. \n\nh1. Expected audience\nProsjektledere og utviklere vil få en dypere forståelse, inspirasjon og konkrete tips til å forbedre prosessene de er en del av. Kunder og prosjektinteressenter vil få større forståelse av hvorfor de bør kjøre smidig, og konkrete innspill til hva de bør fokusere på. ")), Option.some(Intermediate), Option.some(new Interval(1221659100000L, 1221659100000L)),Option.some("Lab 4"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session99 = new Session(new SessionId("b2faadc6-77f4-474e-a413-e1588a61c3de"), Format.Presentation, "Introducing the Scala Programming Language", Option.some(new WikiString("It is scalable in the sense that it is designed to be useful in a wide range of tasks, scaling up to very large programs written by many people and down to short scripts written by individuals. The conciseness and expressiveness of Scala gives it the feel of dynamic languages such as Python or Ruby, but Scala also provides a rich static type system that can help programmers prevent errors. In this talk, Bill Venners will give an introduction and overview of the Scala programming language.")), Option.some(Introductory), Option.some(new Interval(1221745500000L, 1221745500000L)),Option.some("Lab 1"), List.<Label>list(Emerging), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session100 = new Session(new SessionId("26b6bde2-86e3-40ce-a4d2-d55b2aa9380d"), Format.Presentation, "Introduction to Behaviour Driven Development ", Option.some(new WikiString("This presentation will give an introduction to the principles and practices of BDD and demonstrate how\nyou can make your plain text User Stories executable with RSpec's Story Framework, running against Java code.\nThe RSpec framework itself is written in Ruby, but JRuby makes it possible to make your stories run against\napplications written in Java.")), Option.some(Intermediate), Option.some(new Interval(1221721200000L, 1221721200000L)),Option.some("Lab 3"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session108 = new Session(new SessionId("63738359-7150-40de-9215-cc4c03b99d08"), Format.Presentation, "JRuby Smörgåsbord", Option.some(new WikiString("h1. Outline:\n* Introduction to speakers\n* Introduction to Ruby\n** short Ruby features walkthrough\n** short interactive demo\n* Introduction to JRuby\n** short interactive demo of Ruby calling Java libraries\n* JRuby use cases\n** Swing GUI development\n** Swing demo\n** Graphic development with Processing and/or JMonkeyEngine\n** Graphics demo\n** Web development with Ruby on Rails\n** Rails demo\n* JRuby future\n* Conclusion, links, and discussion")), Option.some(Intermediate), Option.some(new Interval(1221659100000L, 1221659100000L)),Option.some("Lab 3"), List.<Label>list(Emerging), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session111 = new Session(new SessionId("5b0db4d0-9b70-4d49-a1b8-bfdfe75ee5ac"), Format.Presentation, "Java 6 update 10, ease of deployment and Java SE 7 ", Option.some(new WikiString("\nThe talk will explore the features that are being explored to create \nleaner and meaner JRE that eases deployment and installation. The features that are being looked into will ease start-up time, provide a quick launch and on-demand installation, among other things. The talk will explore the Java Kernel and other features that ease applet and application instantiation and deployment. We will also look at features that enable building richer client applications with Java SE 6 Update 10. The talk will also look into features of Java SE 7.\n\nAfter attending this session attendees should be able to walk away with a good\nunderstanding of where the Java SE platform is headed and how this should ease\ntheir development and deployment concerns for consumers.")), Option.some(Introductory_Intermediate), Option.some(new Interval(1221653700000L, 1221653700000L)),Option.some("Lab 2"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session119 = new Session(new SessionId("6d25d835-15eb-4670-b9ef-365b5697f89c"), Format.BoF, "Kannibaler, klassifikasjon og representasjoner av virkeligheter", Option.some(new WikiString("h1. Outline\n\n* Innledning med tanker fra klassifikasjon av tidlig kannibalismestudie knyttet mot stekt/kokt mat og binære opposisjoner\n* Gjøre kort greie for hovedteorier innenfor klassifikasjon og kategorisering som vi kan dra/drar nytte av i teknologisk øyesmed.\n* Representasjon av virkelighet – eksempler på innhold vi tar for gitt å representere ’sannhet’\n* Makt: definisjon, utvalg, navngivning, begreper, språk.\n* Subjektive fortellergrep\n* Søken etter det autentiske og egne funn om at innhold oppleves objektivt gjennom subjektive fortellergrep pga identifikasjon. Trekke ut noen gjennomgående trekk ved forståelse som identifikasjon, nær‐ og likhet og assosiasjon i menneskets tenkning. Lydklipp fra egne informanter som eksempel. Trekke tråden til eksempler på subjektive. fortellergrep formidlet gjennom www (twitter, facebook) og TV (reality, nyheter)\n* Avslutte med å presentere tall for mengden av elektronisk informasjon som distribueres på verdensbasis og (u)muligheten for deltakelse i den elektroniske verden på den ene siden og www som demokratiserende og deltakende på kryss av landegrenser på den andre.")), Option.some(Introductory_Intermediate), Option.some(new Interval(1221672600000L, 1221672600000L)),Option.some("Lab 1"), List.<Label>list(BOF), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session120 = new Session(new SessionId("72dcd445-4352-4a47-8039-d1bdcfe34de5"), Format.Presentation, "Kartløsningen i MATS-prosjektet", Option.some(new WikiString("h1. Outline\n\n* Kort innledning 5 minutter\n* Behovene og bruksområdene for kart i MATS-prosjektet\n* Hva er OpenLayers, GeoServer og WMS?\n* Utfordringer og erfaringer i MATS rundt kartklienten\n* En liten demo\n\nh1. Required Experience\n\n* Basiskunnskap om Java, webprogrammering og SWING.\n* Basiskunnskap om arkitektur\n\nh1. Expected Audience\n\n* Utviklere og arkitekter som ønsker å implementere en kartløsning med\n web-basert kartklient integrert mot en eksisterende webklient\n og/eller java-applikasjon")), Option.some(Intermediate), Option.some(new Interval(1221745500000L, 1221745500000L)),Option.some("Lab 5"), List.<Label>list(Experience), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session123 = new Session(new SessionId("3a761e8a-bdae-4a5f-a461-636be808ae99"), Format.Presentation, "Latest debugging techniques for Swing applications", Option.some(new WikiString("h1. Expected audience:\nIf you are experienced or beginner in Swing and want to increase your productivity this session is for you. The session is going to present the latest debugging know hows appeared this year.")), Option.some(Intermediate), Option.some(new Interval(1221668100000L, 1221668100000L)),Option.some("Lab 3"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session125 = new Session(new SessionId("cb610d38-89bf-453d-a387-9ca2b7ce7cce"), Format.Presentation, "Listening to Test Smells", Option.some(new WikiString("In this talk, I will work through examples of \"smelly\" tests, showing how they highlight design flaws and suggest improvements.")), Option.some(Intermediate), Option.some(new Interval(1221639300000L, 1221639300000L)),Option.some("Lab 3"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session126 = new Session(new SessionId("88dd106c-94d3-44cf-9b6a-f7b4ef552b3c"), Format.Presentation, "Managing one-to-too-many relations in rich domain models", Option.some(new WikiString("h1. Outline:\n\n* Problem description\n* Relations and collections with Object-Relational Mapping libraries (Hibernate)\n* Fix for \"running out of time\": avoiding needless lazy-loading of large relation set for simple summation\n* Fix for running out of memory: Paged Iterations / moving objects out of memory again\n* Fix for running out of both time and memory: background fragment processing\n* Things we haven't tried yet that we think might work\n* Summary\n\nh1. Duration:\n50 + 10 min\n\nh1. Language:\n The talk can be given in english or norwegian. Slides in english\n\nh1. Level:\nIntermediate\n\nh1. Required experience:\nPrior exposure to SQL databases and Object Relational mapping is recommended\n\nh1. Expected audience: \nDevelopers and solution architects\n")), Option.some(Intermediate), Option.some(new Interval(1221740100000L, 1221740100000L)),Option.some("Lab 6"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session127 = new Session(new SessionId("cc018927-c596-4d64-b07f-9ceabef3a805"), Format.Presentation, "Managing wicked projects - a survival guide ", Option.some(new WikiString("h1. Outline:\n\nThe presentation will give practical advice on how to manage such projects, and will cover:\n\n* What wicked projects are\n* The life (and death) of a software product\n** Handling support and O&M in parallell with development work\n** Improving quality\n** Handling bugs, requirements and releases\n** Handling estimation, planning and monitoring of progress\n** Handling expectation management and communications in general\n** Handling external dependencies\n\nWe will focus on presenting practices that have proved beneficial in projects of this kind, and that should be part of any project manager's toolbox. Some practices we'll cover are:\n\n* Bug-Driven Development: Using bugs to improve overall code quality\n* Don't Estimate - Timebox. When not to estimate\n* Don't Judge - Count. Improving estimates by freeing developers from time estimates\n* Pay your debt: When and how to work off technical debt\n* Two-page Architecture: Sufficient technical documentation\n* Information Gatekeepers: Preventing information overload and thrashing\n* Prioritized Feature List: Controlling volatile requirements\n* Planning Horizons: How much to plan\n\nh1. Language:\nEnglish\n\nh1. Level:\nIntermediate\n\nh1. Required experience:\nProject management (software development)\nParticipation in software development projects \n\nh1. Expected audience:\nProject managers, project owners, other project participants\n\n")), Option.some(Intermediate), Option.some(new Interval(1221731100000L, 1221731100000L)),Option.some("Lab 2"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session131 = new Session(new SessionId("3bdb2e72-cb46-4bd6-b532-bb8548406462"), Format.BoF, "Mutation testing - Code coverage 2.0", Option.some(new WikiString("h1. Outline\n\n* What is mutation testing and analysis?\n* A few of examples setting the stage\n* An overview of mutation operators\n* Tools and integration with the IDE and build system\n* Mutation test demonstrations\n* Summary - Guidelines and caveats\n* Questions\n\nh1. Required experience\n\nKnowledge of Java programming and testing is recommended.\n\nh1. Expected audience\n\nThis will be a techy session targeting developers and architects. ")), Option.some(Introductory), Option.some(new Interval(1221721200000L, 1221721200000L)),Option.some("BoF"), List.<Label>list(BOF), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session135 = new Session(new SessionId("10f433f8-9180-4acc-95cc-cca46f7afd4d"), Format.Presentation, "Newspeak 101 for Java Programmers ", Option.some(new WikiString("Newspeak takes the principle\nof programming to an interface to its logical conclusion: every\noperation in Newspeak is effectively a virtual method invocation. This\nincludes references to fields, classes and superclasses. Classes my\nnest arbitrarily, as in Beta. Since all names are late bound, all\nclasses are virtual; in particular, superclasses are virtual, so all\nclasses act as mixins.\n\nThere is no static state in Newspeak. Instead,\ntop level classes act as module definitions, which are independent,\nimmutable, self-contained parametric namespaces. They can be\ninstantiated into modules which may be stateful and mutually\nrecursive. \n\nNaturally, like its predecessors, Newspeak is reflective:\na mirror library allows structured access to the program meta-level,\nincluding the ability to modify the code while it executes. Synergy\nbetween a small number of key design decisions makes for a language\nthat is small, expressive, modular, and lays a foundation for security\nas well. ")), Option.some(Intermediate), Option.some(new Interval(1221653700000L, 1221653700000L)),Option.some("Lab 5"), List.<Label>list(Emerging), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session142 = new Session(new SessionId("70fb0022-9eb5-41a8-af8b-15281c4c18ad"), Format.Presentation, "Objects of Desire", Option.some(new WikiString("Many developers working in Java have not had the opportunity or exposure to effective object-oriented practice that would allow them to avoid common design pitfalls and to make more effective use of the language.\n\nAlthough object orientation is far from being a new approach (think Sergeant Pepper), and it's also far from being obscure, its mainstream adoption by programmers and programming languages alike is not always as effective as it could be, and sometimes the results can be less than desirable (to put it politely). This session aims to put a number of concepts many developers may be unsure of on a firmer footing, highlighting common pitfalls in OO practice -- such as abuse of inheritance, simplistic getter/setter interfaces, patternitis, use of singleton objects -- and emphasising techniques that promote an easier life -- such as loose coupling, unit testability, pattern-based design thinking, incremental and sufficient design. ")), Option.some(Intermediate), Option.some(new Interval(1221725700000L, 1221725700000L)),Option.some("Lab 1"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session145 = new Session(new SessionId("67f71e05-77cb-4ce3-82b0-193a7265a0ae"), Format.Presentation, "Opphavsrett og datamaskinprogrammer - Kansellert pga sykdom", Option.some(new WikiString("I et program er funksjoner viktig, mens formen kan være sentral i poesi – og opphavsretten verner bare uttrykket. Opphavsmannen får en enerett til å utnytte verket – både poesi og program. Men til gjengjeld skal hvem som helst kunne lese lyrikken, skjønne den, bli klokere og dikte videre selv. Et program i objektkode lar seg i praksis ikke lese – er dette en slags bristende forutsetning for å gi det vern?\n\nNoen av disse spørsmålene besvares, samtidig som det gis en kort innføring i det opphavsrettslige vernet av datamaskinprogrammer, overgang av rettigheter i arbeids- og oppdragsforhold, og forholdet til patentering av programmer. Det forutsettes ingen forkunnskaper, så foredraget innledes med en presentasjon av opphavsmann, åndsverk og enerettene til å råde over programmet.\n")), Option.some(Introductory), Option.some(new Interval(1221644700000L, 1221644700000L)),Option.some("Lab 1"), List.<Label>list(Experience), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session146 = new Session(new SessionId("34455cd5-9a8c-4599-9101-fdbfb6a6e565"), Format.Presentation, "Panel: Alternative and Emerging Languages", Option.some(new WikiString("")), Option.some(Intermediate), Option.some(new Interval(1221750000000L, 1221750000000L)),Option.some("Lab 1"), List.<Label>list(Emerging), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session149 = new Session(new SessionId("7c9a77e8-bf12-42a2-96fd-fe9c8109fda0"), Format.Presentation, "Prediction Markets - A different approach to software cost estimation", Option.some(new WikiString("h1. Outline:\n* Introduksjon, 5 min\n* Hvordan virker et Prediction Market (PM), 10 min\n* PM som teknikk for å estimere systemutvikling, 20 min\n* Erfaringer fra innføring av PM i et prosjekt, 15 min \n\nh1. Required experience:\nNone\n\nh1. Expected audience:\nAnyone interested in software cost estimation")), Option.some(Introductory), Option.some(new Interval(1221644700000L, 1221644700000L)),Option.some("Lab 6"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session151 = new Session(new SessionId("b0d7e8ba-f366-478f-ac7d-c8876226fbd2"), Format.Presentation, "Programvare er politikk", Option.<WikiString>none(), Option.some(Intermediate), Option.some(new Interval(1221639300000L, 1221639300000L)),Option.some("Lab 5"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session152 = new Session(new SessionId("9cf67db0-cf29-4cd0-b9ff-3277396b7d4b"), Format.Presentation, "Project Hydrazine: JavaFX Open Cloud Computing Platform", Option.some(new WikiString("h1. Outline:\n\nProject Hydrazine provides a hosted developer platform with service-enablers, cloud service runtime, and Netbeans JavaFX tools to rapidly develop and deploy personalized, contextual and blended RCA applications. Project Hydrazine hosted runtime environment leverages Sun's unique open-source software infrastructure (OpenSolaris, Glassfish, mySQL, OpenSSO, OpenDS and OpenESB) to deliver an open, secure, scalable and reliable cloud runtime environment. In addition, Project Hydrazine will provide an extensive repository and catalog of services. These include foundation infrastructure services as well as ISV and community developed services.\n\nThis talk will discuss the state of the art of cloud computing, differentiate\nProject Hydrazine approach versus Amazon's EC2 and Google's App Engine\ncloud computing platforms. The talk will present Project Hydrazine architecture\nand service-enablers, and demonstrate how to create and deploy new Hydrazine services.")), Option.some(Introductory), Option.some(new Interval(1221653700000L, 1221653700000L)),Option.some("Lab 1"), List.<Label>list(Web), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session153 = new Session(new SessionId("075cdae0-0455-43ad-b6a1-57ee6c8bda0c"), Format.Presentation, "Qi4j - a new approach to old problems", Option.some(new WikiString("h1. Suggested experience\n\nAOP, EJB, DDD, Java\n\nh1. Expected audience\n\nDevelopers who want to understand what COP and Qi4j is all about should go. Understanding and using Qi4j will give developers a new tool that enables them to more easily write reusable code using the concepts from Domain Driven Design.")), Option.some(Advanced), Option.some(new Interval(1221649200000L, 1221649200000L)),Option.some("Lab 3"), List.<Label>list(Emerging), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session154 = new Session(new SessionId("3887a0d0-cc67-4c89-aba1-cf572dacd553"), Format.Presentation, "Quercus", Option.some(new WikiString("")), Option.some(Intermediate), Option.some(new Interval(1221659100000L, 1221659100000L)),Option.some("Lab 5"), List.<Label>list(Emerging), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session155 = new Session(new SessionId("4262bb14-7fd2-48b1-a55f-b56a67069f46"), Format.Presentation, "RESTful Web Services with Spring", Option.some(new WikiString("h1. Outline: \nWe will start by giving an overview of REST: where did it come from,\nhow does it work, and how can it be used to build a distributed\narchitecture? Using illustrative examples, we will try to find an\nanswer to these questions.\n\nNext, we look at some of the current frameworks and tools which can be\nused to build web services. We will look at Spring-MVC and JSR-311\n(also known as JAX-RS) on the server-side, and also investigate client-\nside options, such as the plain HttpURLConnection, and the more mature\nCommons HttpClient.\n\nh1. Prerequisites:\nSpring framework knowledge")), Option.some(Intermediate), Option.some(new Interval(1221644700000L, 1221644700000L)),Option.some("Lab 5"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session157 = new Session(new SessionId("a35c118c-75d9-4456-9807-52d2811d0638"), Format.Presentation, "Real-world OpenESB, best practices and experiences", Option.some(new WikiString("h1. Outline\n\n* Basic OpenESB/GlassFish integration overview.\n* Basic JBI overview.\n* Scripting and automating deployments, clusters, node agents, service engines, binding components.\n* Working with NetBeans and OpenESB.\n* Structuring artifacts\n* Patterns for integration.\n* Tuning and performance considerations.\n\n\nh1. Language\nEnglish\n\nh1. Required experience\nJava, JavaEE and some knowledge of integration using an ESB\n\nh1. Expected audience\nDevelopers and architechts are the intended audience.\n\n")), Option.some(Intermediate_Advanced), Option.some(new Interval(1221721200000L, 1221721200000L)),Option.some("Lab 2"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session158 = new Session(new SessionId("65d12002-6474-4d67-a934-f84f36f0ca0a"), Format.BoF, "Refactoring Maven Projects", Option.some(new WikiString("h1. Outline\n\n* Introduction \n* How it all got started\n* What was the result of our first refactoring? \n* How did we use CI-servers? \n* How did we use the maven:release-plugin? \n* What other useful plugins did we use? \n* Where did we end up and what did we learn? \n* Q&A ")), Option.some(Introductory), Option.some(new Interval(1221740100000L, 1221740100000L)),Option.some("BoF"), List.<Label>list(BOF, Experience), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session161 = new Session(new SessionId("7860f71b-937c-41d2-b37b-5078c2c4430e"), Format.Presentation, "Riktig feilhåndtering (og ja, checked exceptions er skadelige)", Option.some(new WikiString("h1. Outline:\n\n* Feilhåndtering generelt og i Java spesielt\n* Overordnede tilnærminger\n** Distribuert - Lettvekts exception-hierarki\n** Sentralisert - Få felles exception-typer\n** Exception-typer - Applikasjonsfeil og systemfeil\n* Feilhåndtering er viktigere enn feilretting\n* Checked exceptions er skadelig og bør unngås\n* \"Sånn, ikke sånn\"\n** Bruk eksisterende exceptions\n** Ikke sluk exceptions\n** Fallgruver med try-catch-finally\n** Deklarasjon av exceptions i metodesignaturen\n** Russisk kone-exceptions\n** Håndtering av stacktrace\n** Unngå både logging og kasting\n** Logging for overvåkning, drift og forvaltning\n** Exception kontekst, feilkoder og instans-ID\n** Navngiving, moduler og pakking\n** Testing av exceptions \n\nh1. Required experience\n\nOnly Java programming knowledge is required.\n\nh1. Expected audience\n\nThis will be a techy session targeting developers and architects.")), Option.some(Introductory), Option.some(new Interval(1221649200000L, 1221649200000L)),Option.some("Lab 5"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session163 = new Session(new SessionId("84447564-468e-4180-aba4-6d0fc06d62a4"), Format.Presentation, "SMILE! YOU’RE ON FACEBOOK The social network is the portal", Option.<WikiString>none(), Option.some(Introductory), Option.some(new Interval(1221745500000L, 1221745500000L)),Option.some("Lab 3"), List.<Label>list(Web), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session166 = new Session(new SessionId("7708ab7a-bfdc-44a5-a15a-3c4eaf6ccdaf"), Format.Presentation, "SOA Governance – 5 common mistakes and how to avoid them", Option.some(new WikiString("h1. Outline:\n* What is Governance?\n* What tools help you with governance?\n* What are a registry/repository?\n* 5 Common mistakes in SOA governance:\n** Thinking governance is a product\n** Not having a centralized source of truth\n** Not enforcing architectural best practices\n** Reinventing the wheel\n** Inconsistent deployment strategies")), Option.some(Intermediate), Option.some(new Interval(1221740100000L, 1221740100000L)),Option.some("Lab 3"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session168 = new Session(new SessionId("dcf7a997-9865-4224-b3c7-17f5de756869"), Format.Presentation, "Scala? Ruby? Erlang? Python!", Option.some(new WikiString("h1. Outline:\n * Introduction \n * Python & Ruby \n * Python & Erlang \n * Python & Scala \n * Django \n * Q&A \n\nh1. Language:\n English\n\nh1. Level:\n The talk will be introductory but aimed at developers.\n\nh1. Required experience:\nDeveloper experience\n\nh1. Expected Audience:\nPeople who are interested in programming languages to use beyond and alongside Java.\n")), Option.some(Introductory), Option.some(new Interval(1221725700000L, 1221725700000L)),Option.some("Lab 2"), List.<Label>list(Emerging), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session174 = new Session(new SessionId("9865f506-c1a2-483c-96f5-7d2f8eb184d2"), Format.Presentation, "Sexier Software with Java and Flex", Option.some(new WikiString("h1. Outline\n* Intro to Rich Internet Applications (10 min)\n** RIA as the next generation of Software\n** Back to the Client-Server Model\n** Adobe's RIA Software Development Platform\n* Intro to building software with Flex (20 min)\n* What is Flex?\n** Open Source SDK\n** ActionScript & MXML Languages\n** Components\n* How do you use Flex?\n** Compiler\n** Debugging\n* Intro to BlazeDS (Java Integration) (20 min)\n** Installing BlazeDS into a Web App (WAR File)\n** Remoting (RPC style object invocations over HTTP)\n** Pub/Sub Messaging\n* Questions (10 min)\n\nh1. Required experience\nWeb app or Desktop app development\n\nh1. Expected audience\nDevelopers who want to build better UIs\n\n")), Option.some(Introductory), Option.some(new Interval(1221649200000L, 1221649200000L)),Option.some("Lab 4"), List.<Label>list(Web), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session175 = new Session(new SessionId("f7e9ceec-6405-4ee0-917a-017c048449cf"), Format.Presentation, "Sikkerheten i norske webapplikasjoner - Føler du deg trygg?", Option.some(new WikiString("h1. Abstract summary\nForedraget presenterer de vanligste sårbarheter i webapplikasjoner og trekker frem noen illustrerende skrekkeksempler hentet fra sikkerhetstester av norske webapplikasjoner. Vi vil så ta for oss hvordan Java-utviklere kan unngå å gjøre de samme feilene i sine\nutviklingsprosjekt.\n\nh1. Required experience: \nErfaring med utvikling av webapplikasjoner\n\nh1. Expected audience: \nUtviklere som føler de kan for lite om webapplikasjonssikkerhet")), Option.some(Intermediate), Option.some(new Interval(1221735600000L, 1221735600000L)),Option.some("Lab 4"), List.<Label>list(Web), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session178 = new Session(new SessionId("4d54c8c9-2fde-4a48-b4e1-72c49aaf17b0"), Format.Presentation, "Small is Beautiful – Scaling Agile to Complex Multi-Project Environments", Option.some(new WikiString("h1. Outline\n\n* Small Teams\n** Integrated Agile Team\n** Scaling Agile Teams\n** Stable Teams\n* Small Releases\n** Realigning the Portfolio\n** Incremental Funding\n** Managing the Flow \n* Small Governance\n** Self Management\n** Team Productivity\n** Portfolio Coordination \n** Organizational Process QA\n")), Option.some(Intermediate), Option.some(new Interval(1221740100000L, 1221740100000L)),Option.some("Lab 4"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session182 = new Session(new SessionId("8d87189d-89f8-44d8-a292-066bfe82bf44"), Format.BoF, "Smidige metoder - store prosjekter", Option.some(new WikiString("h1. Outline\n\n* 3 innledende lyntaler (10min) om smidige metoder i store prosjekter\n* + paneldebatt (30-40min)")), Option.some(Intermediate), Option.some(new Interval(1221745500000L, 1221745500000L)),Option.some("BoF"), List.<Label>list(BOF_Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session184 = new Session(new SessionId("21a4415a-5c2e-4f24-969d-71e3471aa508"), Format.Presentation, "Software and Metrics – Is quality measureable? Recipes to reach bettertechnology quality!", Option.some(new WikiString("h1. Outline: \nThe quality of software can be divided into two parts. The first part is the outer\nquality, also known as functional quality. This is the quality seen by the user of the\nsoftware. The second part is the internal quality, also known as technical quality. This\nis the quality seen by the software engineers. The testing of software is often only\nbased on functional testing. Because the functional testing is driven by the functional\nrequirements, the functional quality is easy to test and easy to measure. The\ntechnical part of the software is almost ignored, because the technical quality is\nharder to test. But the technical quality directly affects the functional quality.\nSometimes you have non-functional requirements like response time for a certain\nfunction, but other non-functional requirements, like maintainability, are not\nmeasured.\nThe talk will give the attendees ideas how to “test” or measure the technical quality of\ntheir software. I will give answers concerning basic questions on software quality,\nsource code, object model, software metrics and their relationship. I will give a short\nintroduction into basic terms and I will give a short overview on basic metrics and\nmetrics on a higher, aggregated level. Then I will show some open source tools like\nPMD, ckjm, JDepend and will discuss the usage problems. Tools like SonarJ, Sonar\nand Xradar have more benefits. They consolidate the basic reports of the basic tools\nto create more readable and understandable reports of your software.\nThe talk will have a focus on practical methods. I will also give examples based on\ndaily project practice and the usage based on the open source tool XRadar\n(xradar.sourceforge.net). XRadar is a toolkit for quality analysis for java based\nsoftware project. It is a reporting tool based on many other open source toolkits like\nPMD or JDepend.\n\nMotivation (5min)\no Why do we need to control quality?\no What big problems do we face when developing software?\n· What is technical Quality? (5min)\no Definition of basic terms\no What is quality, what is technical quality\no What are metrics?\n· How to measure Quality! (5 min)\no Introduction of different metrics\no Introduction of methodologies\no Basic to find quality criteria for your project.\no Why it is important to have good tools (Example: XRadar)\n· Implementation within project ( 10min )\no How to do measurement within software development process\no Showcase for some basic tools like PMD, ckjm etc. (Examples)\no Why do we need good integrated tools\n· Comparison of different integrated tools (15min)\no Comparing XRadar with other tools\no Showing the pro’s and con’ s of different tools\n XRadar\n SonarJ\n Crap4J\n Sonar\no Showing the usage of tools\n Xradar\n SonarJ\n· Conclusion (5 min)\no Giving pro’s and con’s for controlling technical quality\no Giving references to further reading, links, tools\no Will give a summary of basic action steps.\n\nh1. Required experience\nThe attendees “should have” experience what could happen if they have bad\nquality within their projects\n\nh1. Expected audience\n· Technical project leads, software architects and all people who are in charge\nfor delivering good quality to your customer.\n· The participants will learn why they should monitor the technical quality. The\nwill get an introduction into the basic methodologies as well as best practices.\nThey will be able to start increasing their technical quality right after the talk.")), Option.some(Intermediate), Option.some(new Interval(1221740100000L, 1221740100000L)),Option.some("Lab 5"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session186 = new Session(new SessionId("d2573703-b8f3-42d6-a5c2-2ba6c9ae3321"), Format.Presentation, "Son of SOA: Resource Oriented Computing and Event Driven Architectures", Option.some(new WikiString("h1. Who should attend\n* Infrastructure architects\n* Application architects\n* Senior developers\n* Application development managers\n\nh1. Why do attendees need to be aware of this information today?\n* Systems are built through the integration of decoupling points via ESBs, domain-specific languages, and shared memory mechanisms instead of direct integration of services, which is less flexible and more expensive in response to workflow or organizational changes\n* Event-driven systems allow for shorter time-to-market application development and integration independently of organizational changes\n* Treat computational resources as addressable entities (i.e. via object references, URIs, callbacks, etc.) that may be consumed on-demand rather than being intrinsically tied to specific applications\n* Event-driven systems can be implemented by leveraging existing infrastructure and SOA investment\n* Balance open-source vs. commercial products to avoid lock-in that results in higher costs and little or no flexibility during integration\n\nh1. What basics should attendees know before attending this session?\n* Enterprise service bus\n* Basic understanding of distributed data caching technologies\n* Enterprise integration patterns and SOA\n* Event-driven distributed programming basics\n* Java 5 or later\n* Domain-specific language basics\n\nh1. What problem(s)/challenge(s) will an attendee learn to solve by attending this session?\n* How to develop complex applications within very tight deadlines by formalizing system integration around a resource-oriented model\n* How to turn SOA-based systems into callbacks, breaking the rigid provider/consumer model\n* How to develop event-driven applications based on technologies and services already in production using a multi-language approach\n* How to integrate the existing applications by applying event-driven rather than centralized control techniques\n* How to extend SOA beyond transactions to include workflow processes and lossless transformations of resources from one representation to another\n\nh1. What else will attendees learn by attending this session?\n* Real world applications that use Mule ESB, OpenSpaces, Terracotta and OSGi\n* Examples of architecture, service objects, configuration files\n* Approaches to solving distributed data caching\n")), Option.some(Intermediate), Option.some(new Interval(1221644700000L, 1221644700000L)),Option.some("Lab 4"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session187 = new Session(new SessionId("6aa291af-e75a-4adc-bc27-498e95900335"), Format.Presentation, "Spring == XML, XML == sucks therefore Spring == sucks?", Option.some(new WikiString("h1. Outline:\n* Short introduction of myself\n* Short introduction of Dependency Injection as the general subject of the talk. There will be a lively, entertaining and mostly non-technical analogy for DI that will serve for thhe remainder of the talk\n* XML configuration option\n** Introduction\n** Demos\n** Drawbacks, advantages, hints, tips and tricks\n* @Component/@Autowired configuration option\n** Introduction\n** Demos\n** Drawbacks, advantages, hints, tips and tricks\n* @Bean/@Configuration option\n** Introduction\n** Demos\n** Drawbacks, advantages, hints, tips and tricks \n* Comparison to other frameworks / DI approaches and conclusion\n\nThe session is quite code intensive with relevant demos.\n\nh1. Level: \nAnybody can join in, as it's entertaining even for those without Spring experience. For advanced users there's something to learn as well.\n\nh1. Expected audience: \nAudience will leave with a clear understanding of Depedency Injection and the options Spring has to facilitate DI.")), Option.some(Introductory), Option.some(new Interval(1221668100000L, 1221668100000L)),Option.some("Lab 4"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session191 = new Session(new SessionId("29a5d8ee-1cbd-490f-87e8-2f639de5f2af"), Format.Presentation, "Swing Application Framework: One Year Later", Option.some(new WikiString("h1. Language:\nNorwegian (slides in english)\n\nh1. Level: \nIntermediate\n\nh1. Required experience:\nBasic Swing programming\n\nh1. Expected audience:\nSwing developers interested in learning about Swing Application Framework")), Option.some(Intermediate), Option.some(new Interval(1221659100000L, 1221659100000L)),Option.some("Lab 6"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session192 = new Session(new SessionId("2435a4aa-3ee2-4452-add9-58734ddd77b0"), Format.Presentation, "System Thinking techniques for Agile Teams – seeing the forest and the trees", Option.some(new WikiString("h1. Outline:\n* Intro to systems and systems modelling (5 min)\n* Tradititional versus System Thinking skills (each 5 minutes – 35 minutes)\n** Static -> dynamic (from focus on events to focus on patterns over time)\n** System-as-effect -> system-as-cause (from viewing system as driven by external forces to ** placing responsibility for behaviour on internal actors who manage policies)\n** Tree-by-tree -> forest thinking (from believe that really knowing depends on details to believing that we must understand context)\n** Factors-thinking -> operational thinking (from listing factors of influence or correlation to understanding of causality and how behaviour is actually generated)\n** Straight-line thinking -> closed-loop-thinking (from viewing causality as running one way to the effect of feedback and causes affecting each other)\n** Measurement thinking -> quantitative thinking (from searching for perfect measures to accepting that we can always quantify but not always measure)\n** Proven-truth thinking -> scientific thinking (seeking to prove to be right to recognizing frames and models have limited applicability)\n* For each of those skills we will present a good practice tool – model/drawing/brainstorm technique\n** Dynamic thinking – behaviour over time diagrams\n** System-as-cause – instead of blaming ask “how could those within the system make the system more resilient to external causes” – causal loop diagrams\n** Forest thinking – focus on similarities rather than differences\n** Operational thinking – ...\n* 20 minutes -- We will build a small model (requirements lack, change, shortcuts) with the participant (causal loop diagram)\n* 5 min> Q and A\n\nh1. Required experience:\nInvolvement in project at any level\n\nh1. Expected audience:\nManagers, executotives, team leaders, scrum masters… interested in increasing their impact on systemic variable – quality, time to market…\n")), Option.some(Intermediate), Option.some(new Interval(1221731100000L, 1221731100000L)),Option.some("Lab 3"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session198 = new Session(new SessionId("fffb5683-5e94-40ec-91b5-d67bf5cfe329"), Format.Presentation, "Taking Apache Camel for a Ride", Option.some(new WikiString("")), Option.some(Intermediate), Option.some(new Interval(1221663600000L, 1221663600000L)),Option.some("Lab 3"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session199 = new Session(new SessionId("8768b448-6519-493b-adbb-dc885b0a96b7"), Format.Presentation, "Tapestry 5: Java Power, Scripting Ease", Option.some(new WikiString("h1. Outline:\n* Introduction\n* Action vs. Component Frameworks\n* Tapestry Pages and Components\n* Building a basic CRUD Form\n* Customizing the CRUD Form\n* Processing a Form Submission\n** Event Propogation\n** Return Values\n* Using the Grid Component\n* Customizing Grid Columns\n* Linking to a Detail Page\n* Using Ajax with Tapestry\n** Autocomplete Field\n** Dynamic Ajax Zones\n* Other Tapestry Topics\n* Conclusion\n* Q & A\n\nh1. Required Experience:\nBasic understanding of Java, HTML and XML\n\nh1. Expected Audience:\nJava web developers\n")), Option.some(Introductory), Option.some(new Interval(1221740100000L, 1221740100000L)),Option.some("Lab 2"), List.<Label>list(Web), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session203 = new Session(new SessionId("2113620e-0c61-41df-9adc-2346756e6165"), Format.Presentation, "The Double Paradox of Lean Software Development", Option.some(new WikiString("h1. Outline \n\n* Paradox 1: Thrashing, caused by overload, is much less efficient than leveling the workload and working at a regular cadence.\n* Queuing Theory applied to software development.\n* Six rules to reduce thrashing and speed software development throughput.\n* Paradox 2: Spending 10K on ten experiments is more likely to produce a winner than spending 100K on the best bet.\n* Set-Based design what it is and why it works\n* X rules to improve knowledge through exploring multiple options.\n\nh1. Required experience \n\nGeneral experience with agile development is useful.\n\nh1. Expected audience \n\nSenior developers and testers, team leads, and managers.\n\nThe objective is to get the audience to think, to challenge the\nassumptions that underlie how they organize their work, and experiment\nwith new ways of organizing work to achieve dramatic improvement.\n")), Option.some(Introductory), Option.some(new Interval(1221659100000L, 1221659100000L)),Option.some("Lab 1"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session204 = new Session(new SessionId("6e4ad74c-f25d-4877-af40-5afb31ca42d3"), Format.Presentation, "The Enterprise Service Bus: Silver Bullet or Golden Hammer?", Option.some(new WikiString("h1. Outline:\n* Introduction\n* Features of an ESB\n* Case study: A system for collection, calculation and presentation of public pensions\n** Overview of the functional and non-functional requirements of the system which has to integrate with numerous external systems.\n* A solution based on Mule 2.0\n** A message-oriented approach using transformations, aggregation, routing and other mechanisms supported by an ESB\n* A solution without an ESB\n** A procedure-oriented approach using POJOs, Spring and other open source frameworks and libraries\n* Comparison of the solutions\n* Architectural guidelines\n* Summary\n\nh1. Required experience:\nThe attendants should have experience from development of enterprise applications. Familiarity with the concepts of web services is recommended.\n\nh1. Expected audience:\nArchitects and developers working on server-side business solutions should attend this session. The talk will be particularly useful to you if you are in the process of choosing a software architecture.\n")), Option.some(Intermediate), Option.some(new Interval(1221750000000L, 1221750000000L)),Option.some("Lab 4"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session205 = new Session(new SessionId("b2570e91-dc0c-4308-99c6-5d7395e4425e"), Format.Presentation, "The Enterprise without a Database", Option.<WikiString>none(), Option.some(Intermediate), Option.some(new Interval(1221731100000L, 1221731100000L)),Option.some("Lab 1"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session209 = new Session(new SessionId("3d29b1a5-9b55-4159-91aa-ee28ba53ab5b"), Format.Presentation, "The Scalability Pitfall of the Real-Time Web (and How To Fix It!)", Option.some(new WikiString("h1. Outline:\n* Defining Real-Time Web\n* Correcting the Web (!) \n* Demo of Comet\n* HTTP Polling vs. Streaming\n* Scalability and Performance Concerns\n* Vertical Scalability\n* Horizontal Scalability\n* Message Distribution\n* DEMO\n* QA\n\nh1. Required experience\nThis session will go beyond Ajax with a dive into Java, so experience using Ajax and Java is required. Knowledge about HTTP is a plus. \n\nh1. Expected audience\nThis session targets anyone interested in providing realtime data over the Web using server-initiated message delivery and are looking for something that goes beyond, way beyond, boring chat examples. ")), Option.some(Intermediate), Option.some(new Interval(1221653700000L, 1221653700000L)),Option.some("Lab 4"), List.<Label>list(Web), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session212 = new Session(new SessionId("0608a8e5-9293-4063-a4a8-4cdd595a7fbf"), Format.Presentation, "Top 10 Patterns for Scaling Out Java Applications", Option.some(new WikiString("h1. Outline\n\nIn the past two years I presented the talks “The Top 10 Ways to Botch an Enterprise Java Technology-Based Application” and “The Top 10 Ways to Botch Enterprise Java Technology-Based Application Scalability and Reliability”. Now that people have plenty of expertise on how to botch their applications, I wanted to shift focus from anti-patterns to patterns. The \"Top 10\" theme remains as it keeps a quick pace and enforces a quick distillation of complex topics into simple concepts for the audience to remember.\n\nIn this presentation I will use real world examples to demonstrate the challenges, solutions, and unexpected discoveries architects find when building scalable Java applications. I will site actual scenarios where each pattern has been used, and explain what the driving forces were behind these choices. (This talk consciously steers clear of discussing website scaling via content caching, as this is a topic well-covered by many whitepapers, presentations and other conferences.\n\nA few examples:\n\nFor example, working on an ultra-low-latency JavaSpaces-based trading application was one of our first exposures to Recovery-Oriented Computing (ROC) for transaction processing in a production environment. The ROC concept can be used to achieve otherwise impossible results by selectively persisting only critical system state. Prior to this, we had generally steered clear of non-replicated in-memory data. But applying the ROC concept allowed us to achieve an order-of-magnitude latency improvement over what even the most efficient replicated-memory approach would have allowed, without compromising system availability.\n\nLikewise, working with a high-volume clearing application, a partner discovered that while serializable database isolation was required from a business perspective, and their database of choice enforced this optimistically, performing initial locking in-memory minimized the number of transaction rollbacks, substantially increasing system throughput.\n\nMuch of this experience was acquired while working with customers in the usual early-adopter sectors: websites for retail, travel and hospitality; transaction processing and compute grids in investment banks; and more recently, the rush of so-called \"Web 2.0\" startups. While in most of these cases, the primary reason for being onsite with the customer was the Coherence product that I am involved with, many of the more interesting lessons came from working with 3rd party products from dozens of vendors and open source communities, and learning alternate solutions to common problems from the people involved with those products.\n\nh1. Required experience\n\nSome experience with enterprise application development\n\nh1. Expected audience\n\nDevelopers, IT Managers, Architects\n\n")), Option.some(Intermediate), Option.some(new Interval(1221740100000L, 1221740100000L)),Option.some("Lab 1"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session216 = new Session(new SessionId("070798bb-85b4-473b-aac0-e7faafedaf7e"), Format.Presentation, "User Story Mapping gjør kunden din gladere", Option.some(new WikiString("h1. Outline: \n* Intro\n* Et vanlig problem i (smidige) prosjekter\n* Tre strategier for å håndtere problemet\n* Realisering av strategiene med user story mapping\n* Oppsummering\n* Q&A\n\nh1. FORKUNNSKAPER\nIngen\n\nh1. PUBLIKUM\nAlle som jobber med eller i smidige team\n")), Option.some(Intermediate), Option.some(new Interval(1221725700000L, 1221725700000L)),Option.some("Lab 5"), List.<Label>list(Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session219 = new Session(new SessionId("f6a6ca6b-d1da-4be7-93f0-fa46bed5b794"), Format.Presentation, "What's new and cool in Portlet 2.0", Option.some(new WikiString("h1. Outline\n\n* Short introduction (3mns)\n* Portal & Portlet 1.0 (10mns)\n** explain the role of an enterprise portal in the ecosystem and the solution it provides\n** portlet history and concepts: brief recap of the Portlet 1.0 specification, its history, limitations and place in the Java EE ecosystem; brief overview of portlet containers\n* New Portlet 2.0 features focusing on advanced portlet coordination and AJAX applications based on the resource serving feature. Other features are reviewed albeit in lesser detail. Each major feature is explained, introduced by use cases. Differences with Portlet 1.0 are examined when relevant. Features are then demonstrated to get the audience to efficiently understand the concepts.\n** Coordination features: portlet events and portlet public render parameters\n** AJAX portlets based on the resource serving feature: the resource serving feature and use case for implementing AJAX portlet are explained. Some AJAX use cases are not covered by the specification, we'll explain why the expert group did not provide support for such cases and possible scenarii to address the issue.\n** Quick overview of other features: sticky request attributes, GenericPortlet improvements, header access, portlet filters and caching, etc...\n* Conclusion (2mns)\n* Q&A (10mns)\n\nh1. Language: \nEnglish\n\nh1. Level: \nintermediate\n\nh1. Required experience:\nWeb application development skills are expected, portal or portlet experience is not mandatory.\n\nh1. Expected audience:\nDevelopers that wants to create applications for portals using the Java EE platorm and leverage the new features of the Portlet 2.0 specification. Architects that want to build a portal using several Portlet applications based on the Portlet 2.0 specification. Attendees will learn about the new features provided by the Portlet 2.0 specification and how to leverage them in their Portlet applications.\n")), Option.some(Intermediate), Option.some(new Interval(1221745500000L, 1221745500000L)),Option.some("Lab 2"), List.<Label>list(Web), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session221 = new Session(new SessionId("aa9efc50-f051-4628-b049-43681dc9c228"), Format.Presentation, "Who needs standards in an open source world", Option.some(new WikiString(" The Java platform is built on standards, and its success is directly attributable to the\ncommunity-driven process through which the language and platform evolve:\nthe Java Community Process (JCP) program. The acceptance and\nsuccess of open-source development methodologies pose both a challenge\nand an opportunity for the JCP program. Are standards necessary in an\nopen-source world?")), Option.some(Introductory), Option.some(new Interval(1221725700000L, 1221725700000L)),Option.some("BoF"), List.<Label>list(BOF, Method), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session225 = new Session(new SessionId("43a03b51-3941-44ab-a763-8ccee89dffc5"), Format.Presentation, "Writing Domain-Specific Languages with Groovy", Option.some(new WikiString("h1. Outline\n\nGroovy offers a great deal of flexibility in terms of concise and\nexpressive syntax, and through its dynamic nature. After an\n\nintroduction to the Groovy dynamic language, and to the concepts\nof DSLs, their motivation, strenghts and weaknesses, Guillaume Laforge,\n\nproject lead of Groovy and spec lead of JSR-241 standardizing\nthe Groovy language, will guide you through the advanced Groovy\nconcepts that will help you create your own embedded DSL. He will show\nyou how to integrate them in your JEE application, and also explain\nhow to best design such business languages to ensure their adoption by\nthe end users, their quality, testability, andcapacity to evolve over\ntime to suit the needs of the day.\n\nIn the IT industry, understanding the domain within which customers\nevolve is a key factor in the success of a project. From this domain\nand its wealth of concepts, as software developers and architects, we\ncan derive a design that is aimed at solving problems encountered in\nthe day-to-day business. So far, we mostly solved these brainteasers\nwith computer science paradigms like Object-Oriented Programming,\nn-tier architectures, or with tools such as rules engines to stay\nclose to the domain at hand.\n\nIn this session, our goal will be to investigate how the paradigm of\nDomain-Specific Languages can be leveraged to help our teams build\nsolutions closer to our users' needs and requirements, and how it can\nprovide a viable, efficient and expressive alternative problem-solving\npattern. The technology of choice for enabling DSL solutions for your\nprojects will be Groovy, a dynamic language for the Java platform.")), Option.some(Intermediate), Option.some(new Interval(1221649200000L, 1221649200000L)),Option.some("Lab 1"), List.<Label>list(Emerging), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session228 = new Session(new SessionId("7e8155ca-c3cf-4361-8729-a6d8cba3d2a9"), Format.Presentation, "Zero Turnaround in Java Development", Option.some(new WikiString("h1. Outline:\n* Intro [5m]\n* Dynamic languages [15m]\n* Modular approach [5m]\n* Framework reloading support [5m]\n* Class reloading [10m]\n** HotSwap\n** JavaRebel & FastSwap\n* Setting up your environment [10m]\n** Exploded development\n** Build cycle\n** Symbolic links and junction points\n* Q&A [10m]\n\nh1. Required experience\nFamiliarity with the Java development cycle. As an overview talk the goal is to show the possible options rather than discuss each of them in depth.\n\nh1. Expected audience\nSoftware engineers and architects who want to improve their development turnaround time. The talk is based on experience of decreasing development time of 150 developers to almost zero. A lot of that expirience can be directly transferred to you.\n")), Option.some(Intermediate), Option.some(new Interval(1221735600000L, 1221735600000L)),Option.some("Lab 5"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session230 = new Session(new SessionId("16c94f80-1319-431f-a398-e36dce88dd2c"), Format.Presentation, "iLabs mobile toolbox: J2ME applications without intolerable pain", Option.some(new WikiString("Required experience \nSome experience in program development. \nNo experience necessary with neither ilabs Mobile Toolkit or J2ME.\nSome experience with use of social networking software an advantage (facebook, linkedin, orkut, or similar).\n\nExpected audience \nPeople with an interest in creating applications for mobile phones, either as developers (primary focus), or with ideas for mobile apps who need to know about things that are now simple to do using J2ME.\n\nAfter the talk developers will be able to start developing J2ME applications using the iLabs mobile toolbox, people with ideas will know that some of their ideas may be feasible within a reasonable amount of development work. \n")), Option.some(Introductory), Option.some(new Interval(1221644700000L, 1221644700000L)),Option.some("Lab 3"), List.<Label>list(EMG), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session232 = new Session(new SessionId("2d908737-ecc8-4f66-8300-c250c28f5233"), Format.Presentation, "map - reduce og andre teknikker for parallellisering", Option.some(new WikiString("h1. Outline:\n* Intro \n* Noen teknikker for parallellisering \n* Problemstillinger knyttet til parallellisering \n* Eksempler fra BBS \n* Oppsummering \n* Q&A \n\nh1. Language:\nNorwegian\n\nh1. Required experience:\nNone\n\nh1. Expected audience:\nAnyone interested in parallell processing/programming, but with little\nor none practical experience with it.")), Option.some(Introductory), Option.some(new Interval(1221735600000L, 1221735600000L)),Option.some("Lab 6"), List.<Label>list(Core), List.<Speaker>nil(), List.<Comment>nil()); public static final Session session234 = new Session(new SessionId("8cdef15c-e9b8-44de-bae9-54d0130f8542"), Format.Presentation, "”Sikker? Sikkert nok!” - Fra Silo til SOA", Option.some(new WikiString("h1. Outline\n\n* Innledning\n* Typisk oppsett for en SOA løsning\n* De mest aktuelle problemstillingene en SOA løsning står ovenfor\n* Hvilke krav stilles igjennom lover og forskrifter?\n* Datatilsynets råd og anbefalinger til løsning\n* Løsningsalternativ\n* Oppsummering\n\nh1. Required experience\n\nErfaring fra systemer med kompleks infrastruktur eller erfaring fra større utviklingsprosjekter\n\nh1. Expected audience\n\nSoftware Architects, Senior developers\n")), Option.some(Intermediate), Option.some(new Interval(1221731100000L, 1221731100000L)),Option.some("Lab 5"), List.<Label>list(Enterprise), List.<Speaker>nil(), List.<Comment>nil()); public static final List<Session> sessions = List.list(session3, session6, session9, session10, session12, session13, session21, session22, session26, session27, session30, session31, session33, session35, session36, session38, session39, session43, session46, session48, session49, session50, session51, session52, session54, session55, session57, session58, session61, session62, session66, session67, session68, session71, session72, session77, session79, session81, session85, session86, session88, session89, session91, session92, session94, session96, session99, session100, session108, session111, session119, session120, session123, session125, session126, session127, session131, session135, session142, session145, session146, session149, session151, session152, session153, session154, session155, session157, session158, session161, session163, session166, session168, session174, session175, session178, session182, session184, session186, session187, session191, session192, session198, session199, session203, session204, session205, session209, session212, session216, session219, session221, session225, session228, session230, session232, session234); }