Herding Code 62: MonoTouch with Miguel de Icaza and Geoff Norton

In this episode of Herding Code, Jon and Scott Koon pair up with Miguel de Icaza and Geoff Norton of the Mono Project and discuss MonoTouch:

  • Jon asks Geoff Norton, engineering lead on the MonoTouch project and founder of the Cocoa# and Objective-C# projects, to give the elevator speech about MonoTouch and why one might choose it over other iPhone development tools.  Geoff explains that MonoTouch is a commercial product from Novell. They have ported the Mono runtime to run on the iPhone thus allowing developers to write full native iPhone applications in languages which target the CLR.  Some might be attracted to MonoTouch because they feel C#, for example, is fluent and expressive compared to Objective-C.  Others might use the product so they can reuse existing components or code when moving to iPhone development.
  • Miguel shares that there is a strong pattern in Objective-C where you respond to objects through messaging between classes.  In the .NET space, you are most familiar with listening to events with attached methods such as lambda expression or delegates and MonoTouch uses this programming model and expose Cocoa API to be similar to the way C# does things. For example, the use of events, properties, delegates.  He continues by stating you also have access to .NET APIs in addition to all iPhone APIs.
  • Scott K asks if there are any disconnects with which .NET APIs are available. Geoff shares that MonoTouch is not the entire .NET 2.0 BCL.  In fact, development was started with the Silverlight BCL and additional namespaces were included as development proceeded. 
  • Geoff mentioned Silverlight. Jon’s Pavlovian Trigger is fired, he starts to drool and programmatically inquires about the potential of running Silverlight applications on the iPhone (even though, as Jon mentions, Apple is currently disallowing it.  Miguel speaks to the MonoTouch’s use of the Silverlight profile drops unnecessary dependencies upon the .NET framework thus providing for a leaner precompilation.  Geoff talks about what would be required to getting Silverlight on the iPhone.  Miguel states that Silverlight on the iPhone would not be a standard Silverlight experience.  Most notably, one would have to go through the AppStore and download a Silverlight enabled application rather than access a Silverlight application through the browser.
  • Jon asks about the cost associated with developing iPhone applications with MonoTouch. Miguel shares that Mono and Moonlight were basically developed to improve the Linux ecosystem.  As for Mono for the iPhone, it was difficult for Novell to justify the investment for this highly desired feature request so they decided to charge for it. Geoff notes they have a 100% free, non-time limited evaluation version which works with the simulator. It’s only limitation is you can’t get your application onto the device. Please note that you get a $150 discount on MonoTouch if you register for MonoSpace.
  • Jon asks Geoff for an overview on how to get started with MonoTouch development. Geoff provides the high-level steps – get the iPhone SDK from Apple, pay Apple $99 to become registered iPhone developer, load up Mono Develop, create a new iPhone project from template, start typing C# code, you will be using Interface Builder for layout, build and run.
  • Scott K  calls out how Interface Builder traditionally integrates with XCode.  Geoff comments about Interface Builder with C# and the generation partial classes as code behinds which automatically connects outlets to MonoTouch engine.  Miguel speaks to the advantages of the MonoTouch approach.
  • The guys talks about XIB (pronounced zib) and NIB files and freeze drying.
  • Scott K shares listener questions from @hugeonion: Is there is anything that you can’t do using MonoTouch.NET that you could using Objective-C?  Can you mix Objective-C and .NET when you are writing a MonoTouch project?  Geoff gives the liberal-minded answer and then Miguel finishes with the short answer — “There’s really nothing that you can’t do with MonoTouch that you can do with Objective-C". “I guess you could argue it’s a Turing machine so you can do anything on anything.”
  • Scott K asks another listener question from @shamel: What are the plans to improve the MonoTouch debugging story?  Miguel says the debugger will be available faster than you might think.  It’s coming but the decision was made to push to product out sooner than waiting for MonoTouch (and debugging, profilers, code-generator, more APIs) to be perfect. Geoff talks about the updated compiler and the ability to back-trace crashes using DWARF, the standard debugging format which Apple uses.
  • Jon and Geoff talk about graphics , MonoTouch development on a Power PC Mac and static compilation. Miguel talks about coding on paper (desk checking.)
  • Jon distills MonoTouch development down to two steps: binding to the iPhone APIs and then doing the static compilation to run on the iPhone.  Geoff speaks of support for generics, Cocoa#, Objective-C#, Monobjc and binding the CLR to Objective C. 
  • Scott K asks if they’ll be moving Mono onto the Android. Miguel speaks of Android, Java, managed language, garbage collection, native compilation, current demand and their current focus being Mono for the iPhone. Jon asks if there’s a story for Mono support on Windows Mobile.  After all Windows Mobile does run the .NET compact framework. Jokes and laugh follow…
  • Jon, Miguel and Geoff talk about MonoTouch iPhone application size.
  • Miguel talks about embracing cross platform and getting Windows developers working on Mac – and looking cool at Starbucks.
  • The guys discuss XNA for Silverlight, XNA game developer studio, XNA hosting on iPhone or the fact that you can’t distribution XNA games to the Zune. They also touch upon Mono running on the WII and PS2.
  • Geoff and Miguel finish up the conversation comments about the MonoSpace, the Open Source and Cross-Platform Conference for Mono and .NET which will be held in Austin this October 27-30.

Show Links:

Quote of the Show:

  • “Do your HTTP Get and parse the result like a man!” – Miguel

Download / Listen:

Herding Code 62 – MonoTouch with Miguel de Icaza and Geoff Norton

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0062-MonoTouch-with-Miguel-de-Icaza-and-Geoff-Norton.mp3]

Show notes compiled by Ben Griswold. Thanks!

Herding Code 61: CodePlex Foundation, Bing Visual Search, Microsoft Ajax CDN, Zune HD Release

This episode of Herding Code is a roundtable discussion which includes the entire cast. The guys dedicate the majority of the show to the CodePlex Foundation – what the foundation provides, speculation on what the foundation might accomplished, and how success should be measured.  The guys also offer a glowing review of Bing Visual Search, they dig into the Microsoft Ajax CDN, and give their opinions of the recent Zune HD Release.

Show Links:

Download / Listen:

Herding Code 61: CodePlex Foundation, Bing Visual Search, Microsoft Ajax CDN, Zune HD Release

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0061-CodePlex-Foundation.mp3]

Show notes compiled by Ben Griswold. Thanks!

Herding Code 60: Spark View Engine with Louis DeJardin

In this episode of the Herding Code Podcast, the guys talk to Louis DeJardin about the Spark View Engine.

  • Louis talks about how the Spark View Engine was inspired by NVelocity and hatched from a comment thread on Phil Haack’s blog.
  • Kevin asks about the HTML-like syntax syntax in a Spark view – how it was designed, how it looks, and some of the benefits of a view engine that looks like HTML.
  • Scott K asks about some of the similarities to Cold Fusion markup. After making Louis squirm a bit, Scott points out the big difference in his eyes is that Spark works as part of an MVC pattern, while Cold Fusion embedded too much logic in the markup.
  • Jon sets Kevin up to look really good by asking about a feature Kevin requested – safe by default HTML encoding.
  • Kevin asks about how Spark’s strongly typed ViewData and strongly typed models work.
  • Jon quizzes Louis about how Master Layouts differ from ASP.NET Webforms MasterPages, Kevin tries to stump him with questions about partial page caching.
  • Scott K and Louis talk about how Spark was developed, and how TDD made writing a view engine easy.
  • Kevin and Louis discuss how Spark is being used to generate more than HTML.
  • Jon asks about how he got all the smarts to write a parser / templating engine.
  • Scott K speculates about the potential for a custom view engine enabling vendors to offer controls for MVC. Louis tells him that he’s crazy, and the two discuss options for visual designers in the MVC world.
  • Jon asks some questions about how an HTML-based syntax like Spark could allow for a better designer surface, but Louis convinces him that an HTML-based syntax is probably the best design interface, both for developers and designers.
  • Kevin asks Louis about the Visual Studio integration for Spark.
  • Louis takes a listener question from Jeremy Miller about caching compiled views.
  • K Scott asks about using Spark’s JavascriptViewResult to do JSON powered updates with the same template for both initial and update rendering. Louis points out that it’s possible to write code that’s both c# and Javascript compatible, so it can be used both client-side and server-side. We all agree that’s crazy, but the right kind of crazy.
  • K Scott asks about his selection of different tracking, source hosting, etc. services for the Spark project.
  • Vladislav II asks about Dynamic Language support.
  • Lt. Col. George Armstrong Custer asks about runtime vs. development time compilation, and how Spark runs under medium trust.
  • Louis explains how Macros allow you to simulate creating reusable helpers inside your templates.
  • Faustus of Byzantium asked about partials are integrated into views.
  • Edward I asks about how performance compares to the Web Forms view engine, and if there are any important tips/tricks to get the best performance out of Spark.
  • Ned Ryerson remembers talking to Louis at PDC, when Louis was pitching Spark to Jeff Atwood The Terrible. Jeff went with the Web Forms view engine which led to his eventual demise in 2012.
  • Duke Konrad I of Masovia asks Louis about the use of multiple view engines in a website to ease transition.
  • Kevin closes with some questions about Spark, such as how it plays with ASP.NET MVC 2 and where the name Spark came from.
  • Postscript – Jon catches up with Louis to ask about his new position at Microsoft.

Show Links:

Download / Listen:

Herding Code 60: Spark View Engine with Louis DeJardin

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0060-Spark-View-Engine-with-Louis-DeJardin.mp3]

Herding Code 59: Web Standards with Milan Negovan

In this episode of the Herding Code Podcast, the guys sit down with Milan Negovan of ASP.NET Resources to discuss web standards, usability and accessibility.  Milan also shares his opinions on the onslaught of new technologies coming out of Redmond, why developers should avoid big conferences, the benefits of independent consulting, the motivation of Microsoft MVP Program and his impressions of ALT.NET.

  • The show kicks off with Milan’s explanation of semantic markup – thinking first about content and then presentation – and the Web Standards Trinity which includes Structure (HTML, XHTML, XML), Presentation (CSS), and Behavior (JavaScript). 
  • Milan talks about Quirks Mode vs Strict Mode. Jon asks about the benefits of XHTML especially with XHTML 2 recently being shot down in favor of HTML 5. 
  • Milan states that CSS has always been more of a recommendation rather than a true standard.  He asks why anyone would use skins and/or themes. Jon bites and guesses because it is a typical Visual Studio control-first option and themes (unlike cascading style sheets) are always applied last and may enforce corporate design standards. Milan also shares his frustration with the bloated, non-standard markup generated by ASP.NET Server Controls and he names names.  That’s right, DataGrid!  He’s talking about you.
  • Milan provides an overview of his impressive Microsoft.com redesign experiment and speaks briefly of Section 508 and his Color Blindness Simulator.
  • K Scott asks what a .NET developer should do to better adhere to web standards. Milan talks specifically about control development, ASP.NET MVC and the shift back to client-side development.
  • Milan speaks his mind about Silverlight’s poor usability.  He states Silverlight is being marketed to the wrong audience and it is not a replacement for JavaScript. Milan also calls out the educational gap for developers needing to act as designers. Shall I continue?  Jon agrees but provides a rebuttal. 
  • K Scott seeks Milan’s opinion on new technologies, big conferences, independent consulting, the Microsoft MVP Program and ALT.NET.  Milan shares that you’ll go insane if you try to learn everything which is coming out of Redmond and suggests that developers specialize.  Milan describes big conferences as nothing more than “booze and noise” and recommends developers avoid conferences like Mix and participate in the local community instead.  Milan talks about life as a business owner/independent consultant, job security and building one’s personal brand. Milan questions the motivation of the Microsoft MVP program and suggests it is merely another marketing channel for Microsoft.  Milan shares his positive impressions of ALT.NET and comments on the “remarkable crap” published by Patterns and Practices.  Scott K calls Milan out for being too much of a kiss-up marketing shill. Fin.

Show Links:

Book Recommendations from Milan

Download / Listen:

Herding Code 59: Web Standards with Milan Negovan

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0059-Web-Standards-with-Milan-Negovan.mp3]

Show notes compiled by Ben Griswold. Thanks!

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

How about that?  You stuck around!  It was the Waylon Jennings, Good Ol’ Boys, Dukes of Hazzard, freeze frame cliffhanger at the end of Part 1 which hooked you, wasn’t it?  Undoubtedly you have been on the edge of your seat for days, just waiting to see how the show turns out.  Well, wait no further.  Here’s the commercial free, dramatic conclusion to the longest Presentation Patterns discussion ever.

When we last left our heroes, Jeremy Miller, Ward Bell, Rob Eisenberg and Glenn Block were in the thick of their discussion.  Jeremy had just finished explaining the role of the Screen Conductor and Ward was ready to start flushing out implementation strategies.  That is, implementation strategies which might work across most solutions. 

But thankfully, Glenn starts by stepping back a bit and asking how the presentation patterns discussion fits in the context of mainstream development.

Will the guys provide a single answer to the age-old question, “Which came first the View or the ViewModel?”  Is there a one size implementation which fits all solutions?  Will this conversation ever end?  Find out this week on Herding Code.

Show Links:

Download / Listen:

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

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

Show notes compiled by Ben Griswold. Thanks!