Herding Code 57: Presentation Patterns with Jeremy Miller, Ward Bell, Rob Eisenberg and Glenn Block (Part 1)

Have you seen the circus gag where clown after clown emerges from the smallest car one could possibly image?  Well, this week on Herding Code, the guys attempt that very same trick!  Listen in as Jeremy Miller, Ward Bell, Rob Eisenberg and Glenn Block (that’s right, four guests!) join the cast and talk Presentation Patterns.  This conversation started earlier this week on Twitter and it is shows no sign of slowing down.  Join us this week and next for an enlightening and exhaustive discussion about Views and Models and ViewModels and everything in between. 

  • Kevin asks the four guests to introduce themselves and then turns the podcast up to 11.
  • Jeremy kicks off the conversation with the “View First vs ViewModel First” discussion.  Jeremy talks about Views, ViewModels, Presenters, Behaviors, Implementation Detail, Separated Presentation, Passive View, iView Interface, Screen Activation, and User Controls… In summary, he’s pro-ViewModel or Presenter first.
  • Ward asks if anyone wishes to defend the View First position.
  • Rob shares that he tends to create his View and Presenter at the same time (although he’s mostly a Model kind of guy.)  Rob also calls out that he does a lot of prototyping in his workflow.
  • Ward talks about where his development always starts – sketching out the UI with his clients.  The ViewModel is ultimately developed to support the interaction discovered in sketching. 
  • Rob agrees. Talks more about prototyping first, gathering requirements, user feedback, workflow, architecture and conventions.
  • Jeremy considers application navigation, behavioral aspects of screens and the contract for view.
  • Glenn calls out the difference between Balsamiq mockups and screens which are maintained by a designer in Blend.  Which approach best supports the tooling experience, maintainability, and testability?  Glenn references Jonas Follesoe and how his designer girlfriend couldn’t function unless he defined the View first.  Glenn initiates conversations about Service Locators.
  • Jeremy questions whether one needs that level of detail.  Do you need to fake in a service locator for your designer experience or are there alternatives?
  • Glenn stresses that we must think about the designer (albeit there aren’t many right now), consider tradeoffs with varying approaches, talks about Prism and Patterns and Practices experiences, and tooling – particularly Blend.
  • Rob talks about providing simple conventions which are taught to designers in lieu of using an inversion of control containers like Windsor.
  • Glenn asks what the designer would see inside of Blend in this case and Rob isn’t aware of  any limitations with this approach.  Is this an issue of designer not having sample data to work with?
  • Jon shares his experience at Vertigo – applications favor design and tooling, applications don’t have complex business rules, applications are Blendable.
  • Jeremy appreciates that appearance may be the most challenging aspect of some applications.  In this case, maybe View First is the most appropriate approach but having Blend driving workflow is a case of the tail wagging the dog.  We need to consider the line of business applications and in that case ViewModel or Presenter must come first.
  • Glenn notes that the View being created first as part of instantiation does not correlate to whether the ViewModel drives behavior from that point on. View First is at the point of activation.  Whether the view is injected into ViewModel or the ViewModel get set into the View, the ViewModel is the guy which is in control.
  • Jeremy explains the Screen Activation pattern and some fairly complex scenarios where logic is executed before the view is activated. 
  • Ward states that he is not a fan of the view determining the ViewModel or the ViewModel selecting the View and prompts Jeremy by asking if a factory could pull the right pieces together and sequence them.
  • Jeremy takes Ward’s queue and talks about the Screen Activator acting as the gatekeeper which puts screens together.  Jeremy reference the Caliburn approach.
  • Rob clarifies the Caliburn ViewModels hierarchy and the use of screen activators and the composite pattern.
  • Glenn talks a bit about complexity, CAB, debugging hierarchies, event aggregators and messaging.
  • Jeremy calls out the benefit of using a composite pattern on a dashboard type application where a part of the screen may act as an application itself but an event aggregator would be best of cross-piece communication.
  • Rob notes that communication in Caliburn is local – it is parent to child or child to parent and this approach can really simplify development.
  • Jon and Rob discuss the approach of simply navigating between two tabs.  Would you use event aggregation, publishing event, commanding or what?
  • Jeremy gives detail to the Screen Conductor role and pattern and Rob stresses the value of methods such as Initialize, Activate, Deactivate, Shutdown and CanShutdown. Jeremy and Glenn walk through an example.
  • Glenn, Rob and Jeremy consider roles and patterns and if they vary from application to application.  Is there an established best practice?  Jeremy believes roles seem to be consistent but implementation changes from project to project. 
  • Ward wraps up Part 1 stating that he agrees with the idea of like roles but not ready to lock into any implementation.  He suggests we call out the actors and see how it plays… 
  • This conversation just won’t end.  Be sure to tune in next week for Part 2.

Show Links:

Download / Listen:

Herding Code 57: Presentation Patterns with Jeremy Miller, Ward Bell, Rob Eisenberg and Glenn Block (Part 1)

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0057-Presentation-Patterns-with-Jeremy-Miller-Ward-Bell-Rob-Eisenberg-and-Glenn-Block-Part-1.mp3]

Show notes compiled by Ben Griswold. Thanks!

Herding Code 56: Markus Völter on Model-Driven Development, DSLs and Product Line Engineering

You know Markus Völter as the founder and voice of Software Engineering Radio. Well, this week on Herding Code, Markus finds himself on the other side of the microphone – fielding, rather than asking, questions. Listen in as Markus explains model-driven software development and product line engineering. Learn about modeling, domain-specific languages, code generation, Eclipse, development outside of the Microsoft/.NET world and much, much more, this week on Herding Code.

  • K Scott leads the discussion asking about developing with Eclipse. Jon asks how Eclipse’s plugin model compares to that of Visual Studio.
  • K Scott introduce the topic of model-driven development and DSLs. Markus steps back and takes some time to talk about terminology.
  • Markus shares why UML can’t be used to appropriately describe one’s domain and jokes that Microsoft has been ignoring UML for years but that are now gravitating toward it just as everyone else is moving away.
  • Markus discusses the difference between modeling and programming.
  • Kevin asks Markus his opinion of Oslo and M, the Oslo Modeling Language. Markus says it is difficult to compare Oslo to Textual Modeling Framework (TMF) found in Eclipse, talks about code generation being incorporated (or not) into Oslo and shares his thoughts about competition between groups at Microsoft. K Scott and Markus discuss their concern with Oslo becoming an extension of SQL and the mixed messages Microsoft is sending.
  • Markus talks about the blurring lines between External vs Internal DSLs.
  • K Scott and Markus discuss productivity gains when incorporating modeling into one’s development.
  • Markus shares the things which changed and influenced his career – design patterns and modeling. Markus stresses that building languages and generators is more applicable to software development than learning the API-of-the-day. K Scott and Markus talk about learning, focusing on the important stuff and separating technical and domain concerns.
  • Jon asks about Microsoft Axum. Markus explains Axum as “Erlang for .NET” and expands upon the benefits of concurrent and functional programming.
  • The show finishes with Markus providing a very nice overview of Product Line Engineering.

Show Links:

Download / Listen:

Herding Code 56: Markus Völter on Model-Driven Development, DSLs and Product Line Engineering

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0056-Markus-Volter-on-Model-Driven-Development-DSLs-and-Product-Line-Engineering.mp3]

Show notes compiled by Ben Griswold. Thanks!

Herding Code 55: Nate Kohari brings Your Moment of Zen

Nate Kohari? Kanban Boards? Continuous Improvement? Zen? Stop right there! We know what you’re thinking.  You already heard this episode about three weeks ago on that other podcast, right?  Well, think again, because this week on Herding Code, the guys pick up where that interview left off.  Listen in as Nate Kohari, the creator of Ninject, talks about the technical nuts and business bolts of his new startup. Find out why Nate choose to build his online product predominantly on a Microsoft stack, how the site is going to scale, how he processes payments, and much, much more, this week on Herding Code.

  • Kevin sets the tone of the show and notes that the guys are going to steer clear of the questions already addressed on a recent Hanselman show.  This talk will focus on technical and startup details.
  • Nate comments on why he build his application using the Microsoft stack.  After all, most startups don’t chose this path. 
  • The guys talk about multiple browser support, jQuery, jQuery Plugins, CSS and Firefox Add-ons.
  • Jon asks about architectural patterns.  Nate talks about ASP.NET MVC with the Spark View Engine.
  • Kevin asks about online payment integration? Was it painful?
  • Nate discusses hosting and scalability.
  • Scott K asks about the brains behind the operation and how her background may have inspired Zen’s UI and overall flow.
  • Kevin asks Nate for any “words of wisdom” for those thinking about launching a startup.
  • Kevin wraps up the show asking Nate about what’s to come with Ninject and Zen.

Zen Coupon Code: KAIZEN 
50% off the first month, last to the end of July.

Show Links:

Download / Listen:

Herding Code 55: Nate Kohari brings Your Moment of Zen

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0055-Nate-Kohari-brings-Your-Moment-of-Zen.mp3]

Show notes compiled by Ben Griswold. Thanks!

Herding Code 54: Rob Conery interviews the Herding Code guys

Let’s keep the party going! In this very special episode of Herding Code, Rob Conery puts Jon, Scott K and Kevin on the spot as he turns the tables and asks his own questions and passes his own judgments. Do you want to know how Herding Code came about? Are you curious how Rob and the guys feel Herding Code differs from the other podcasts? Have you ever wondered how the Herding Code members might map to the cast of The View? All in good fun, Rob derails the show and gives us a behind the scenes look into Herding Code productions.

  • The guys try to explain the value of Twitter to Rob. “Twitter makes me more productive.” “You must cultivate your network.” “It is all about who you follow.” “Twitter is a fishing net.” “I can quit at anytime.”
  • Jon shares how Herding Code started with an inadvertent Skype conversation.
  • Scott K talks about Herding Code’s diverse guest list which doesn’t consist of the usual list of suspects which might be regulars on other shows.
  • The Kevin Dente Roast continues…
  • Rob compares the Herding Code with The View, identifies each cast members role and announces that Herding Code needs to build in the happy hour aspect of podcasting. Have another beer, Rob.
  • Jon talks about cannibalism and attacking oneself.
  • The guys discuss Rob’s new spokesmodel spokesman position at Microsoft, ongoing Kona development and a bit about community outreach.
  • Are you missing K Scott? Tune into this week’s show to find out what he’s doing now. You may be utterly surprised.

Show Links:

Download / Listen:

Herding Code 54: Rob Conery interviews the Herding Code guys

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0054-Rob-Conery-interviews-the-Herding-Code-guys.mp3]

Show notes compiled by Ben Griswold. Thanks!

Herding Code 53: SubSonic 3.0 Release Party with Rob Conery

What? You thought SubSonic was dead! Well, crack open a beer and join the party – the SubSonic 3.0 Release Party!  That’s right. It is finally here and Rob Conery (Herding Code’s first repeat guest) gets a little rowdy announcing the new features.  Listen in as Rob speaks of SubSonic, the new role he’s playing at Microsoft, why he’s given up on Twitter and why Kevin Dente deserves to be roasted.  Does Rob completely derail the show?  Find out this week on Herding Code.

  • Jon kicks off the show asking Rob for some clarity on his job at Microsoft. Rob refuses to answer the question and unveils his plan to completely derail the podcast.  This leads into the first ever Kevin Dente Roast.
  • After things settle down, Rob announces SubSonic 3.0 and the “technical part of the podcast” is initiated.
  • Rob talks to SubSonic details – specifically, ActiveRecord, REST Handler, Linq engine, SimpleRepository, templating system, the use of the iQueryable Toolkit, the new docs site, and auto migrations.
  • “What’s so difficult about building a freakin’ expression parser?”  Rob states that coding is hard and the fact that LINQ leaves him a little afraid. He then speaks a little Mandarin and speaks of going shopping.
  • Jon and Rob have a discussion about the use of ORMs and performance concerns.  Rob states No one ever got fired for using Microsoft and adds a quick comment about SubSonic’s failed acquision of NHibernate
  • Scott K asks what it is like to write your own provider for SubSonic and notes that a SQL Data Service provider would allow one to scale to the cloud.
  • The guys field listener questions from Jeff Atwood (“Why is SQL so awesome?”) and Chip Cray (“How has your view of DDD changed since you started the StoreFront?”)
  • The conversation comes full circle with Jon asking Rob (again) about his job at Microsoft and if he’s paid to work on SubSonic.

Show Links:

Download / Listen:

Herding Code 53: SubSonic 3.0 Release Party with Rob Conery

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0053-SubSonic-3-0-Release-Party-with-Rob-Conery.mp3]

Show notes compiled by Ben Griswold. Thanks!