DEV07-IS Developing a Language with the Dynamic Language Runtime – Harry Pierson
Second session with Harry Pierson for me. It is obvious that I find myself more and more interested in dynamic languages. Harry was genuinely surprised to get an almost full interactive session about developing your own language on the DLR. However, I did find that the presentation was more in the direction that I had hoped for. It supplied a little background information about how the DLR and dynamic languages work on .NET and not so much about the specifics of developing your own language (which I don’t think I will).
Notes:
- Even back in .NET 1.0 there was a lot of language building blocks such as a rich meta data infrastructure and dynamic code generation with Emit.
- [ASP.NET and its compilation-on-the-fly-need for aspx files might have been the/a driving force]
- .NET 2.0 brought generics, dynamic method and fast delegates.
- .NET 3.5 brought linq and expression trees.
- Jim Hugunin, the inventor of Jython, set out to write about while the .NET platform was a bad foundation for dynamic languages but after 6 weeks failed and found .NET to be really good
- Bad scenarios for IronPython: exceptions, which are used in Python for more than out-of-the-ordinary errors, are really slow on .NET. (some sort of lightweight exceptions has been discussed?)
- .NET 4 brings dynamic dispatch, expression trees v2 and call site caching.
- DLR also brings Hosting API, expression tree interpreter, lightweight debugger.
- IronPython 2.6 is on the verge to ship.
- Resolver is the largest customer of IronPython.
- DLR is shipped in unusual way, some part of .NET 4 box, but also on Code Plex.
- System.Core is available as open source on Code Plex.
- Ruby and Ruby on Rails took one year to port to the DLR platform – evidence of efficiency in using the platform.
- Expression trees v2 brings: Linq + Assignment + Control flow + Dynamic dispatch (=DLR expression trees).
- LamdaCompiler takes expression tree and returns delegate for the compiled code.
- CallSite<T> polymorphic inline cache
- Dino lead dev on team
- IronPython generates only one .NET class under the hood, unless if you derive from .NET classes/interfaces.
- DLR Meta object protocol, MetaObject, GetMetaObject, Invoke MemberBinder.
- CallSiteBinder.Update calls into DLR MetaObject binder, that calls into LanguageBinder which by default talks to CLR metadata reflection.
Final verdict: this session was good.
WIA303 Microsoft ASP.NET AJAX: Taking AJAX to the Next Level – Stephen Walther
A session in a somewhat slower tempo, but still with good solid information. Stephen feels more like an educator, used to describing content to students, even though I don’t think he does that – probably just has personality (in all good ways).
And the notes:
- New areas: CDN (Content Delivery Network), Tools, Library
- Improve performance by refering to Microsoft CDN for your jquery library.
- Jquery-ui not available, but investigated.
- <ScriptManager EnableCdn=”True”>
- Tool: Microsoft Ajax Minifier – everyone should run a minifier.
- Supports normal minification and also hypercrunching, meaning also changing names etc.
- Can be run as command line or MSBuild task or component.
- Library is delivered out-of-band, meaning not synced with .NET 4.0.
- Open source aspect is rapidly evolving [taking contributions?]
- “We pride ourselves in providing good client data access from javascript.”
- Client Data Context
- Client Templates
- Client Data Binding
- {{ can contain javascript }}
- sys:src attribute on img-tag worries some people.
- VS2010 supports intellisense with CDN hosted files.
- start.js is the kick-off for the library.
- Library can use jquery selector as argument.
- Sys.bind, Sys.get, Sys.require
- [Maybe more features/connection should be by convention and not declaratively or in code?]
- When asking audience about who uses ADO.NET Data Services, only one raised his hand.
- Data tracking in binding is great.
- [But I want an event to hook up to, also. Is there an event system here also?]
- Client Script Loader
- All Microsoft Ajax Library controls are exposed as jquery plugins.
- JQuery plugins show up in intellisense.
Final verdict: this session was good.
BOF14 Microsoft SharePoint, jQuery and Microsoft Silverlight: Better Together – Jan Tielens
Full speed forward with demos during 40 minutes. Very good presentation by Jan Tielens from u2u – an education company in Belgium. Very interesting “injection” way of building user interfaces on top of SharePoint with jQuery and Silverlight. I assume using web services of the current site/list displayed, although he didn’t show any code.
A new notes jotted down during the demos:
- ContentEditorWebPart used for adding html with script
- $(document).ready(function() { }); – jquery for onload
- AdditionalPageHead delegate (delegate control in a feature).
- MasterPage for adding html with script.
- Site Page in uploaded aspx-file in document library.
- Only running javascript when installing (no server code); uploading js-files etc.
- Found in SmartTools JQuery Loader on Code Plex.
- Task notifications.
- Jquery Sparklines for clock.
- Extended Edit Control Block for menu items in a context menu.
- Client side object model for JavaScript in SharePoint 2010.
- Silverlight is .xap files – uploaded to document library.
- SPTubePlayer silverlight sample for videos found in a document library, read by the player.
- SL.Visifire.Charts.xap beautiful charts in Silverlight with data from SharePoint.
Final verdict: this session was great!
ARC308 Credit Crunch Code: Time to Pay Back the Technical Debt – Gary Short
Should be nice to get some architectural advice. I’ve been around long enough in this business, listening to architectural talks, that it is hard to come up with something really new and earth-shattering (impossible?). Given that fact, Gary delivers a solid reflection on how to use numbers and economics to find bad parts in your projects and have the businesses understand and act on them [my interpretation of what Gary said].
Final verdict: this session was ok.
DEV03-IS Using Microsoft Visual C# 4.0 and Visual Basic 2010 Interop Features with Microsoft Silverlight, Office and Python – Alex Turner
Alex Turner is the program manager for the C# compiler at Microsoft. He demonstrated new features in C# that has more or less existed previously in Visual Basic. It is about writing prettier and more succinct code when calling out to other object models, specifically dynamic languages like JavaScript or Python and COM interop. Nice info, but the session finished early because there was not that much content to talk about. Good things nonetheless.
Basically, the C# compiler will know a few things about COM, specifically againt Office Interop, and do some magic so we don’t have to write so much code anymore.
Disparate notes:
- Silverlight scenario calling out to hosting page.
- ScriptObject, win.CreateInstance remains, can’t create type other way from other technology domain.
- Browser specific issues (Firefox) stopped Silverlight from caring about removing properties.
- Dynamic interop using Word = Microsoft.Office.Interop.Word.
- Intellisense in brackets, argument is optional.
- Bad typing in Office objet models works i VB because it doesn’t care as much about types, but is troublesome in C# and now works better with dynamic keyword.
- Keyword dynamic – better than object, and returned from Com Interop.
- dynamic xl = new Excel.App();
- xl.Cells[1, 1] = “x”;
- xl.Range["A1", "C4"].Copy();
- Fills in vtMissing automatically.
- word.Selection.PasteSpecial(Link: true); – named parameters.
- IronPython 2.6 CTP Beta 2 now available.
- IronPything.Hosting, Microsoft.Scripting.Hosting
- Python.CreateRuntime, py.UseFile(“myfile.py”)
- CallSite: DLR has cached the delegate, next time the binding is in place
- Natural interop with diverse object models.
- DynamicDispatch.
- No colourization when working with dynamic, expect 3rd parties to pick it up since code model is in VSIP.
Final verdict: this session was ok.
OFS321 Building Powerful Business Intelligence Solutions on the SharePoint 2010 Platform – Zlatan Dzinic
Oops. Wrong session for me. Don’t know how I ended up here, but this was really boring stuff and the demos didn’t go that well for Zlatan either. Excel Services, Performance Point Server, and now there is PowerPivot. Not my cup of tea. Unfortunately, the whole concept of BI on SharePoint felt very messy and unfocused.
Zlatan reminds me of sales guy that doesn’t have a clue about what he is talking about and overtries to communication passion where there is none. However, I do have a suspicion that Zlatan knows much more than he is able to communicate and that the passion is real and not as fake as it comes across.
Final verdict: this was a complete waste of time (for me, at least)!