The Power of Hybridization
Botanical hybridization attempts to combine the best characteristics of plants. The Santa Fe Institute mixes people who have very different views of the world to produce breakthrough concepts. Differential equations are often solved by transforming into a space where the solutions become trivial. Overbred dogs are prone to disease due to lack of genetic diversity. Trying things that are very different will break you out of your patterns. For me, painting, acting, biking, skiing, and reading books outside my “normal” purview help with my struggles to reinvent my place in the world.
Programming languages always seem to do some things well but not
others: Python punts when it comes to user interfaces, Java’s artificial complexity prevents rapid development and produces tangles, and it will be awhile before we see benefits from C++ concurrency work. The "weight" of languages and their blind spots increases the cost of experimentation, impeding your ability to fail fast and iterate. If you must use a single language to solve your problem, you are binding yourself to the worldview limitations and the mistakes made by the creator of that language.
Consider increasing your wiggle room by crossing language boundaries, complementing a language that is powerful in one area with a different language powerful in another. This is not necessarily easy. You'll probably prefer pounding out a solution in your one chosen language -- only discovering the impenetrable roadblock after you've built a mass of code, long after passing from a brief experiment into "the critical path on which all depends." Language hybridization can speed the experiment forward to quickly discover your real problems, giving you more time to fix them.
After making a case for hybridizing your thinking in general, I will present a number of simple examples showing the hooks that are already built into languages (for example, Python's ctypes) and tools created to aid hybridization (like XML-RPC). Along the way, I'll point out pitfalls, the most devious of which is "assumptions about performance.
Compose yourself with Reactive Extension (Rx)
An intriguing insight to of what the future of asynchronous and event-based programming could look like in the next version of .Net?
In this session we will walk through the basics of ReactiveExtensions (Rx) from scratch, talking about what problem the framework is trying to solve, the simple interfaces that underpin its workings and looking at simple, common examples of where Rx might help in your development today and tomorrow.
Get rid of all extra plumbing when dealing with asynchronous and event based programming and start using Rx to control the flow.
Phone zero to phone hero in 50 minutes
Robert Folkesson and Chris Klug
Windows Phone 7 och Windows Azure ger helt nya möjligheter för .NET-utvecklare att skapa mobila applikationer kopplade till flexibla och dynamiskt skalbara molntjänster. Chris Klug och Robert Folkesson visar tillsammans i en gemensam kodintensiv presentation hur du från grunden bygger en Windows Phone 7-app i form av en positioneringstjänst som använder Windows Azure som backend.
ASP.NET MVC 3 Hidden Gems, Tips and Tricks
The ASP.NET MVC framework has been around for more than two year now and has been constantly gaining popularity ever since. However, despite that fact, a lot of MVC developers are not aware of various hidden gems that can make their development experience much easier and nicer. In this session we will go through some of those which were added in the latest version – ASP.NET MVC 3.
Windows 8 and the Metro push: Building for the future.
Under build konferensen annonserade Microsoft en skiftning i deras teknikstack. Med Windows 8 förändras landskapet för de som vill bygga applikationer och lösningar på Microsofts plattform. Här kommer du få en förståelse för vad de förändringarna betyder för dig och vilka möjligheter du får med den nya teknologin.
Windows Phone - Mango
Nu har det gått ett år sedan Windows Phone lanserades. Under sensommaren kom nästa version ut, med projektnamnet Mango. En uppdatering som har fått mycket positiv kritik. I den här sessionen går vi igenom vad som är nytt i Windows Phone Mango, med speciellt inriktning på app-utveckling. Vi går bland annat igenom IE9, Bakgrundsprocesser, nya kontroller och nyheter i Marketplace.
Rapid Application Development with Apache Wicket
The model supplied by Java Web Frameworks is broken. As software engineers break away from the shackles of Struts and the false promises of JSF, a new model based on object oriented programming and a clean separation of concerns has emerged with Apache Wicket. The framework has a simple component hierarchy allowing for reusability without pain.
This session looks at the core aspects that Wicket provides. Walk through the basic components and concepts and peer into an example app built using Wicket. Get insights into the differences between it and two other popular Java frameworks: JSF and GWT. Learn how Wicket embraces the object oriented concepts you haven't been able to use in web frameworks in the past, and have fun in the process.
Above the Clouds: Introducing Cloudy Akka
We believe that one should never have to choose between productivity and scalability, which has been the case with traditional approaches to concurrency and distribution. The cause of that has been the wrong tools and the wrong layer of abstraction and Akka is here to change that. Akka is using the Actors together with Transactional Memory to create a unified runtime and programming model for scaling both UP (utilizing multi-core processors) and OUT (utilizing the grid/cloud). Akka provides location and network transparency by abstracting away both these tangents of scalability by turning them into an operations and configuration task. This gives the Akka runtime freedom to do adaptive automatic load-balancing, cluster rebalancing, replication and partitioning. In this talk you will learn what Akka is and how it can be used to solve hard scalability problems. Akka is available at http://akka.io (under Apache 2 license).
Learn how to write highly concurrent, distributed and fault-tolerant systems using Actors
* Utilize Actors for a simpler model for Scaling UP on multi-core architectures
* Utilize the location-transparency of distributed Actors to Scale OUT in virtualized environments
* Embrace the ÒLet it crashÓ model of fault handling to write systems that heal themselves, systems that never stops.
AkkaÕs Actors are a perfect model for writing highly concurrent and scalable systems. Writing concurrent systems using traditional techniques such as locks and threads is way too hard. The Actor model provides a great alternative in which it is easier to write correct and performant highly concurrent systems that are easier to understand and reason about.
This model also provides location transparency, e.g. transparent distributed computing. The user of the Actors does not need to know if the reference it has to an Actor represents an Actor in-process or on another machine. This makes it trivial to write systems that can scale with the needs of the application. It also gives the runtime a lot of freedom in adaptively optimizing the communication and usage of the cluster.
Finally, Akka Actors also embraces the so-called ÒLet it crashÓ model for fault-tolerance. A model that has been used with high success in the Telecom industry for years to write highly available systems that can adaptively heal themselves while running.
* Learn to scale UP and OUT using a single unified programming model and runtime
* Learn how to write highly fault-tolerant systems that self-heals
* Learn how to maximize the usage of the Cloud using Actors
Actors are a great tool to write highly concurrent, distributed and fault-tolerant systems. It is a model that embraces the Cloud and makes it very easy to write systems for a single node that can without modifications scale out to hundreds of nodes in the Cloud.
Effective JPA 2.0
Industrial strength and stardards based persistence for Java. Finally.
The Java Persistence API 2.0 specification was released in the end of 2009 and has since been a beacon of hope for a modern, effective and standardized support for ORM style data access in Java. Support for the specification in products like Hibernate and EclipseLink is now fully mature and ready for prime-time.
This code-centric talk, that assumes at least familiarity with Java ORM concepts, will discuss new features in JPA 2.0 and how (and why) they can be effectively used ʼin real lifeʼ.
- Criteria API
- Query hints
- Validation support
- Second level caching
- Expanded collection mappings
- and more ...
Java SE at Oracle – 2011 update.
Oracle has a well earned reputation of being secretive with upcoming features and releases. The exception of this rule is JavaOne and Oracle Open World conferences where we announce the vast majority of news for the coming year. In this presentation we will condense all of the Java SE announcements from this year’s conference. Add corrections and clarifications and you get a presentation that is like spending a week in SF, only better and more condensed.
Get acquainted with Scala
Scala is one of the more popular languages on the JVM. It is both object-oriented and functional has some interesting features that among other things makes concurrent programming easier. It has been gaining popularity lately and is used by well known companies like LinkedIn and Twitter. In this presentation you will be introduced to the awesomeness of Scala using both theory and live coding.
After a short introduction for beginners we will dive into some of the most common problems that both junior and senior Android developers run into, for instance handling global application data and designing user interfaces that work for both phones and tablets. We will also take a look at what it's like to publish and manage several apps on the Android Market.
Asynchronous Programming with Node.js
Node.js is one of the hottest things in programming right now. What is
it and why is it hot?
In this presentation you will learn about asynchronous or event-driven
programming in Node. I will show you tools for testing, debugging, and
deployment. You will get an overview of some popular frameworks. And, I
will demonstrate techniques for dealing with the problems that arise with
It's no secret that the iOS platform has completely changed the mobile landscape. The App Store is approaching its 10 billionth download, and up until several open source projects showed up, the only possibility for building an application used on an iOS device was either learn Objective-C, or serve up a non-native web application.
Introduction to Ruby on Rails
The most famous Ruby–driven framework is, by far, Ruby on Rails. In the last few years this framework has been gaining popularity and now is a great time to get to know it. In this session, Shay Friedman will build an entire Web 2.0 site from scratch while using and explaining the key features of Ruby on Rails. Come and see what Ruby on Rails is all about and what's made it the success it is today.
HTML5 for web developers
Danwei Tran Luciani
Join me in this session to take a closer look at the possibilities HTML5 offers for web developers. Through demos and code examples we will find out how you can take advantage of the next wave of web standards including HTML5, CSS3, SVG and more. See how you can get started today with tomorrow’s web technologies and learn techniques on how you can utilize HTML5 while still offering good experience for non-modern browsers.
Automated web testing with Selenium
Verifying that a system works is one of the most important tasks for a project. It is, however, difficult for humans to do testing repeatedly. Humans get sloppy after a while and start to miss out on important things. The way to go is to use humans for exploratory testing and automate testing of all important flows in the system.
I will show the participants how to test web applications using JUnit and Selenium. There will be code, a test run and a green bar.
Selenium is an open source tool that will test a web site through a browser. It is therefore perfect for testing web sites that need to support a combination of different browsers on different operating systems.
The tests are normal JUnit tests that will drive a browser and fail if the test fails and pass if the test passes.
The web application will be deployed on a server using Maven and the entire integration test will be performed with one command to Maven. This includes downloading the application server and all tools needed and finally running all tests. In short, a one click build.
* The participants will have a gut feeling that automation of testing web applications is possible
* The participants will have seen that the entire build process is possible to automate using Maven
Developing for the web, on the web
It's happening. Regardless of your platform or language of choice, software development is moving online. That's where we come in. Cloud9 IDE is the opensource platform for application development in the cloud.
In this presentation, Sergi Mansilla will highlight the advantages of developing software in the Cloud, and how writing your code online is both fun and highly productive. He will also address the underlying Cloud9 IDE technology, based on node.js, and will showcase the newest features and how easy it is to run, debug and deploy an application online from the IDE.
Cloud-based software development offers a whole host of advantages. In particular, with a development environment in the Cloud, collaboration between developers takes on a whole new dimension. Pair programming, social coding, faster debugging or reviewing code on your favorite mobile or tablet -- it is all possible when your code is online. In this talk Sergi will visit all of these different topics and tell you why writing your code online provides massive benefits for all types of developers.
Development Process & Methodology
Overcoming Self-organization Blocks
Weʼll talk about the group dynamics that hinder self-organization in Agile teams and about the ways to counteract these issues.
Self-organization alters both the manager/team dynamics and peer-to-peer dynamics. Resistance to these changes may arise and it may come from a latent blaming culture, from confusing guidance with command, from the fear of taking responsibility or losing status, and also from a misalignment of the team with the organization's business goals.
Through storytelling, explanations and exercises, we'll see some common sources of resistance to self-organization as well as techniques to loosen the blocking dynamics.
Beyond Scrum and Kanban
Neither Scrum nor Kanban is a silver bullet. Organizations trying to implement
Scrum or Kanban need to meet several challenges. In this talk you will hear
about aspects of deepening your understanding of your needs and how to add to your current implementations of Scrum or Kanban in order to increase the probability of success.
In order to be succesful implementors need to shift focus from teams to organization, from tactics to transformation, from tools to behaviors and finally; from results to value.
Is Scrum incompatible with your brain?
When you start using Scrum, interesting things start happening in your brain. Scrum exposes a lot of problems, and you brain tries to make you feel better by automatically sweeping them under the carpet. Unfortunately this also means that improvements achieved will be limited and actually it will make you feel worse rather than better. This talk will show you how to handle this and other basic human issues that occur when you start working on changing and improving. After the talk you will have new skills that you can apply to make progress on any problem you care about.
Why is Changing Things So Hard?
Wether you've tried to launch a new organization wide program to change the way you deliver software to your customers, or just innocently suggested to your team mates that you should perhaps try a new tool or technique. You know that change is hard!
Reactions might range from ignoring you to getting downright angry.I firmly believe that no matter how sound your idea is, you need to consider the mechanisms of resistance if you want a successful transformation.
In this presentation I discuss resistance and its underlying mechanisms, and how you can use that knowledge to create real, sustainable change.
Taylorism and Mass Production - Why The Software Factory Fails
* Why do we separate development from maintenance and operations?
* Why do system architects chose frameworks and write UML diagrams but do not write any code?
* Why do we measure how many lines of code a developer writes?
The theories of Frederick Taylor and those that followed them still today sets
the norm for how organizations are managed. What we see as normal and common
ways to organize work have their historical roots in early 1900's steel mills.
These practices make agile adoption difficult, hinders empirical processes
and self organizing teams.
The talk provides an explanation to why IT-organizations are managed like
factories, why these fail, and how to start the change into a succesful agile
Driving large scale agile transformation.
Building the case for and transforming a large organization with huge legacy in product, process and culture in an agile direction is not for the faint-of-heart. However, if you are successful there is a promise for performance at a much higher level. In this talk we will look at how you can promote such a change, including:
• How to build the case for of the transformation?
• What are the first steps?
• Why and what kind of pilots you should run?
• Preparing for the big leap and handling the consequences
• What to deal with upfront and what to leave for later
We’re all used to dealing with code that – all too obviously – has a history. Tangled code, of the sort that many of us have to deal with every day, didn’t get that way by itself: it’s a result of a sequence of design decisions made on the basis of mixed, conflicting and sometimes unclear information, assumptions and abilities. How do we convey to our teams why design matters? It’s not about the code working or being efficient or reliable, it is about the load that bad design puts on a project.
This session introduces techniques for surfacing the issues caused by bad code and for improving the team’s ability to minimize and mange code debt. The aim is to help participants move themselves and their teams to a higher level of design ability.
• Introduction. A participative exercise will underline the message of this session: that code debt slows us down.
• What is code debt? A brief investigation into code quality, and how debt gets in the way. The 5 levels of team capability in dealing with debt. Some examples of debt in a “well-known open-source project”.
• Forensic accounting. How does code get this way? We’ll look at the sequence of decisions, none of them unreasonable, that lead to a debt-ridden codebase.
• Dealing with Debt. Some ideas on working with teams to tackle debt, and to move up the ladder of capability.
This session grew out of work undertaken with clients, and was developed and delivered by Peter Marks and David Harvey at SPA2008, and with updates at QCON 2009 and AgileCambridge 2010. It has received strongly positive feedback in all venues.
Software Development Craftmanship
Craftsmanship is about skillfully creating useful, well-wrought items, for example furniture and glassware. The term sounds like it’s straight out of a description of the middle ages, yet many of the best software developers in the world have signed their names to a manifesto that values “well-crafted software” and pledges to “help others learn the craft”. What are they on about? Surely software development is a branch of engineering not carpentry? Actually, I think there are useful insights to be gained from this craftsmanship metaphor. I’d like to take you through the manifesto for software craftsmanship, explain the background and what it means in practice.
We’ll touch on topics like agile methods, testing, usability design and clean code. This is all about being a successful software developer in the 21st century - fancy wooden chairs and hand blown wine glasses will not feature, I promise.
Defect tracking is useless, creating reports on bug trends is a waste of time. Teams who really want to present their business stakeholders with useful information need to focus on a completely different way of reporting. Join Gojko Adzic for an exploration of different ways to measure and visualise quality of software.
Long term value of acceptance tests
Most of the discussion on automated acceptance tests focuses on immediate benefits in development and defect detection or regression testing.
But that's not nearly all you can get from your tests. While working on his new book, Gojko interviewed teams that have been using agile acceptance testing for six or seven years. These teams got quite unexpected long term benefits, such as being able to support their system easier, significantly change their business models or survive the absence of key business people. Gojko will talk about what you need to do to achieve that as well.
This talks is a personal view on tools, resources and techniques which can help you becoming a better developer. Hardy explains what ideas from books like "My Job Went to India" (Chad Fowler), "The Pragmatic Programmer" (Andrew Hunt) and "Pragmattic Thinking and Learning" (Andrew Hunt) mean to him and how he tries to become a better developer every day by applying some of these ideas.
Becoming a better developer, however, requires also to understand our own software better. Only if we understand ourselves we are able to learn effectively and tap into otherwise dormant resources. In this context the Dreyfus model of skill acquisition is explained as well as the different operational modes of our brain (linear vs rich).
TDD with Mock Objects: Design Principles and Emerging Properties
What is the relationship between TDD and design principles? Does TDD hamper good design or does encourage, support and promote it?
The paper investigate the relationship between the practices of TDD and SOLID design principles and the Law of Demeter.
The paper analyze the the intriguing hypothesis that TDD encourages programmers to write code that adhere to SOLID design principles and the LoD as an emergent property.
And present the results of an exploratory study based on observations and qualitative evaluations on the experiences of a team that began writing code more compliant with S.O.L.I.D. design principles and partially with the Law of Demeter after adopting the practice of TDD with Mock Objects.
Applications and consequences of the hypothesis are also briefly discussed.
Scaling Data-Bases in the Cloud with NoSQL, BASE and Sharding
The huge benefit of cloud-based applications is the possibility to scale them profoundly. Conventional relational databases arn't able to keep up with that. Concepts like NoSQL, BASE and Sharding promise solutions for this challenge. This session shows why those concepts improve scalability and availability and how Azure Storage Services implement them. Futhermore, this session informs about sharding-features in the future version of SQL Azure, which allows for scaling RDBMS.
Federerad säkerhet och identitetshantering – lokalt och i molnet
I takt med att fler och fler tjänster läggs i molnet och integreras med tredje part blir hanteringen av identiteter och accesskontroll allt mer komplex. Med hjälp av Active Directory Federation Services (ADFS), Windows Identity Foundation (WIF) och Windows Azure AppFabric samt Claims-baserad identitet och accesskontroll kan du frigöra mycket av ansvaret från enskilda applikationer och tjänster, vilket ger en mer flexibel arkitektur som är enklare att anpassa mot nya krav. Vi går igenom begreppen och undersöker scenarion för Claims-hantering, Single Sign-On samt federerad säkerhet – lokalt och i molnet.
Welcome on this flight 247 to the Cloud
The Cloud seems to be all the rage in 2011. All applications move to the Cloud! All applications? Certainly not! But what is the Cloud? In what ways is this different from the data centers of yester year? What characterizes a modern Cloud Application? How do we integrate our IT assets on premises with those in the cloud without having to feel we need to go all in the Cloud? What do you need to think about regarding so called hybrid solutions? What about hybrid data? In this session we will relate our world down on the ground to the so called Cloud by explaining the fundamental properties of good Cloud solutions and by looking at when and what to Cloud and when and what not to Cloud.
Flyby the Azure Blue Clouds
In Windows Azure, the Microsoft version of the Cloud, you can gaze upon a multitude of interesting formations. If you squint the cloud fragments will form a larger and coherent picture. As a .NET Architect I would like to discuss my observations with you. Let’s flyby the different parts of the Microsoft cloudy sky and consider each usage; Worker Roles, different forms of Data Storage and synchronization, authentication and authorization plus other services such as caching and ServiceBus. Also let’s talk about moving to the clouds.
Frihet & Tillgänglighet
Hur förändras en utvecklares liv med moln-tjänster? På vilket sätt kan en utvecklare dra nytta av molnet? Vad behöver man tänka på när man börjar använda moln-tjänster? Kan molntjänster bryta ner muren mellan utvecklings- och produktionsavdelningen?
Utbudet av olika XaaS-tjänster överträffar de vildaste fantasierna. Vi kommer koncentrera oss på molnet som en kapacitetstjänst (IaaS) och försöka ge svaren på ovanstående frågor. Vår utgångspunkt är dels att vi har stöttat företag och organisationer i användandet av moln-tjänster från Amazon och dels av vi arbetar med förbättra samarbetet mellan utvecklings- och produktionsavdelningen genom att automatisera vissa arbetsmoment och förbättra processerna mellan berörda avdelningar. Vi håller förnärvarande på med att bygga en egen kapacitetstjänst som komplement till vår driftstjänst.
Cloud Computing: Developing and Deploying applications in the cloud
John T. Davies
Imagine being able to order 20 new computers, install your own customer
version of Linux, network them up, attach a few dozen terabytes of
storage and have them attached directly to the internet backbone, cool
ah? Well you can and you can do it all in under 5 minutes with Cloud
computing, Amazon's EC2 for example. Set up new development boxes, build
machines, test boxes, deploy demos, provision hardware on demand, set up
disaster recovery sites, scale into the cloud, it's all possible and it
becoming a major feature of today's technology. John will explain,
demonstrate and look into how cloud computing is already changing the
way we work.