Wednesday March 13

Reception area — Registration
Dragefjellet — Welcome from the organizers
10:30 - 11:15
Dragefjellet

Slik unngår du at din app blir en sikkerhetstrussel

Anders Skar
<p>Trenden for utvikling av mobile apps g&aring;r n&aring; fra utvikling av applikasjoner til privat bruk til virksomhetskritiske applikasjoner for bruk i bedrifter.&nbsp;Med denne trenden kreves det et mye st&oslash;rre fokus p&aring; sikkerhet. Uten fokus og kjenskap til de mest vanlige sikkerhetshullene p&aring; mobil vil b&aring;de applikasjonen og baksystemer v&aelig;re &aring;pne for angrep av hackere.</p> <p>I denne lyntalen vil du f&aring; en oversikt over de mest&nbsp;vanlige sikkerhetshullene ved utvikling av mobile applikasjoner. Du vil f&aring; se konkrete eksempler p&aring; sikkerhetshull i kjente applikasjoner. I tillegg vil du f&aring; tips til hvordan du kan fikse sikkerhetshullene.</p>

All you need to know about TypeScript (in 10 minutes)

Torstein Nicolaysen
<p>There have been several attempts at patching static typing into JavaScript, but none have had any notable success. TypeScript is different. Aligning with the EcmaScript 6 standard, it is a simple superset of JavaScript that&rsquo;s easy and intuitive to learn for anyone with knowledge of JavaScript. In this talk you will learn what it is, what&rsquo;s new, how it differs from JavaScript, where the dragons are and where it will go from here. The speaker have looked into TypeScript extensively and used it in production code. Come get the distilled version of what you need to know!</p>

RubyMotion - Developer happiness for iOS

Bjørn Arild Mæland
<p>Many of us want to be able to write apps for the iOS platform, but the thought of having to learn the full Xcode stack and tons of Apple SDKs seems quite daunting. There are alternatives like PhoneGap etc., but they just don't provide the same experience as something fully native (no matter what the HTML5-pundits say). RubyMotion is a relatively new product which offers a compelling alternative to Xcode and Objective-C, while keeping native integration and performance. Being a dialect of Ruby, it provides the same developer&nbsp;happiness it's famous for on the desktop to the iOS platform. In this talk I'll show you how easy it is to get started.</p>

HTML5 Pixel Magic

Eirik Bjørsnøs
<p>This lightning talk presents some pretty impressive stuff you can build using native browser technology. Combining HTML5 video, WebRTC and Canvas with some Javascript, this talk shows you how to do real time analysis and transformation of user video in the browser.</p> <p>Want to run your Powerpoint presentation on a towel? Need to make your shirt invisible? Fancy reading Wikipedia on a Post-It note? Video record the guy who stole your laptop? No problem! With HTML5 you can do that and more!</p>
Teatergaten

App-server euthanasia; Dropwizard

Olve Hansen
<p>Dropwizard is a Java framework for developing ops-friendly, high-performance, RESTful web services. At Vimond Media Solutions we use Dropwizard to create small isolated micro-services.</p> <p>In this lightning talk I will demonstrate that a Dropwizard- (embedded container) can be configurable and operator-friendly while still being a breeze to develop services with, enabling us to create much smaller parts that are easier to move around: micro-services.</p> <p>Micro-services is a rising star in the hype-heaven, we are trying to get a grasp on how to handle this way of building system, and share some of the pros and cons with you.</p>

Storm: Real time processing of Big Data

Jon Espen Ingvaldsen
<p>The presence of new technologies like social media, email, blogs, GIS, RFID and smart devices have opened for new opportunities in building information based services that align and operate on huge quantities of data.</p> <p>Common approaches and frameworks for handling Big Data (like<em> Apache Hadoop</em>) operates by running the data processing jobs in batch. Now, this batch-based approach does not work well if you need to process and show results in real time. <em>Storm </em>is an open source framework from <em>Twitter</em> that targets this gap, allowing for real time processing of big data streams.</p> <p>In this presentation we will give an overview of its scalable arhitecture, show examples of real life applications and demonstrate how simple it is to get started.</p>

Apache Kafka - distributed publish-subscribe messaging system

Morten Kjetland
<p>Apache Kafka is a distributed publish-subscribe messaging system developed by Linkedin.</p> <p>It has been created with performance, availability and scalability in mind and is used as the messaging backbone at linkedin.</p> <p>In this lightningtalk I will talk about how Kafka is different from other publish-subscribe messaging systems, how it achieves such good performance and how it uses Apache Zookeeper to be a truly distributed- and scalable system.</p>

Deploying Java web applications with zero downtime

Stein Inge Morisbak
<p>When practicing continuous delivery it may be a problem if you have downtime every time you deploy to production. Your goal is to deploy as often as you can, so this is a problem you need to solve. In this talk I will show how you can avoid downtime when deploying Java web applications. I will show how to deploy (and roll back) new versions of your web application, and also how to handle database schema changes (and roll back) between deployments.</p>
Muséplass

Embrace the superteam

Kjartan Storli, Ricki Sickenger
<p>Have you ever worked in a superteam? The kind of team where the process is the natural flow of the team. Everyone on the team working on his or her parts of the project and it all comes together as one perfect whole. Discussions flow easily, decisions get made and everyone has the same agenda. It is a great place to be, but it almost never lasts.</p> <p>So, how do you create a superteam and keep performing as one?</p> <p>We will take a look at the characteristics of a superteam and how methodologies try to mimic them. Instead of searching for the perfect methodology, we search for the underlying reasons why some team environments foster creativity, productivity and thriving team members. We will try to understand some of today&rsquo;s most popular methodologies and explain why it really doesn&rsquo;t matter which one you choose - it&rsquo;s all about people, not process!</p> <p>We will give you insight into the underlying motivational factors in different methodologies, and how they can help your team get into superteam mode. So, instead of talking about standups, backlogs and planning poker, we&rsquo;ll talk about the progress principle, the power of autonomy and the importance of mastery and purpose. Even though methodologies come and go, the principles behind them don&rsquo;t. Software development is after all a human activity.</p>

Manage risk and expectations in Agile

Harald Hovdevik
<p>Agile methodology is a means for a team to provide an end results based on limited requirements.</p> <p>Still the business stakeholders demand early feedback on the long term end-result, not only what is delivered in the next sprint.</p> <p>&nbsp;</p> <p>This presentation will show how the Scrum teams in Skandiabanken manages the business expectations by managing risks uncertanties.</p> <p>&nbsp;</p>

Hvor smidig er utviklingen hvis vi følger en smidig metode?

Atle Geitung
<p>Jeg har gjort smidig utvikling i 25 &aring;r, lenge f&oslash;r smidig var et begrep. Og jeg har&nbsp;fulgt med p&aring;, fors&oslash;kt&nbsp;og undervist mange av de smidige metodene som er blitt beskrevet. Min erfaring tilsier at man skal bruke l&aelig;rdom fra andre gjennom prinsipper, praksiser, og andre positive innspill til en smidig utvikling. Men, hvis man f&oslash;lger en definert smidig metode som for eksempel XP eller Scrum slik den er beskrevet, er min p&aring;stand og erfaring at utviklingen ikke blir smidig! Det vlir gitt eksempler for &aring; underbygge p&aring;standen.</p>

Feil

Gaute Småland
<p>I software-bransjen er vi n&aelig;rmest bortskjemt med gode r&aring;d om hvordan man b&oslash;r lage software; B&aring;de teknologi og metode fortelles det mye om og tips og avhandlinger publiseres n&aelig;rmest daglig p&aring; en nettside n&aelig;r deg. Jeg &oslash;nsker imidlertid &aring; snakke om noe som er minst like tilstedev&aelig;rende i alle fora der det produseres skikkelig bra software: Feil. Vi er mennesker, derfor feiler vi, og vi kommer neppe til &aring; slutte med det. Feil, gjerne store feil, pleier &aring; ha en definerende rolle der det utvikles software som gir verdi. Men er vi i stand til &aring; takle dem p&aring; en slik m&aring;te av vi vokser for hver feil vi m&oslash;ter p&aring;? Jeg vil her dele konkrete tips som jeg har l&aelig;rt opp gjennom en relativt lang karriere i software, tips som gj&oslash;r deg i stand til &aring; h&aring;ndtere egne og andres feil bedre og ogs&aring; bidra til bedre milj&oslash; :-)</p> <p>Jeg har jobbet som utvikler, arkitekt og teknisk pl, i finans, software- og konsulent-hus, siden 1997. Jobber n&aring; med sikkerhet og nettbank som Miles-konsulent.</p> <p>&nbsp;</p>
Downstairs — Coffee break
11:30 - 12:15
Dragefjellet

Automated CSS Testing

Kristofer Walters
<p>In the world of web development, we have established tools and strategies for automated testing of both server-side code and in-browser JavaScript. Testing CSS, however, is still a time-consuming manual process. I will present current techniques for automating CSS testing, that will speed up development and increase maintainability of large-scale web projects.</p> <p>While automated CSS testing is still in its early stages, a variety of CSS testing tools are available. Tools for static analysis of CSS go beyond syntax checking and provide statements about code quality. In-browser testing techniques compare rendered HTML or style rules of DOM nodes to predefined references, and hence allow automated regression testing of CSS. With these tools and techniques at hand, what are the next challenges of automated CSS testing?</p>

UX Low hanging fruit

Fredrik Johnsson
<p>Sm&aring; detaljer i brukergrensessnittet kan skape store problemer med brukskvaliteten til et system. &Aring; unng&aring; disse problemene gir stor gevinst for brukeropplevelsen, og de trenger ikke v&aelig;re kostbare &aring; korrigere. Det er ofte de enkle tingene vi glipper p&aring;, og de er lette &aring; unng&aring; hvis vi er oppmerksomme p&aring; dem.</p> <p>&nbsp;</p>

Are you cross-browser compatible?

Safurudin Mahic
<p>Back in the days when IE had some 90+ percent of the browser market, many web application developers didn't really think or care about creating cross-browser compatible apps, as long as it worked for the 90+ percent. And frankly, why should they? The user masses with access to internet were scarce. And those few that fiddled with other browsers and operating systems were considered as outcasts.<br />However, the &ldquo;glory&rdquo; days of IE have long passed.</p> <p>Today, almost 100% of the population has access to broadband connections, and thanks to the era of the mobile, the rebirth of Mac and other companies trying to steal market shares, the browser market has become quite fragmented. Also, with the rise of Web 2.0, HTML5, CSS3 and Javascript, more and more of the logic and presentation in web applications is executed on the browser.</p> <p><br />Developers are nowadays pretty familiar with the realm of TDD, Unit tests and CI for automation and effective testing of distinct components. Developers deploy these techniques more and more. But are we equally effective to test the visual experience of our user masses? With potentially millions of people accessing government, public or company sites, can our customers really afford to disregard testing the sites across all browsers?</p> <p><br />In this talk I will present tools and techniques to get you started with effective, large-scale automated cross-browser tests. I will propose that such tests can be valuable as acceptance tests and I will also present some of the usual pitfalls and problems developers usually experience when starting off with such tests.</p>

How we transformed a dreadful legacy codebase using only a Strap-on

Espen Dalløkken
<p>Writing CSS is a pain in the ass and should be considered harmful if performed on a daily basis without your mind getting reset every night. It can also be a big honking mess if you have twenty pluss developers all mocking about in the same CSS code base. There is nothing in the spec which prevents you from the inevitable chaos and eventual rewrite.&nbsp;</p> <p>That's why we built the Strap-on Framework to get a serious weapon in our arsenal. It has drastically changed the way all developers work, improved rendering speed and reduced the lines of CSS code with an ridicilous amount. All this was done without any serious bugs and no cross-browser bugs. We molded our Strap-on from the basis of the amazing Object Oriented CSS (OOCSS) framework.</p>
Teatergaten

Programming by hyperbole

Einar W. Høst
<p>Gold plating is frowned upon by project managers wanting you to provide value to the project at a steady pace. However, exaggeration is a great tool for learning and can be a lot of fun. <em>Programming by hyperbole</em> encourages you to:<br /><br />1. Take a small problem or implementation task you encounter in your day job. <br />2. Bring it back home where no manager can see you and question your rationale. <br />3. Generalize it, magnify it, distort it, bend it, shake it - no implementation plan is too baroque or bizarre. <br />4. (Optional) Blog about it and put it on github.<br /><br />You might not end up with something that you'll want to bring back to the project, but you're bound to learn something interesting and have fun doing it. And remember, gold plating results in code that is covered with gold!</p>

Type Driven Development

Maciek Próchniak
<p>Everyone knows (should know?) what Test Driven Development is.</p> <p>In languages with sufficiently <strong>strong type systems</strong> such as Scala or Haskell we can do even better.&nbsp;We can make compiler do part of testing for us. We sometimes hear "I cannot think of bugs that can be prevented by static type checking".&nbsp;</p> <p>I would like to show some <strong>Scala</strong> code examples which (hopefully) prove this statement is not correct - starting from basic ones, such as avoiding null pointers, and moving towards <br /> more complex ones - coming from libraries such as <strong>Scalaz</strong> and <strong>Shapeless</strong>.</p>

Distribuert databasesynkronisering i skyen(e)

Knut Tveitane
<p>I et butikkjede &oslash;nsker brukene &aring; ha tiln&aelig;rmet sanntidsoppdatering av data fra butikkene til kjedekontoret, s&aring; vel som motsatt vei... s&aring; vel som direkte mellom alle butikkene. Alle parter kan oppdatere p&aring; de samme datasettene.</p> <p>Dessuten skal l&oslash;sningen h&aring;ndtere flere uavhengige butikkjeder.</p> <p>Vi l&oslash;ste det med Azure ServicBus. Lyntalen vil g&aring; inn p&aring; bruken av Azure Service Bus, og spesielt p&aring; hvordan vi l&oslash;ste synkronisering av flere kjeder over samme subscription og hvordan vi synkroniserer samtidige oppdateringer i flere retninger.</p>

Tips for bedre logger

Anders Båtstrand
<p>Har du opplevd at feils&oslash;king er vanskelig, fordi loggen du leser er umulig &aring; forst&aring;? Eller at viktig informasjon rett og slett mangler? Har du irritert deg over debug-linjer som bare gir mening til utvikleren som skrev dem, og n&aring; fremst&aring;r kryptiske? Eller bryr du deg ikke om loggene i det hele tatt, fordi de inneholder altfor mye informasjon?</p> <p>Da er du ikke alene, og jeg vil gjerne dele noen tips som jeg pr&oslash;ver &aring; f&oslash;lge.</p> <p><strong>Symptomer p&aring; d&aring;rlig logg-kultur</strong></p> <p>Jeg vil kjapt vise noen symptomer p&aring; d&aring;rlig logging.</p> <p><strong>Loggniv&aring; - fortellinger fra applikasjonen</strong></p> <p>Jeg ser p&aring; loggniv&aring;ene som ulike fortellinger av samme historie., og presenterer hvordan jeg mapper ulike loggniv&aring;er til forskjellige fortellinger fra applikasjonen.</p> <p><strong>Logg som prosa - kommuniser med leseren</strong></p> <p>Logging er som en tidsmasking, som lar deg kommunisere direkte med den stakkaren som om fem &aring;r feils&oslash;ker koden din. Det er en fantastisk mulighet, bruk den godt!</p>
Muséplass

Alle prosjekter bør gjennomføre brukertesting!

Ram Yoga
<p>Skal programmet dere utvikler brukes av mennesker? Da b&oslash;r det brukertestes! Brukergrensesnitt kan ha feil p&aring; lik linje som kode. Den beste m&aring;ten &aring; avdekke feil p&aring; er &aring; f&aring; reelle brukere til &aring; l&oslash;se faktiske oppgaver mens dere observerer. Gj&oslash;r det enkelt, og dere kan gjennomf&oslash;re flere runder med testing. Alt dere trenger er et m&oslash;terom, noen oppgaver, noe &aring; teste p&aring;, og noen potensielle brukere.</p>

Emphasizing customer value of software quality using quality requirements

Mario Ek Aparicio
<p>Maximizing customer value is one of the most important guiding principles in agile development practices. After some years with experience with agile practices, we now see that an exclusive focus on value expressed as functionality can seriously undermine the quality of the software product. This manifests itself as bad usability, poor performance or unchangeable software.</p> <p>This has led to a slightly stronger focus on code quality and software architecture to solve these issues. But in all project environments resources; time and money, are limited and the owners of the project initiative want value for money. Quality is also perceived as a technical or architectural issue not something the product owner should care (or know something) about.</p> <p>It is much more difficult to measure quality compared to time, cost or functionality, so it&rsquo;s hard to know if you&rsquo;re delivering software with sufficient quality or not. And if you can&rsquo;t measure quality it&rsquo;s difficult to challenge your development team on it.</p> <p>This is where measurable quality requirements come to the rescue.</p> <p>In this talk I will suggest how you handle and formulate quality requirements in a way that lets the customer<br />&bull; prioritize between different quality attributes<br />&bull; prioritize between quality and cost<br />&bull; measure if acceptable quality is delivered</p> <p>I will also explain the clear distinction between two types of non-functional requirements, constraints (technology, design, architecture) and quality requirements.</p>

EffectMapping: Hvis forretningsverdi er viktigst

Håvard Sjøvoll
<p>Et vellykket utviklingsprosjekt handler ikke om &aring; t&oslash;mme en velfylt backlog. Det handler om &aring; tilf&oslash;re verdi for sluttbrukere og skape effekt for forretningen.</p> <p>Utgangspunktet b&oslash;r eksempelvis ikke v&aelig;re "det skal v&aelig;re mulig &aring; leie m&oslash;telokaler gjennom utvikling av en ipad-applikasjon", men "vi &oslash;nsker &oslash;kt utleie av m&oslash;terommene".</p> <p>Dette krever, i tillegg til en hel del annet,<br />- at vi vet hva slags effekt vi er ute etter,<br />- at vi forst&aring;r forretningen og<br />- at vi forst&aring;r og er i stand til &aring; prioritere behovene til de akt&oslash;rene som kan hjelpe oss &aring; oppn&aring; effekten.</p> <p>EffectMapping er en metode, og et dokument, som bist&aring;r i &aring; fylle backlogen din med riktig funksjonalitet, samtidig som den sikrer fokus p&aring; forretningen og involverte akt&oslash;rer.</p> <p>Lyntalen vil i tillegg til &aring; presentere EffectMapping, ogs&aring; inkludere egne erfaringer, synspunkt og anvendelser.</p> <p>M&aring;lgruppen er prosjektledere og r&aring;dgivere, s&aring;vel som utviklere og designere.</p>

K I S S - Keep It Simple Stupid

Thommy Bommen
<p>Hvorfor er prosessene v&aring;re s&aring; store? Hvorfor er de implementert som steg i issue tracker som f.eks Jira? M&aring; de v&aelig;re s&aring; lange og kompliserte? Er det alt som er i en prosess som m&aring; inn i en issue tracker.</p> <p>Det er alt for mye trinn og steg i v&aring;re prosesser. Slutt med &oslash;delegging av produktiviteten for prosjektet ditt!</p> <p>Jeg vil i lyntalen g&aring; igjennom flere eksempler p&aring; trinn og statuser som ikke h&oslash;rer hjemme i en arbeidsflyt. Jeg vil fortelle deg hvordan du kan unng&aring; &aring; benytte de og hvordan de burde v&aelig;re representert.</p> <p>Hvis noen kommer med et trinn eller en status som de tenker hadde v&aelig;rt bra &aring; ha med s&aring; st&aring; i mot! SI NEI, HER KJ&Oslash;RER VI K I S S :)</p>
Restaurant — Lunch
13:30 - 15:00
Galgebakken
Stop wasting time! Build your MVP in one day and start validating now!
Mark Nijhof
<p>Goals: At the end of this workshop you will have learned; how to start validating your assumptions, using the ideas from the Lean Startup approach. Starting from the simplished possible solution, till being able to build your MVP within one day.</p> <p>I have been building software professionally since 2000. One thing that is strikingly clear to me is; the amount of waste that is being created in our industry. We build and build without knowing that what we build is actually valuable. Will they use it? Will they pay for it? We just don&rsquo;t know!</p> <p>So, there is the Lean Startup to the rescue. We now know that we should build a Minimal Valuable Product or MVP, instead of going all the way. But, now I hear things like; &ldquo;Our MVP will be ready in a few months&rdquo;. Is it really necessary to wait several months before you can validate your ideas? I don&rsquo;t think this is needed!</p> <p>We have come so accustomed to long running projects that we think delivering something in a month is fast. So, this workshop is about creating a different mindset, and about using the right tools. During the workshop, which is based on my direct experience starting http://www.inqob.com/ and http://www.randommanager.com/, we will work on the different stages of our MVP.</p> <p>In the first part of the workshop, after a short introduction and setting the stage, we will have a few interactive group exercises; I will introduce the group to a way to validate their assumptions without having the create anything. We will discuss the value this approach creates and some common pitfalls.</p> <p>During the break we will test what we have learned with some actual people from the customer segments we defined.</p> <p>In the second part of the workshop we will first discuss the outcomes of our experiment during the break. Then you will be challenged to think about and implement ways to quickly validate new ideas. I will challenge you to think outside the box. You will see that in order to validate an idea, you actually need to do a lot less then you are accustomed to.</p> <p>Most importantly it is about changing your mindset, to accept that building a MVP is not the same as building a product. I would love to see a mixture of technical people and product/business people.</p>
Room: Galgebakken
Tårnplass
Hødden
ROCA: Embrace the Web
Willem van Kerkhof, Frederik Dohr
<p>presentation slides: http://helloworld.innoq.com/presentations/roca_booster_2013.pdf</p> <p>Highly interactive web applications have long overtaken static pages as the dominant face of the web as perceived by end users, leading to the much-hyped term "Web 2.0". Although the precise meaning of that term remains ill-defined, a responsive interaction experience and the possibility to utilize user-generated data are certainly among its core aspects. Considering a growing range of end-user devices and new browser APIs in different stages of maturity, web developers today are faced with a dramatic increase in possibilities and challenges.</p> <p>Apart from these technological advances, a host of new architectural approaches to building web applications has emerged in the past few years. All of these approaches can be classified along a spectrum ranging from server-side to client-side emphasis, with great differences in the level of "web awareness" expected of developers.</p> <p>ROCA (http://roca-style.org) is an attempt to capture a common - if recently somewhat neglected - approach which leverages both server-side and client-side capabilities while emphasizing the authority of the server-side for essential application logic. By building on the well-understood nature of the web, this approach not only preserves the virtues of the web without sacrificing user experience, it also leads to cleaner and more maintainable software architectures.</p> <p>This tutorial will explain the basic proposition of ROCA, provide various hands-on exercises and serve as a forum for discussing conceptual and implementation issues.</p> <p>Participants should have at least a basic understanding of HTML, JavaScript and REST principles.</p>
Room: Hødden
Teatergaten
#!/bin/bash for programmers
Stein Inge Morisbak
<p>Usually we learn new programming languages by creating small toy projects that are rarely useful. When you learn shell scripting you usually create something very useful the first time. It starts out by putting a few commands in sequence and running it. Immediately you experience the power of the shell and you want to do more advanced stuff. You start looking at loops, if's, arrays and functions. That's when you may experience that your scripts become a nightmare to maintain and understand, and you miss the set of tools and techniques you are used to from programming in other languages. Very little is intuitive and small variations in syntax results in unpredictable and unexplainable results. When the scripts become bigger they become confusing and difficult to read, and you start to miss unit testing, debugging possibilities, syntax control, standardization, organizing of code files, and logging frameworks.</p> <p>In this workshop we will delve into common problems you may encounter when scripting bash and how to cope with them. We will train using techniques and tools from the "programmers world" that are not so common to use in the "operators world" and have a look at what developers need to learn about arrays, loops, scoping, system variables and *nix tools to become effective bash programmers. Participants will experience how scripts can become a lot more manageable and less error-prone. We will look at functions, unit tests, debugging possibilities, syntax control, standardisation, organising of code files, version control and logging frameworks, and experience how they enhance the quality, maintainability, readability, reusability, cleanliness, changeability, testability, security and ease of use.</p>
Room: Teatergaten
Muséplass
Strangehagen
Dragefjellet
Downstairs — Coffee break
15:30-17:00
Galgebakken
Stop wasting time! Build your MVP in one day and start validating now!
Mark Nijhof
<p>Goals: At the end of this workshop you will have learned; how to start validating your assumptions, using the ideas from the Lean Startup approach. Starting from the simplished possible solution, till being able to build your MVP within one day.</p> <p>I have been building software professionally since 2000. One thing that is strikingly clear to me is; the amount of waste that is being created in our industry. We build and build without knowing that what we build is actually valuable. Will they use it? Will they pay for it? We just don&rsquo;t know!</p> <p>So, there is the Lean Startup to the rescue. We now know that we should build a Minimal Valuable Product or MVP, instead of going all the way. But, now I hear things like; &ldquo;Our MVP will be ready in a few months&rdquo;. Is it really necessary to wait several months before you can validate your ideas? I don&rsquo;t think this is needed!</p> <p>We have come so accustomed to long running projects that we think delivering something in a month is fast. So, this workshop is about creating a different mindset, and about using the right tools. During the workshop, which is based on my direct experience starting http://www.inqob.com/ and http://www.randommanager.com/, we will work on the different stages of our MVP.</p> <p>In the first part of the workshop, after a short introduction and setting the stage, we will have a few interactive group exercises; I will introduce the group to a way to validate their assumptions without having the create anything. We will discuss the value this approach creates and some common pitfalls.</p> <p>During the break we will test what we have learned with some actual people from the customer segments we defined.</p> <p>In the second part of the workshop we will first discuss the outcomes of our experiment during the break. Then you will be challenged to think about and implement ways to quickly validate new ideas. I will challenge you to think outside the box. You will see that in order to validate an idea, you actually need to do a lot less then you are accustomed to.</p> <p>Most importantly it is about changing your mindset, to accept that building a MVP is not the same as building a product. I would love to see a mixture of technical people and product/business people.</p>
Room: Galgebakken
Tårnplass
Hødden
ROCA: Embrace the Web
Willem van Kerkhof, Frederik Dohr
<p>presentation slides: http://helloworld.innoq.com/presentations/roca_booster_2013.pdf</p> <p>Highly interactive web applications have long overtaken static pages as the dominant face of the web as perceived by end users, leading to the much-hyped term "Web 2.0". Although the precise meaning of that term remains ill-defined, a responsive interaction experience and the possibility to utilize user-generated data are certainly among its core aspects. Considering a growing range of end-user devices and new browser APIs in different stages of maturity, web developers today are faced with a dramatic increase in possibilities and challenges.</p> <p>Apart from these technological advances, a host of new architectural approaches to building web applications has emerged in the past few years. All of these approaches can be classified along a spectrum ranging from server-side to client-side emphasis, with great differences in the level of "web awareness" expected of developers.</p> <p>ROCA (http://roca-style.org) is an attempt to capture a common - if recently somewhat neglected - approach which leverages both server-side and client-side capabilities while emphasizing the authority of the server-side for essential application logic. By building on the well-understood nature of the web, this approach not only preserves the virtues of the web without sacrificing user experience, it also leads to cleaner and more maintainable software architectures.</p> <p>This tutorial will explain the basic proposition of ROCA, provide various hands-on exercises and serve as a forum for discussing conceptual and implementation issues.</p> <p>Participants should have at least a basic understanding of HTML, JavaScript and REST principles.</p>
Room: Hødden
Teatergaten
#!/bin/bash for programmers
Stein Inge Morisbak
<p>Usually we learn new programming languages by creating small toy projects that are rarely useful. When you learn shell scripting you usually create something very useful the first time. It starts out by putting a few commands in sequence and running it. Immediately you experience the power of the shell and you want to do more advanced stuff. You start looking at loops, if's, arrays and functions. That's when you may experience that your scripts become a nightmare to maintain and understand, and you miss the set of tools and techniques you are used to from programming in other languages. Very little is intuitive and small variations in syntax results in unpredictable and unexplainable results. When the scripts become bigger they become confusing and difficult to read, and you start to miss unit testing, debugging possibilities, syntax control, standardization, organizing of code files, and logging frameworks.</p> <p>In this workshop we will delve into common problems you may encounter when scripting bash and how to cope with them. We will train using techniques and tools from the "programmers world" that are not so common to use in the "operators world" and have a look at what developers need to learn about arrays, loops, scoping, system variables and *nix tools to become effective bash programmers. Participants will experience how scripts can become a lot more manageable and less error-prone. We will look at functions, unit tests, debugging possibilities, syntax control, standardisation, organising of code files, version control and logging frameworks, and experience how they enhance the quality, maintainability, readability, reusability, cleanliness, changeability, testability, security and ease of use.</p>
Room: Teatergaten
Muséplass
Strangehagen
Dragefjellet
Bølgen & Moi — Conference dinner

Thursday March 14

Reception area — Registration
09:00 - 10:30
Tårnplass
Coding Dojo Challenge: Writing Readable Tests & Refactoring
Emily Bache
<p>In this hands-on session we will be looking at a rather smelly piece of code which needs a full set of automated tests so that it can be refactored and extended with new functionality. It can be awkward to express high level requirements in code, but in my experience test readability is crucial for those tests being useful and maintainable in the long term. We'll be stepping into the Coding Dojo together, which is a safe place designed for learning, where it doesn&rsquo;t matter if we make mistakes. In fact all the code will be thrown away afterwards. You should feel free to experiment, try out different styles of test, and get feedback from your peers.</p> <p>We're taking a simple, bounded problem, where the code basically works, and the requirements are largely understood. The idea is to practice your test design and refactoring skills, and have fun doing it. We're trying to provoke that "aha!" experience where you realize how much the tests are helping you understand the requirements and get control of the code. There's a feeling of safety and freedom to refactor then add new functionality, which once you've experienced leaves you wanting more. This session could give you that extra bit of motivation to get going writing good automated tests for your production code.</p> <p>The problem we'll be looking at is the "Gilded Rose" Refactoring Kata, see https://github.com/emilybache/Refactoring-Katas/tree/master/GildedRose). For this session we'll be focussing on adding good readable tests to the existing code, followed by refactoring leaning on those tests. The Kata is available in various programming languages, including Java, C#, Python and Ruby.</p>
Room: Tårnplass
Muséplass
Fly-weight Agile: Just enough process to get rid of
Matt Barcomb
<p>Abstract</p> <p>========</p> <p>Agile claims to value "individuals and interactions over processes and tools", but there sure does seems to be a lot of dogmatic, process-oriented "agile" out there! Sure, process is important, it provides consistency and repeatability for teams but those processes should also help support those individuals&hellip;and their interactions.</p> <p>&nbsp;</p> <p>This session will briefly review many of the common lean and agile processes and technical practices typically implemented. Next, attendees will be shown various ways of combining practices from each to create a light-weight system that can be adapted to almost any team environment using hands-on activities to illustrate how. Finally, the session will close by discussing common patterns that would allow a team to further simplify, and in some cases even eliminate, even these light-weight practices leaving only a Fly-weight process behind.</p> <p>&nbsp;</p> <p>Process/Mechanics:</p> <p>==================</p> <p>This workshop provides 3 hands-on activities to complement the conceptual content of the rest of the session.</p> <p>1) Value Mapping: an activity the allows individuals or small groups to understand how to build a value map and utility matrix for prioritization.</p> <p>2) Proving Estimation Waste: an activity that helps individuals or small groups learn how to use lightweight metrics to prove to themselves that their estimation has become wasteful.</p> <p>3) Relative Sizing: an activity that teaches participants how to quickly size items relatively to one another and group them into classes of work.&nbsp;</p>
Room: Muséplass
Galgebakken
Teatergaten
Dragefjellet
Strangehagen
Hødden
Downstairs — Coffee break
10:45 - 12:15
Tårnplass
Coding Dojo Challenge: Writing Readable Tests & Refactoring
Emily Bache
<p>In this hands-on session we will be looking at a rather smelly piece of code which needs a full set of automated tests so that it can be refactored and extended with new functionality. It can be awkward to express high level requirements in code, but in my experience test readability is crucial for those tests being useful and maintainable in the long term. We'll be stepping into the Coding Dojo together, which is a safe place designed for learning, where it doesn&rsquo;t matter if we make mistakes. In fact all the code will be thrown away afterwards. You should feel free to experiment, try out different styles of test, and get feedback from your peers.</p> <p>We're taking a simple, bounded problem, where the code basically works, and the requirements are largely understood. The idea is to practice your test design and refactoring skills, and have fun doing it. We're trying to provoke that "aha!" experience where you realize how much the tests are helping you understand the requirements and get control of the code. There's a feeling of safety and freedom to refactor then add new functionality, which once you've experienced leaves you wanting more. This session could give you that extra bit of motivation to get going writing good automated tests for your production code.</p> <p>The problem we'll be looking at is the "Gilded Rose" Refactoring Kata, see https://github.com/emilybache/Refactoring-Katas/tree/master/GildedRose). For this session we'll be focussing on adding good readable tests to the existing code, followed by refactoring leaning on those tests. The Kata is available in various programming languages, including Java, C#, Python and Ruby.</p>
Room: Tårnplass
Muséplass
Fly-weight Agile: Just enough process to get rid of
Matt Barcomb
<p>Abstract</p> <p>========</p> <p>Agile claims to value "individuals and interactions over processes and tools", but there sure does seems to be a lot of dogmatic, process-oriented "agile" out there! Sure, process is important, it provides consistency and repeatability for teams but those processes should also help support those individuals&hellip;and their interactions.</p> <p>&nbsp;</p> <p>This session will briefly review many of the common lean and agile processes and technical practices typically implemented. Next, attendees will be shown various ways of combining practices from each to create a light-weight system that can be adapted to almost any team environment using hands-on activities to illustrate how. Finally, the session will close by discussing common patterns that would allow a team to further simplify, and in some cases even eliminate, even these light-weight practices leaving only a Fly-weight process behind.</p> <p>&nbsp;</p> <p>Process/Mechanics:</p> <p>==================</p> <p>This workshop provides 3 hands-on activities to complement the conceptual content of the rest of the session.</p> <p>1) Value Mapping: an activity the allows individuals or small groups to understand how to build a value map and utility matrix for prioritization.</p> <p>2) Proving Estimation Waste: an activity that helps individuals or small groups learn how to use lightweight metrics to prove to themselves that their estimation has become wasteful.</p> <p>3) Relative Sizing: an activity that teaches participants how to quickly size items relatively to one another and group them into classes of work.&nbsp;</p>
Room: Muséplass
Galgebakken
Teatergaten
Dragefjellet
Strangehagen
Hødden
Dokken
Restaurant — Lunch
Dragefjellet — Introduction to open spaces
Dragefjellet and more — Open spaces 1
Dragefjellet and more — Open spaces 2
Litteraturhuset - Alver — Geek beer/Community night

Friday March 15

Reception area — Registration
09:00 - 10:30
Teatergaten
Dragefjellet
Hødden
Galgebakken
Muséplass
Strangehagen
RaspberryPi and Java
Joachim Haagen Skeie
<p>Are you ready for a fun day hacking away on a (conference supplied) Raspberry Pi ?</p> <p>In this full day workshop (which can be adapted to a half day workshop if the booster conf comitee prefers), we will start out by installing the Raspian operating system onto an empty SD card, followed by either OpenJDK or Oracle's Embedded JRE. We will go though the basics of the amazing Raspbery Pi Hardware, and we will learn how we can use the General Purpose Input/Output (GPIO) pins located on the card to interact with physical external hardware like resistors, capacitors, LEDs, wires and breadboards.&nbsp;</p> <p>You will have an input on where we go in the second half of the workshop. We can implement an old-school room temperature sensor and binary display using resistors, capacitors, Java and LEDs, or we can create a simple hardware-based game, etc. If you have an awesome idea, email me in advance of the conference and we can discuss that too! (joachim@haagen-software.no).</p> <p>This workshop expects that you have a basic understanding of how to operate in the Linux Shell, that you know how to use SSH, SCP and how to add both files and JAR-files to the classpath of your Java applications from the command-iine (-jar and -cp should be famiiar to you). If not, then this workshop might not be for you. In the first part of the workshop we will work mostly out of the SSH shell.</p> <p>Technical details: The Raspberry Pi is an amazing little credit-card-sized computer that holds a 700MHz ARM CPU, 512MB RAM, USB, HDMI, Ethernet, and composite video and audio. In addition it has a set of digital GPIO pins that you can use to interact with physical hardware. And the best part, is that it is packed into a package that sells for USD 35! Read more about the Raspberry Pi from the Rasperry Pi Foundations website:&nbsp;http://www.raspberrypi.org</p>
Room: Strangehagen
Sydneshaugen
Downstairs — Coffee break
10:45 - 12:15
Teatergaten
Dragefjellet
Hødden
Galgebakken
Muséplass
Strangehagen
RaspberryPi and Java
Joachim Haagen Skeie
<p>Are you ready for a fun day hacking away on a (conference supplied) Raspberry Pi ?</p> <p>In this full day workshop (which can be adapted to a half day workshop if the booster conf comitee prefers), we will start out by installing the Raspian operating system onto an empty SD card, followed by either OpenJDK or Oracle's Embedded JRE. We will go though the basics of the amazing Raspbery Pi Hardware, and we will learn how we can use the General Purpose Input/Output (GPIO) pins located on the card to interact with physical external hardware like resistors, capacitors, LEDs, wires and breadboards.&nbsp;</p> <p>You will have an input on where we go in the second half of the workshop. We can implement an old-school room temperature sensor and binary display using resistors, capacitors, Java and LEDs, or we can create a simple hardware-based game, etc. If you have an awesome idea, email me in advance of the conference and we can discuss that too! (joachim@haagen-software.no).</p> <p>This workshop expects that you have a basic understanding of how to operate in the Linux Shell, that you know how to use SSH, SCP and how to add both files and JAR-files to the classpath of your Java applications from the command-iine (-jar and -cp should be famiiar to you). If not, then this workshop might not be for you. In the first part of the workshop we will work mostly out of the SSH shell.</p> <p>Technical details: The Raspberry Pi is an amazing little credit-card-sized computer that holds a 700MHz ARM CPU, 512MB RAM, USB, HDMI, Ethernet, and composite video and audio. In addition it has a set of digital GPIO pins that you can use to interact with physical hardware. And the best part, is that it is packed into a package that sells for USD 35! Read more about the Raspberry Pi from the Rasperry Pi Foundations website:&nbsp;http://www.raspberrypi.org</p>
Room: Strangehagen
Sydneshaugen
Restaurant — Lunch
13:30 - 15:00
Teatergaten
Dragefjellet
Hødden
Galgebakken
Muséplass
Strangehagen
RaspberryPi and Java
Joachim Haagen Skeie
<p>Are you ready for a fun day hacking away on a (conference supplied) Raspberry Pi ?</p> <p>In this full day workshop (which can be adapted to a half day workshop if the booster conf comitee prefers), we will start out by installing the Raspian operating system onto an empty SD card, followed by either OpenJDK or Oracle's Embedded JRE. We will go though the basics of the amazing Raspbery Pi Hardware, and we will learn how we can use the General Purpose Input/Output (GPIO) pins located on the card to interact with physical external hardware like resistors, capacitors, LEDs, wires and breadboards.&nbsp;</p> <p>You will have an input on where we go in the second half of the workshop. We can implement an old-school room temperature sensor and binary display using resistors, capacitors, Java and LEDs, or we can create a simple hardware-based game, etc. If you have an awesome idea, email me in advance of the conference and we can discuss that too! (joachim@haagen-software.no).</p> <p>This workshop expects that you have a basic understanding of how to operate in the Linux Shell, that you know how to use SSH, SCP and how to add both files and JAR-files to the classpath of your Java applications from the command-iine (-jar and -cp should be famiiar to you). If not, then this workshop might not be for you. In the first part of the workshop we will work mostly out of the SSH shell.</p> <p>Technical details: The Raspberry Pi is an amazing little credit-card-sized computer that holds a 700MHz ARM CPU, 512MB RAM, USB, HDMI, Ethernet, and composite video and audio. In addition it has a set of digital GPIO pins that you can use to interact with physical hardware. And the best part, is that it is packed into a package that sells for USD 35! Read more about the Raspberry Pi from the Rasperry Pi Foundations website:&nbsp;http://www.raspberrypi.org</p>
Room: Strangehagen
Sydneshaugen
Downstairs — Coffee break
Dragefjellet — See you next year