<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Grammarware, Haskellware, XMLware</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/ralflammel/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/ralflammel/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:25:29 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Haskell as the Weapon of Math Distraction</title>
      <link>https://docs.microsoft.com/archive/blogs/ralflammel/haskell-as-the-weapon-of-math-distraction</link>
      <pubDate>Wed, 23 Dec 2009 14:27:00 GMT</pubDate>
      <dc:creator><![CDATA[RalfLammel]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ralflammel/2009/12/23/haskell-as-the-weapon-of-math-distraction/</guid>
      <description><![CDATA[I have shown, in this YouTube video, that spell checking equals type checking.I know it's pretty...]]></description>
      <content:encoded><![CDATA[<p>I have shown, in this<a href="https://www.youtube.com/watch?v=eKVxlHG6Jrw" mce_href="https://www.youtube.com/watch?v=eKVxlHG6Jrw"> YouTube video</a>, that spell checking equals type checking.</p><p>I know it's pretty obvious but the encoding may be wort mentioning.</p><p>In fact, this is <span style="font-weight: bold; font-style: italic;">not</span> a serious post--it's an Xmas gift.</p><p>Enjoy and Merry Xmas + Happy New Year. <br></p><p>Ralf </p><p>PS: More background on this "contribution to image processing" can be found here: </p><p><a href="https://userpages.uni-koblenz.de/%7Elaemmel/bildverarbeitung/" mce_href="https://userpages.uni-koblenz.de/~laemmel/bildverarbeitung/">https://userpages.uni-koblenz.de/~laemmel/bildverarbeitung/</a> <br></p>]]></content:encoded>
    </item>
    <item>
      <title>New, more personal blog</title>
      <link>https://docs.microsoft.com/archive/blogs/ralflammel/new-more-personal-blog</link>
      <pubDate>Tue, 25 Aug 2009 08:53:00 GMT</pubDate>
      <dc:creator><![CDATA[RalfLammel]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ralflammel/2009/08/25/new-more-personal-blog/</guid>
      <description><![CDATA[You can meet me here,...]]></description>
      <content:encoded><![CDATA[<p>You can meet me here, too:</p><p><a href="https://professor-fish.blogspot.com/2009/08/same-guy-as-grammarware-haskellware.html" title="https://professor-fish.blogspot.com/2009/08/same-guy-as-grammarware-haskellware.html" mce_href="https://professor-fish.blogspot.com/2009/08/same-guy-as-grammarware-haskellware.html">https://professor-fish.blogspot.com/2009/08/same-guy-as-grammarware-haskellware.html</a></p><p>Regards,</p><p>Ralf</p><p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>API migration alive and kicking strongly</title>
      <link>https://docs.microsoft.com/archive/blogs/ralflammel/api-migration-alive-and-kicking-strongly</link>
      <pubDate>Sat, 18 Jul 2009 19:21:00 GMT</pubDate>
      <dc:creator><![CDATA[RalfLammel]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ralflammel/2009/07/18/api-migration-alive-and-kicking-strongly/</guid>
      <description><![CDATA[I have been talking about API migration a lot lately.

I have even a draft paper in limbo ... so...]]></description>
      <content:encoded><![CDATA[
<p>I have been <b>talking</b> about API migration a lot lately.</p>

<p>I have even a draft paper in limbo ... <i>so much</i> in limbo that I don't even link to it here.</p>

<p>In fact, I admit that it is very difficult to get anything done scientifically and practically on this topic.</p>

<p>&nbsp;</p>

<p>Thanks to some recent collaboration, there are some cool results and a new draft paper.</p>

<p>Feedback very much appreciated.</p>

<p>&nbsp;</p>

<p>Regards,</p>

<p>Ralf</p>

<p>&nbsp;</p>

<p><a href="https://www.uni-koblenz.de/%7Elaemmel/xomjdom/" title="https://www.uni-koblenz.de/~laemmel/xomjdom/" mce_href="https://www.uni-koblenz.de/~laemmel/xomjdom/">https://www.uni-koblenz.de/~laemmel/xomjdom/</a> </p>

<h3>Transcript of an API migration for two XML APIs</h3>
<dl>
<dt><b> Status </b>
</dt><dd>
<ul>
<li> Paper submitted for publication
  </li>

<li> Wrapper implementation uploaded</li>
</ul>

</dd><dt>&nbsp;</dt><dt><b>Authors</b>
</dt><dd> Thiago Tonelli Bartolomei and Krzysztof Czarnecki and Ralf Lämmel and Tijs van der Storm
</dd><dd>&nbsp;</dd><dt><b>Abstract</b>
</dt><dd>
  API migration refers to the problem of adapting an application such
  that the usage of a given API (the source API) is replaced by the
  usage of an alternative API (the target API) serving the same
  domain. One may attempt to automate API migration by wrapping or
  some form of (source- or byte-) code transformation. API migration
  is relatively well understood for the special case where source and
  target APIs are essentially different versions of the same API. API
  migration is much less understood for the more general case where
  source API and target API have been developed more or less
  independently of each other. The present paper exercises a simple
  instance of the general case and develops engineering techniques
  towards the mastery of API migration. That is, a wrapper-based
  migration between two prominent XML APIs for the Java platform is
  studied where the various differences between the chosen APIs are
  identified, classified and counted in a systematic manner.
  
<p>
  <!--
<DT><B>Keywords</B>
<DD>
T.B.D.

<P>
-->
  
</p>
</dd></dl>]]></content:encoded>
    </item>
    <item>
      <title>SYB goes Prolog</title>
      <link>https://docs.microsoft.com/archive/blogs/ralflammel/syb-goes-prolog</link>
      <pubDate>Tue, 30 Jun 2009 17:52:00 GMT</pubDate>
      <dc:creator><![CDATA[RalfLammel]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ralflammel/2009/06/30/syb-goes-prolog/</guid>
      <description><![CDATA[I am about to finish a short article on SYB in Prolog.Deadline seems to be in 30 hours from now.If...]]></description>
      <content:encoded><![CDATA[<p>I am about to finish a short article on SYB in Prolog.</p><p>Deadline seems to be in 30 hours from now.</p><p>If anyone has suggestions, I'd appreciate it.</p><p>Thanks,</p><p>Ralf</p><p><a href="https://www.uni-koblenz.de/%7Elaemmel/OdeToProlog/" title="https://www.uni-koblenz.de/~laemmel/OdeToProlog/" mce_href="https://www.uni-koblenz.de/~laemmel/OdeToProlog/">https://www.uni-koblenz.de/~laemmel/OdeToProlog/</a></p><p>&nbsp;</p><h1>Scrap Your Boilerplate---Prologically!</h1>

<dl><dt><b> Status (30 June 2009) </b>
</dt><dd>
  Paper available in draft form.
  <br>
  Code distribution not yet available online.
<p>&nbsp;</p></dd><dt><b>Author(s)</b>
</dt><dd> Ralf Lämmel
<p>&nbsp;</p></dd><dt><b>Abstract</b>
</dt><dd>
  
  ``Scrap Your Boilerplate'' (SYB) is an established style of generic
  functional programming. The present paper reconstructs SYB within
  the Prolog language with the help of the univ operator and
  higher-order logic programming techniques. We pay attention to the
  particularities of Prolog. For instance, we deal with traversal of
  non-ground terms. We also develop an alternative model of SYB-like
  traversal based on metaprogramming. This generative, type-driven
  model is also amenable to type-driven optimization.
  
  <p>&nbsp;</p></dd><dt><b>Keywords</b>
</dt><dd>
Scrap Your Boilerplate, Haskell, Prolog, Stratego.  
  <p>&nbsp;</p></dd><dt><b> Bibtex entry </b>
</dt><dd>
<pre>@inproceedings{OdeToProlog,<br> author = "Ralf L{\"a}mmel",<br> title = "{Scrap Your Boilerplate---Prologically!}",<br> booktitle = "Proceedings of the 11th ACM SIGPLAN international conference on Principles and practice of declarative programming",<br> publisher = ACM,<br> year = 2009,<br> note = "6 pages"<br>}<br></pre>
<p>&nbsp;</p></dd><dt><b>Downloads</b>
</dt><dd>
<ul><li> Draft paper: <a href="https://www.uni-koblenz.de/%7Elaemmel/OdeToProlog/paper.pdf">[.pdf]</a>
</li></ul>



</dd></dl>

<br>]]></content:encoded>
    </item>
    <item>
      <title>retweewter</title>
      <link>https://docs.microsoft.com/archive/blogs/ralflammel/retweewter</link>
      <pubDate>Mon, 08 Jun 2009 14:02:00 GMT</pubDate>
      <dc:creator><![CDATA[RalfLammel]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ralflammel/2009/06/08/retweewter/</guid>
      <description><![CDATA[retweewter V1 (C) 2009 Ralf Laemmel READMEWhat is that retweewter?retweewter is a Twitter...]]></description>
      <content:encoded><![CDATA[<p>retweewter V1 (C) 2009 Ralf Laemmel <br><br>README<br><br>What is that retweewter?<br><br>retweewter is a Twitter application. It is a toy application. It's<br>absolutely useless, equally redundant and nearly dysfunctional, but it<br>is fun doing this sort of code and app, and the author will keep it<br>alive for some time (such as mins to days) until he lacks further<br>interest or faces the outburst of unsatisfied users.<br><br>retweewter runs (or could run) continuously to retweet certain search<br>results to a designated user. The relevant tweets are identified by<br>(hashed) search strings. With retweewter, some community can agree on<br>a specific tag to be used throughout their messages and thereby<br>trigger those tweets to be aggregated on an designated twitter<br>account.<br><br>If this readme is up-to-date, then it is true that the author of<br>retweewter actually runs one installation of the app that can serve a<br>number of communities as described above. If you like to be covered by<br>that server (without any warranty and liability on the author's site),<br>please send the "input" as described below.<br><br><br>What input is needed for setting up retweewter (retweeting) for you?<br><br>&nbsp;- user: the Twitter user to whom retweets go as updates<br>&nbsp;- password: the password of the user (needed by the app clearly)<br>&nbsp;- tag: search string (the heading "#" is added if it's not there)<br><br>See the FAQ for ways of submitting that information.<br>(See contacting the author.)<br><br><br>How should I think of retweewter's behavior?<br><br>&nbsp;- retweewter only checks every few minutes or so for new<br>&nbsp;&nbsp; tweets. (Most of the time retweewter is sleeping.) It depends on<br>&nbsp;&nbsp; the search function of Twitter to find tweets that involve the hash<br>&nbsp;&nbsp; string. Because of that, there may be some additional delay.<br>&nbsp;&nbsp; Use some proper software instead of retweewter if you can't wait.<br><br>&nbsp;- retweewter uses the Twitter API in a manner that it only looks at a<br>&nbsp;&nbsp; small window of tweets. The current version does not use any paging<br>&nbsp;&nbsp; and database support. The way retweewter is configured it could<br>&nbsp;&nbsp; miss tweets if there are many (say 10, perhaps even less) within<br>&nbsp;&nbsp; the turn around cycle of retweewter. That's entirely your problem.<br><br>&nbsp;- retweewter tries to identify retweets that are no longer<br>&nbsp;&nbsp; appropriate because the underlying tweet (from which the RT was<br>&nbsp;&nbsp; generated) is gone. This feature is pretty experimental. It is<br>&nbsp;&nbsp; entirely possible that the windowing approach of retweewter causes<br>&nbsp;&nbsp; false positives and negatives. In fact, this whole deletion<br>&nbsp;&nbsp; business made the experiment somehwat interesting.<br><br><br>More Frequently Asked Questions<br><br>&nbsp;- Is retweewter free software or what? You are free to try using<br>&nbsp;&nbsp; it. You are not supposed to pay me anything or anyone for this app.<br>&nbsp;&nbsp; I might eventually publish the sources, and if so, the software is<br>&nbsp;&nbsp; even more free.<br><br>&nbsp;- Is retweewter developed in Haskell or what? It should have been<br>&nbsp;&nbsp; clearly! The only reason that it was done in Java is that I am<br>&nbsp;&nbsp; using Twitter programming in my Java-based advanced programming<br>&nbsp;&nbsp; class and those students are clever enough to tell Haskell by the<br>&nbsp;&nbsp; file extensions of the programs.<br><br>&nbsp;- How can I contact the author of retweewter and stay in touch with<br>&nbsp;&nbsp; the irrelevant details of retweewter's future? You can use the tag<br>&nbsp;&nbsp; #retweewter in order to be retweeted to @retweewter, or you reply<br>&nbsp;&nbsp; to @retweewter, and you may as well follow @retweewter. You can as<br>&nbsp;&nbsp; well bother the author directly -- this is @notquiteabba.<br><br>&nbsp;- Can't you think of a more convenient way for registering with<br>&nbsp;&nbsp; retweewter? Sure I can, but this application isn't serious at all.<br>&nbsp;&nbsp; If I end up getting users, I need to work on scalability -- for<br>&nbsp;&nbsp; which I simply don't have time. However, I might add a<br>&nbsp;&nbsp; twitter-based subscription feature anyway. More likely, I will<br>&nbsp;&nbsp; discontinue retweewter very soon.<br><br><br>Thanks,<br>Ralf Laemmel<br><br></p>]]></content:encoded>
    </item>
    <item>
      <title>Transformer goes Braga/Portugal: 06-11 July -- GTTSE 2009</title>
      <link>https://docs.microsoft.com/archive/blogs/ralflammel/transformer-goes-bragaportugal-06-11-july-gttse-2009</link>
      <pubDate>Sun, 31 May 2009 07:28:00 GMT</pubDate>
      <dc:creator><![CDATA[RalfLammel]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ralflammel/2009/05/31/transformer-goes-bragaportugal-06-11-july-gttse-2009/</guid>
      <description><![CDATA[So we are looking forward 8 "long" tutorials on different parts of the transformation/generation...]]></description>
      <content:encoded><![CDATA[<p>So we are looking forward <span style="font-weight: bold;">8 "long" tutorials on different parts of the transformation/generation space of software engineering</span>. For example, Bran Selic will stand in for model-based engineering and Jim Cordy will sketch his ultimate TXL cookbook. See the full program below. In addition, we will host a <span style="font-weight: bold;">"research 2.0"</span> event with Jean-Marie Favre and his companion Denis Avrilionis of One Tree Technologies as the moderators or speakers. Yet in addition, there are <span style="font-weight: bold;">another 6 short tutorials</span>. We are also in the process of putting together a participants' workshop. Combined with the social program, this will be a packed week as in previous years.</p><p>At this point, we have 80+ registered participants. <br></p><p>REGISTRATION DEADLINE:<br>
June 7<br></p><p>The Call for Participation follows.</p><p>Regards,</p><p>Ralf</p><p>&nbsp;</p><p>GTTSE 2009, 06-11 July, 2009, Braga, Portugal<br><br>3rd International Summer School on<br>Generative and Transformational Techniques in Software Engineering<br><br>https://gttse.wikidot.com/<br><br></p><p>REGISTRATION DEADLINE:<br>

June 7<br>
</p><p><br>SCOPE AND FORMAT<br><br>The summer school brings together PhD students, lecturers, technology<br>presenters, as well as other researchers and practitioners who are<br>interested in the generation and the transformation of programs, data,<br>models, meta-models, and documentation. This concerns many areas of<br>software engineering: software reverse and re-engineering,<br>model-driven approaches, automated software engineering, generic<br>language technology, to name a few. These areas differ with regard to<br>the specific sorts of meta-models (or grammars, schemas, formats etc.)<br>that underlie the involved artifacts, and with regard to the specific<br>techniques that are employed for the generation and the transformation<br>of the artifacts.&nbsp; The tutorials are given by renowned representatives<br>of complementary approaches and problem domains. Each tutorial<br>combines foundations, methods, examples, and tool support. The program<br>of the summer school also features invited technology presentations,<br>which present setups for generative and transformational<br>techniques. These presentations complement each other in terms of the<br>chosen application domains, case studies, and the underlying<br>concepts. The program of the school also features a participants<br>workshop. All summer school material will be collected in proceedings<br>that are handed out to the participants. Formal proceedings will be<br>compiled after the summer school, where all contributions are<br>subjected to additional reviewing.<br><br>The formal proceedings of the previous two instances of the summer<br>school (2005 and 2007) were published as volumes 4143 and 5235 in the<br>Lecture Notes in Computer Science series of Springer-Verlag.<br><br><br>TUTORIALS<br><br>&nbsp;&nbsp; * Software Product Line Refactoring<br>&nbsp;&nbsp;&nbsp;&nbsp; Paulo Borba, Univ. Federal de Pernambuco, Recife, Brazil<br><br>&nbsp;&nbsp; * The TXL Source Transformation Cookbook<br>&nbsp;&nbsp;&nbsp;&nbsp; James R. Cordy, Queen's University, Kingston, Canada<br><br>&nbsp;&nbsp; * Chasing Diagrams in the Mapping Forests of Model Transformations<br>&nbsp;&nbsp;&nbsp;&nbsp; Zinovy Diskin, Univ. of Waterloo and Univ. of Toronto, Canada<br><br>&nbsp;&nbsp; * Generating Language Tools with JastAdd<br>&nbsp;&nbsp;&nbsp;&nbsp; Görel Hedin, Lund Institute of Technology, Sweden.<br><br>&nbsp;&nbsp; * Model Driven Language Engineering with Kermeta<br>&nbsp;&nbsp;&nbsp;&nbsp; Jean-Marc Jézéquel, IRISA, Rennes, France<br><br>&nbsp;&nbsp; * Rascal: Meta-programming Made Easy<br>&nbsp;&nbsp;&nbsp;&nbsp; Paul Klint, CWI and Universiteit van Amsterdam, Netherlands<br><br>&nbsp;&nbsp; * Sourcerer: Slicing and Dicing Large Amounts of Open Source Code<br>&nbsp;&nbsp;&nbsp;&nbsp; Cristina Videira Lopes, University of California, Irvine, USA<br><br>&nbsp;&nbsp; * The Theory and Practice of Modeling Language Design for<br>&nbsp;&nbsp;&nbsp;&nbsp; Model-Based Engineering<br>&nbsp;&nbsp;&nbsp;&nbsp; Bran Selic, Malina Software Corp., Canada<br><br><br>RESEARCH 2.0 EVENT<br><br>&nbsp;&nbsp; * Research 2.0 and Software Engineering 2.0<br>&nbsp;&nbsp;&nbsp;&nbsp; Jean-Marie Favre and Denis Avrilionis<br>&nbsp;&nbsp;&nbsp;&nbsp; OneTree Technologies SA, Luxembourg and<br>&nbsp;&nbsp;&nbsp;&nbsp; University of Grenoble, France<br><br><br>SHORT TUTORIALS<br><br>&nbsp;&nbsp; * The 'Archæology' of Transformations<br>&nbsp;&nbsp;&nbsp;&nbsp; Michel Wermelinger and Yijun Yu, The Open University. UK<br><br>&nbsp;&nbsp; * Compilation for Embedded and Reconfigurable <br>&nbsp;&nbsp;&nbsp;&nbsp; Computing Architectures<br>&nbsp;&nbsp;&nbsp;&nbsp; João M. P. Cardoso, University of Porto, Portugal<br><br>&nbsp;&nbsp; * Lightweight Domain-Specific Language Processing in Kiama<br>&nbsp;&nbsp;&nbsp;&nbsp; Anthony Sloane, Macquarie University, Australia<br><br>&nbsp;&nbsp; * Genesys: Service-Oriented Construction of Property <br>&nbsp;&nbsp;&nbsp;&nbsp; Conform Code Generators<br>&nbsp;&nbsp;&nbsp;&nbsp; Tiziana Margaria, University of Potsdam, Germany<br><br>&nbsp;&nbsp; * The Need for Early Aspects<br>&nbsp;&nbsp;&nbsp;&nbsp; Ana Moreira, Universidade Nova de Lisboa, Portugal<br><br>&nbsp;&nbsp; * Model Transformation Chains for <br>&nbsp;&nbsp;&nbsp;&nbsp; Model-Driven Performance Engineering<br>&nbsp;&nbsp;&nbsp;&nbsp; Mathias Fritzsche, SAP Research<br><br><br>ORGANIZATION COMMITTEE<br><br>&nbsp;&nbsp; * João M. Fernandes (Program Co-Chair), Univ. do Minho, Portugal<br>&nbsp;&nbsp; * Ralf Lämmel (Program Co-Chair), Univ. Koblenz-Landau, Germany<br>&nbsp;&nbsp; * João Saraiva, Universidade do Minho, Portugal<br>&nbsp;&nbsp; * Joost Visser, Software Improvement Group, The Netherlands<br><br><br>ADDITIONAL INFORMATION<br><br>For additional information on the registration, program, venue, and<br>other details of the summer school, please consult the web page:<br><br>&nbsp;&nbsp; https://gttse.wikidot.com/<br><br>There is also a contact email address: </p><p>&nbsp;&nbsp; gttse09 AT list.uni MINUS koblenz.de.<br><br></p>]]></content:encoded>
    </item>
    <item>
      <title>Approaching the API migration challenge</title>
      <link>https://docs.microsoft.com/archive/blogs/ralflammel/approaching-the-api-migration-challenge</link>
      <pubDate>Tue, 25 Nov 2008 08:16:00 GMT</pubDate>
      <dc:creator><![CDATA[RalfLammel]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ralflammel/2008/11/25/approaching-the-api-migration-challenge/</guid>
      <description><![CDATA[I enjoyed delivering an invited lecture at the PhD autumn school IPA 2008.Abstract For
about 4...]]></description>
      <content:encoded><![CDATA[<p>I enjoyed delivering an invited lecture at the PhD <a href="https://www.win.tue.nl/ipa/activities/falldays2008/index.html" mce_href="https://www.win.tue.nl/ipa/activities/falldays2008/index.html">autumn school IPA 2008</a>.</p><p><b>Abstract</b> <br></p><blockquote><p><i>For
about 4 years now I have been sporadically talking about API migration
as a scientific and technical challenge as well as a potential business
idea. It all started with some background in grammar engineering,
formal semantics, and re-engineering which made me see that APIs are
tricky software languages that account for a good part of the
intricacies in automated software evolution. I was fired up when I
acquired a handle on Microsoft's XML APIs during my recent work on the
XML team at Microsoft. At this point I gained confidence in the
business value and the eventual feasibility of API migration. While API
migration is arguably the top subject on my research agenda, I haven't
made substantial progress over the last few years. Meanwhile others
have made both expected and unexpected contributions to the subject,
which I would like to put into perspective. However, I contend that the
hard problem is still to be attacked. In this talk, I am going to
reexamine the landscape of API migration, and submit a mid-term
call-to-arms to cross the API migration's Rubicon. I will also report
on some experiments or experiences with API usage analysis, API
protocol specification, API-related flow analysis of programs, and
transformation technology for API migration. </i></p></blockquote><p>&nbsp;</p><p>My slides are also online <a href="https://www.uni-koblenz.de/%7Elaemmel/apimigration/" mce_href="https://www.uni-koblenz.de/~laemmel/apimigration/">here</a>. I am happy enough to work with <a href="https://homepages.cwi.nl/%7Estorm/" mce_href="https://homepages.cwi.nl/~storm/">Tijs van der Storm</a>
(CWI, Amsterdam) on this very topic. Tijs is currently visiting
researcher at our department in Koblenz. We expect to release a paper
on the "API migration's Rubicon" soon. Please stay tuned. The slides
also show a few diagrams for Java API usage. We do such usage analysis
to better understand the realities of APIs. (Thanks are due here to two
students of mine: Ruwen Hahn and Jürgen Starek.) Again, we hope to
publish some results of this project very soon.<br></p><p>&nbsp;</p><p>Regards,</p><p>Ralf</p><p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Java divergence</title>
      <link>https://docs.microsoft.com/archive/blogs/ralflammel/java-divergence</link>
      <pubDate>Fri, 31 Oct 2008 00:16:00 GMT</pubDate>
      <dc:creator><![CDATA[RalfLammel]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ralflammel/2008/10/31/java-divergence/</guid>
      <description><![CDATA[So here is the long promised paper on the Java case study for grammar convergence.Getting all these...]]></description>
      <content:encoded><![CDATA[<p>So <a href="https://www.uni-koblenz.de/%7Elaemmel/jls/" mce_href="https://www.uni-koblenz.de/~laemmel/jls/">here</a> is the long promised paper on the Java case study for <a href="https://www.uni-koblenz.de/%7Elaemmel/convergence/" mce_href="https://www.uni-koblenz.de/~laemmel/convergence/">grammar convergence</a>.</p><p>Getting all these huge Java grammars to converge was not easy. We are still learning how to do this properly. We are still working on our transformation language, but we feel the results are good enough to go public now. The magic thing about grammar convergence is that it pushes you to necessarily find all the details of grammar variation. Arguably, grammar convergence should be more automatic. However, by asking you to make the transformation decisions, it helps you to understand the result. <br></p><p>From now on, suites of related grammars should have no excuse to be flawed and close-lipped as far as their relationships go.</p><p>&nbsp;</p><p>Regards, <br></p><p>Ralf</p><p>&nbsp;</p><p>PS: Now that I repaired the link I can as well put the abstract here.</p><p>&nbsp;</p><h1>Java is Not Syntax-safe -- Apparently</h1><dl><dt><b>Authors</b>
</dt><dd> Ralf Lämmel and Vadim Zaytsev
<p>&nbsp;</p></dd><dt><b>Abstract</b>
</dt><dd>
  Using a mechanized process, we have reverse-engineered the
  relationships between the 6 different grammars that are contained in
  3 versions of the Java Language Specification (JLS). To this end, we
  have extracted the grammars from (the HTML representation of) the
  JLS, and we have systematically resolved or captured all accidental
  or intended differences by grammar transformations. The project
  reveals a considerable number of problems with the grammars such as
  productions that did not define the intended language.

</dd></dl><p>&nbsp;</p><p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Grammar Convergence -- another method for Software Language Engineers</title>
      <link>https://docs.microsoft.com/archive/blogs/ralflammel/grammar-convergence-another-method-for-software-language-engineers</link>
      <pubDate>Fri, 19 Sep 2008 20:10:00 GMT</pubDate>
      <dc:creator><![CDATA[RalfLammel]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ralflammel/2008/09/19/grammar-convergence-another-method-for-software-language-engineers/</guid>
      <description><![CDATA[I have turned a bit too much into an org animal over the last year or so: several conference...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>I have turned a bit too much into an org animal over the last year or so: several conference organizations, special issues in journals, way too many PC member ships (in fact, there are too many workshops that are like mini conferences). Add to this that the switch to a full(time) German Professor ruins all previous working habits. Now that I have seen the “dark side” (not speaking of any big corporation here), I even more admire those folks in academia who do loads of quality courses, and still do substantial research – perhaps even with getting their own hands dirty. Anyway, I guess, this is the reality shock that you can’t avoid when you switch from industrial research (or before that, academic research with a way lower teaching load) to the mode of a university teacher of the kind of a German Professor. Not sure why anyone would do this except for the “</FONT><A href="https://www.dict.cc/german-english/Anstellung+auf+Lebenszeit.html"><FONT face=Calibri size=3>Anstellung auf Lebenszeit</FONT></A><FONT face=Calibri size=3>”. (I can imagine a few more reasons but I save you my sarcasm.) </FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>My colleagues keep telling me that things get better, and arguably, I might have arrived at the turning point. Of great help is here that Vadim Zaytsev (a PhD student of </FONT><A href="https://www.cs.vu.nl/~x/"><FONT face=Calibri size=3>X</FONT></A><FONT face=Calibri size=3> and me from Amsterdam; Vadim is getting closer to the finish line) has joined the software-languages team in Koblenz last spring. This is particularly exciting because he has profound background in grammarware engineering – a topic that I have been talking about a lot over the last few years without delivering any new stuff except perhaps for the various X/O/R papers. For the last 3 months, we have been working on some grammarware engineering activities. We have been hacking in the best sense of the word. <B style="mso-bidi-font-weight: normal">Today, we are proud to reveal our work on “grammar convergence”.</B> </FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>I have just uploaded an </FONT><A href="https://www.uni-koblenz.de/~laemmel/convergence/"><FONT face=Calibri size=3>intro paper on grammar convergence</FONT></A><FONT size=3><FONT face=Calibri> to my website, but expect some more stuff over the next few weeks and months. (This paper has just been submitted, and your feedback is welcome.) I quote from the conclusion of the paper: “<I style="mso-bidi-font-style: normal">If unit testing is the simple, pragmatic, and effective method to generally validate the I/O behavior of software modules, then grammar convergence is the simple, pragmatic, and effective method to keep scattered grammar knowledge in sync. In addition, the method can be used to capture the intended or the accidental differences between instances of scattered grammar knowledge. Further, grammar convergence also applies at the instance level (populated by XML trees, derivation trees, parse trees, etc.). That is, it can compare and converge data from different software artifacts.”</I></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Final plug: Are you attending </FONT><A href="https://planet-sl.org/"><FONT face=Calibri size=3>SLE 2008</FONT></A><FONT size=3><FONT face=Calibri> – the First International Conference on Software Language Engineering? It’s end of September in Toulouse (which is in France, for geographically challenged readers). The scientific quality of the event taken for granted, let me mention that I have heard of phenomenal cuisine aspects. <SPAN style="mso-spacerun: yes">&nbsp;</SPAN>Please consider attending. This conference on Software Language Engineering unites some communities that previously had mainly workshops as their forum. Imagine this: we had 100+ abstract submissions for this <I style="mso-bidi-font-style: normal">first</I> iteration of the conference. Well, 90 sharp actually made the deadline in the end and submitted a proper paper. So we will have 18 papers over 2 days in the enjoyable surroundings of Toulouse and the MODELS conference with its various workshops – many of them also relevant for Software Language Engineers. Looking at the program, I see folks with background in refactoring, compiler construction, programming languages, declarative programming and executable specification, visual languages, modeling languages, formal methods, grammar-based programming, software transformation, software re- and reverse engineering, and model-driven development. <B style="mso-bidi-font-weight: normal">Of course, I am biased, but this is a conference where I am sure that my broad interests are sufficient to appreciate each and every paper. The key is that all presentations assemble around the notion of software language engineering.</B></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Regards,</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Ralf</FONT></P>]]></content:encoded>
    </item>
    <item>
      <title>StrategoMetaTheory</title>
      <link>https://docs.microsoft.com/archive/blogs/ralflammel/strategometatheory</link>
      <pubDate>Fri, 19 Sep 2008 18:58:00 GMT</pubDate>
      <dc:creator><![CDATA[RalfLammel]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ralflammel/2008/09/19/strategometatheory/</guid>
      <description><![CDATA[Berenike, Bernadette, and Isabelle are all doing great. I tend to put photos of my kids online when...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Berenike, Bernadette, and Isabelle are all doing great. I tend to put photos of my kids online when they get born, and then never again, which I admit is strange; see </FONT><A href="https://homepages.cwi.nl/~ralf/pltp/"><FONT face=Calibri size=3>here</FONT></A><FONT face=Calibri size=3> and </FONT><A href="https://homepages.cwi.nl/~ralf/isabelle/"><FONT face=Calibri size=3>here</FONT></A><FONT face=Calibri size=3>. (There are only two links because B&amp;B are twins.) I guess we have just so many photos of them that we don’t know which of them to put online. Also, Berenike and Bernadette are turning 9 next year, and they start to get embarrassed by their parents’ actions. Shooting and publishing photos may fail to see their approval. I missed the short window of doing so. Isabelle who turns 3 next year is a fast learner and great imitator; she is even less permissive than her big sisters. </FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Speaking of Isabelle and “approval”, I have uploaded </FONT><A href="https://www.uni-koblenz.de/~laemmel/isabelle2/"><FONT face=Calibri size=3>a new paper</FONT></A><FONT face=Calibri size=3> (draft) to my website. It uses Isabelle/HOL to develop a sort of metatheory for traversal strategies. It is my first project on theorem proving. (I am sane enough not to count type-class-based programming in Haskell as theorem proving.) (Also, don’t get confused with the URL’s ending, “isabelle2”. There is really just one Isabelle/HOL paper so far. The URL helps me to avoid confusion with my youngest daughter’s photo directory, even though it is on a different host.) This is joint work with Markus Kaiser, a Mathematician, who has worked on theorem proving for some time (mostly in the context of cryptology) before he joined the SLE team in Koblenz. </FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>This paper has just been submitted. Hence feedback, if any, is appreciated, and will be considered. The actual code distribution is still a bit of a mess, as of writing, but it will be fine, if the paper’s web site says so – soon, hopefully.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Regards,</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Ralf</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal">Title:</B> A Formal Model of Traversal Strategies</FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal">Authors:</B> Markus Kaiser and Ralf Lämmel</FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal">URL:</B> </FONT></FONT><A href="https://www.uni-koblenz.de/~laemmel/isabelle2/"><FONT face=Calibri size=3>https://www.uni-koblenz.de/~laemmel/<B style="mso-bidi-font-weight: normal">isabelle2</B>/</FONT></A></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal">Abstract:</B> There is an observable increase in interest in traversal expressiveness in programming: there are new rewriting languages, programming-language extensions, and combinator libraries that enable programmers to design and deploy traversals over structured data. Such traversal programs can go wrong in new ways. For instance, a traversal may suddenly fail or diverge. It is important to gain better understanding of properties of traversal programs so that programmers make more knowledgeable choices of traversal schemes, and programming environments may provide improved documentation, targeted checks, and other support. This paper presents a machine-checked, Isabelle/HOL-based, formal model of traversal strategies. Amongst others, the model provides sufficient conditions for traversal programs not to fail and not to diverge. The model with its mechanized proofs makes systematic use of Isabelle/HOL's various capabilities for dealing with recursion or induction.</FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>]]></content:encoded>
    </item>
  </channel>
</rss>