This is part 2 of my Øredev wrapup.
Part 1 is here. I will jump right into a resume of the talks I attended:
Again, a very interesting talk by Cameron Purdy.
He argued that some of the basic ways of thinking of software programs have become obsolete or even harmful, when we try to implement highly available, scalable systems on parallel platforms.
Requirements for ACID transactions become bottlenecks, and the assumption that an operation is executed exactly once (because we think in terms of an in-process function call) become hard to satisfy.
Instead of struggling to retain this, we should change our thinking. He briefly discussed the CAP theorem, idempotent messaging, distributed caching, eventual consistency. He, also briefly, described a case of a forex trading platform, where introducing an architecture based on this, increased the throughput massively – of course using Cameron’s DataGrid product: ‘Oracle Coherence’.
This was one of the most interesting talks for me at Øredev. Only way too short: 50 minutes made it impossible to scratch the surface of this topic. I am definitely going to review this talk once the videos become available.
(The CAP theorem states that of three properties of shared-data systems—data consistency, system availability, and tolerance to network partition—only two can be achieved at any given time.)
Focused on the features in version 4, which attempts to address the critique of version 1 from the agile community.
Some key takeaways:
- EF 4 supports persistence of POCO style objects. No need to inherit from an EF baseclass.
- This comes in two flavors, which Julia refered to as push or pull. Pull: the datacontext keeps snapshots of all objects. It calls detectChanges() on objects and compares when nescessary. Push: Objects inform the datacontext when they are changed. If you make the properties on the objects virtual, EF can can create dynamic proxies to your objects by subclassing using reflection, and the notification of objectContext will happen automagically.
- EF 4 uses T4 to generate code, so developers are free to customize.
Emil Eifrem & Adam Skogman.
An edutaining overview of the many new, noSQL databases:
-Google BigTable clones (Hadoop)
4 principles of productivity:
-acceleration (use the commandline and keyboard shortcuts)
-focus (turn off notifications from Outlook etc) ,
-automation (automate trivial tasks),
-canonicality. (aka: the DRY principle – Dont Repeat Yourself)
Check productiveprogrammer.com !
K Scott Allen
explained IEnumerable vs. IQueryable.
Note: Be aware of the LINQ operators: are they ‘greedy’ (ex:count). are they streaming ?
Be aware of the order of operators. Doing a ToList() on a query against a database will cause any subsequent operators of the query to not be part of the generated SQL, but rather to operate in memory on the sequence returned from the db.
Sidenote: Check .NET4 for new linq extensions for working with events: the Reactive Framework. There are videos about it on Channel9.
Oren Eini aka Ayende Rahien
The basic recommendations were:
1) Combine IoC containers with ‘convention over configuration’. Populate the container according to conventions about class names/namespaces instead of configuration file. Can then add new functionality without touching infrastructure code or configuration.
Castle was used in the demos. It has a nice fluent API to populate the container.
2) Use aspects for cross-cutting stuff!. Castle has AOP support. AOP examples : validation, logging.
Eric talked a lot about doing changes in tiny incremental steps and being incredibly focused on process and automation. Using his former company, IMVU, which he co-counded, as the case, he introduced ‘Continuous Deployment': They deployed changes to the production system many times a day. Instead of having endless planning and prioritization meetings, they allowed developers to implement pet features and expose them to selected users while collecting usage statistics. This was made possible by a high level of automation: for example if unittests failed during builds, check-in were automatically blocked until the problem was fixed. After deployment the systems themselves would collect key health metrics, and if something was wrong, the deployment wouls automatically be rolled back.
Some key takeaways:
ASP.NET MVC also uses the T4 generator to generate views, so developers can modify the views that are generated. To override the templates for how views are generated, locate the template folder under the VS installation folder. Drag it into the solution. It now becomes a local override of the default templates.
Scott walked through features supporting a model driven development style.
Encourached to check the sourcecode for MVC.
Sidetip: in Windows 7, check the ‘Boot from VHD’ feature.
Unfortunately, Shawn had a day where every demo failed completely, so we never came close to getting an answer to why Osllo matters.