{"id":180,"date":"2008-08-14T07:44:26","date_gmt":"2008-08-13T19:44:26","guid":{"rendered":"https:\/\/www.deltics.co.nz\/blog\/?p=180"},"modified":"2009-08-07T14:56:08","modified_gmt":"2009-08-07T02:56:08","slug":"latest-tiburon-preview","status":"publish","type":"post","link":"https:\/\/www.deltics.co.nz\/blog\/posts\/180\/","title":{"rendered":"Latest Tibur\u00f3n Preview"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">[Estimated Reading Time: <\/span> <span class=\"rt-time\">3<\/span> <span class=\"rt-label rt-postfix\">minutes]<\/span><\/span><p>I was a little disappointed that the preview webinar this morning was little more than a re-run of the same content from a little over a week ago, albeit with some downloadable PowerPoint slides this time.<\/p>\n<p>It was at least an opportunity for some more Q&amp;A and a couple of interesting Q&#8217;s got A&#8217;d.<br \/>\n<!--more--><\/p>\n<h3>1. Generics Support For Event Types<\/h3>\n<p>In my series of <a href=\"https:\/\/www.deltics.co.nz\/blog\/?tag=multicast-events\" target=\"_blank\">posts on multicast events<\/a> I speculated that if generics support included using event types as parameters then things could be made a little easier. <a href=\"http:\/\/blogs.codegear.com\/davidi\/2008\/08\/12\/38921\/\" target=\"_blank\"> David I<\/a> demonstrated that it does appear to be possible:<\/p>\n<pre class=\"delphi\">  TEventList = TList&lt;TNotifyEvent&gt;;<\/pre>\n<p>So it appears that in a future D2009 revision of my multicast events implementation we should be able to write:<\/p>\n<pre class=\"delphi\">  TMultiCastNotify = TMultiCast&lt;TNotifyEvent&gt;;<\/pre>\n<p>It won&#8217;t, as far as I can tell, eliminate <span style=\"text-decoration: underline;\">all<\/span> the work in deriving a new multicast event class, but it will remove the drudgery of implementing <em>Add()<\/em> and <em>Remove()<\/em> methods, at the very least.<\/p>\n<h3>2. Release Timeframe<\/h3>\n<p>In response to the inevitable questions about when it (Delphi 2009) will be released, the stock response is still &#8220;<em>When it&#8217;s ready<\/em>&#8220;.  The supplemental question &#8220;<em>When will it be ready?<\/em>&#8221; triggered a stack overflow exception:<em><strong><\/strong><\/em><\/p>\n<p><em><strong>Q. When will it be ready?<\/strong><\/em><br \/>\nA. When it&#8217;s ready.<br \/>\n<em><strong>Q. Cool, so when will it be ready?<\/strong><\/em><br \/>\nA. When it&#8217;s ready.<br \/>\netc<\/p>\n<p>\ud83d\ude42<\/p>\n<p>However, it was mentioned that these preview webinars will continue on a weekly basis through to the end of September.  So I think it&#8217;s not unreasonable that we might optimistically hope for an October timeframe for an actual release.<\/p>\n<h3>3. Ribbon is <span style=\"text-decoration: line-through;\">Not<\/span> Entirely VCL Code<\/h3>\n<p>At the previous preview I got the distinct impression that the ribbon control support was entirely CodeGear VCL code.\u00a0 This time around it was mentioned that it is a VCL wrapper around Microsoft code.\u00a0 I&#8217;m not sure that this is particularly important one way or the other, but some people might find it interesting.<\/p>\n<p><em><strong>Update:<\/strong> <a href=\"http:\/\/blogs.codegear.com\/nickhodges\/\" target=\"_blank\">Nick Hodges<\/a> (Delphi Product Manager, so he should know) has clarified that there is in fact no wrapper or Microsoft code involved, only VCL code.<\/em><\/p>\n<p>What was certainly interesting was the indication that if you use the ribbon control in an application then you will need to obtain <a href=\"http:\/\/msdn.microsoft.com\/en-us\/office\/aa973809.aspx\" target=\"_blank\">a ribbon UI license<\/a> from Microsoft to then deploy that application.<\/p>\n<p>This in itself is already controversial and <a href=\"http:\/\/weblogs.asp.net\/fbouma\/archive\/2008\/07\/20\/the-evil-of-the-office-ui-ribbon-license.aspx\" target=\"_blank\">one school of thought<\/a> has it that the license is not only undesirable, but quite possibly unenforceable.<\/p>\n<h3>4. No Generics Enrichments in the VCL<\/h3>\n<p>Apart from the Generics.Collections support, the VCL itself has not been enriched with generics support.\u00a0 I find this surprising.\u00a0 It strikes me that it should have been quite straightforward to enable us to write:<\/p>\n<pre class=\"delphi\">TCustomerComboBox = TComboBox&lt;TCustomer&gt;;<\/pre>\n<p>To create type-safe access to the data associated with the items in a combobox, for example.<\/p>\n<p>It should be relatively easy to create these extensions ourselves, but it would have been nice to have that support built in to the VCL.  Having said that, design-time support would have been a bit difficult I suppose.  i.e. dropping a regular combo-box on a form and then specifying the type of the items data via the property inspector.<\/p>\n<h3>5. Insight Into the Interested Customer Base<\/h3>\n<p>Aside from the information on Tiburon itself, the QA provided an interesting insight into the parts of the community that are actively interested in Delphi 2009.\u00a0 Some of the questions appeared to demonstrate a lack of familiarity with more recent changes in the language, such as support for dotted unit names (<em>Delphi 7<\/em>) and strict private visibility (<em>Delphi 2006<\/em>, I think).<\/p>\n<p>I am not ridiculing the people that asked those questions.\u00a0 Far from it.\u00a0 I think it is positively encouraging that users who &#8211; it would appear &#8211; were perhaps previously &#8220;left behind&#8221; are once again interested in this new version of Delphi.<\/p>\n<p>It reinforces a general impression that I am increasingly forming, that a new spark of life has appeared in the Delphi community.<\/p>\n<p>\ud83d\ude42<\/p>\n<h3>More To Come<\/h3>\n<p>As mentioned, it appears there will be <a href=\"http:\/\/blogs.codegear.com\/davidi\/2008\/08\/12\/38921\/\" target=\"_blank\">more previews to come<\/a>, on a weekly basis.\u00a0 The schedule currently only runs to the end of August, not September, but whether David I misspoke or the full schedule simply isn&#8217;t finalised yet, I don&#8217;t know.<\/p>\n<p>For local visitors, the 11am PDT time slot is 6am the following day in &#8220;Auckland Time&#8221;.<\/p>\n<p>The future is bright.\u00a0 The future is Delphi.<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">[Estimated Reading Time: <\/span> <span class=\"rt-time\">3<\/span> <span class=\"rt-label rt-postfix\">minutes]<\/span><\/span> I was a little disappointed that the preview webinar this morning was little more than a re-run of the same content from a little over a week ago, albeit with some downloadable PowerPoint slides this time. It was at least an opportunity for some more Q&amp;A and a couple of interesting Q&#8217;s got A&#8217;d.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":[]},"categories":[4,7],"tags":[292,21,25,23,293],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1TKYv-2U","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":102,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/102\/","url_meta":{"origin":180,"position":0},"title":"Multicast Events &#8211; Part 2","date":"07 Aug 2008","format":false,"excerpt":"Having covered some of the basic use of multicast events, in this second post I shall start to build the implementation.\u00a0 In this first iteration we will provide the basics of a multicast event - managing and calling multiple handlers and the ability to enable and disable an event. The\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":86,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/86\/","url_meta":{"origin":180,"position":1},"title":"Multicast Events &#8211; Part 1","date":"05 Aug 2008","format":false,"excerpt":"I remember one of the things that got me excited when I first read about the as-then new fangled C# and .NET stuff coming out of Microsoft was the idea that a single event could have multiple handlers. Cutting a long and irrelevant story short, my interest in .NET waned,\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":160,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/160\/","url_meta":{"origin":180,"position":2},"title":"MultiCast Events &#8211; Conclusion","date":"11 Aug 2008","format":false,"excerpt":"Drawing this subject to a close (finally!), here's the concluding post I promised, including the fully documented and finished implementation that has been serving me well for almost 2 years.\u00a0 The finished implementation incorporates a number of refinements to the core framework, and those are what we shall briefly look\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/28\/","url_meta":{"origin":180,"position":3},"title":"Tiburon Preview","date":"02 Aug 2008","format":false,"excerpt":"A roundup of that part of the Preview I saw of Tiburon - the next release of Delphi from CodeGear.","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":178,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/178\/","url_meta":{"origin":180,"position":4},"title":"Tibur\u00f3n &#8211; What&#8217;s In A Name?","date":"13 Aug 2008","format":false,"excerpt":"Providing a little light relief after the rather heavy series of posts on multicast events, a colleague recently asked me what Tibur\u00f3n actually means.\u00a0 So I looked it up. As well as being a town in California, it is also Spanish for shark.\u00a0 I don't know which derivation inspired the\u2026","rel":"","context":"In &quot;General&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":137,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/137\/","url_meta":{"origin":180,"position":5},"title":"Multicast Events &#8211; Part 3","date":"09 Aug 2008","format":false,"excerpt":"So far we've seen a multicast event implementation in (fairly limited) action, and dissected the core of it's implementation, which was a fairly dry affair. I also demonstrated a flaw in the initial implementation - a susceptibility to objects adding handlers to events but not removing them when being destroyed.\u00a0\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/180"}],"collection":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/comments?post=180"}],"version-history":[{"count":9,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/180\/revisions"}],"predecessor-version":[{"id":471,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/180\/revisions\/471"}],"wp:attachment":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/media?parent=180"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/categories?post=180"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/tags?post=180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}