<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Disqus - Latest Comments for JoergWMittag</title><link>http://disqus.com/by/JoergWMittag/</link><description></description><atom:link href="http://disqus.com/JoergWMittag/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Thu, 06 Sep 2018 10:43:49 -0000</lastBuildDate><item><title>Re: TruffleRuby Native: Fast Even for Short Scripts</title><link>http://eregon.me/blog/2018/02/19/truffleruby-native-fast-short-scripts.html#comment-4080706449</link><description>&lt;p&gt;&amp;gt; Interesting how defining more in Ruby can actually help performance.&lt;/p&gt;&lt;p&gt;Well, it *should* be obvious that an optimizing Ruby compiler would need Ruby code to optimize, but strangely enough many people *still* seem to believe that writing code in a *different* language (e.g. C or Java) will somehow magically improve performance, even though now the optimizer no longer can optimize it.&lt;/p&gt;&lt;p&gt;This is a bit different for Truffle, of course, with support for polyglot cross-language optimizations.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jörg W Mittag</dc:creator><pubDate>Thu, 06 Sep 2018 10:43:49 -0000</pubDate></item><item><title>Re: journal.stuffwithstuff.com</title><link>http://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function#comment-3684487409</link><description>&lt;p&gt;Do you know Distributed Oz / Mozart? Its distribution / concurrency model is Concurrent Constraint Programming, and in Oz just like in your PromiseScript, *every* storage place, whether that be the return value on the stack, a function argument, or a variable, is a future/promise. This has some really interesting implications, for example, some code that would *not* be tail-recursive in, say, Scheme, actually *is* tail-recursive in Oz. (Basically, code that is "tail-recursive modulo CONS" ends up being tail-recursive in Oz, simply by virtue of the language semantics and without the compiler actually explicitly optimizing TRMC.)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jörg W Mittag</dc:creator><pubDate>Sat, 30 Dec 2017 11:05:36 -0000</pubDate></item><item><title>Re: journal.stuffwithstuff.com</title><link>http://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function#comment-3684482501</link><description>&lt;p&gt;Hardcore Haskellians would argue that evaluation order *is* a side-effect! (And that includes synchronous vs. asynchronous evaluation.)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jörg W Mittag</dc:creator><pubDate>Sat, 30 Dec 2017 11:01:19 -0000</pubDate></item><item><title>Re: The Ultimate Guide to Java 9</title><link>https://www.sitepoint.com/ultimate-guide-to-java-9/#comment-3259167090</link><description>&lt;blockquote&gt;The first major use of “indy” were lambda expressions in Java 8.&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I'm pretty sure JRuby's use of &lt;em&gt;invokedynamic&lt;/em&gt; predates Java 8's lambdas by years. IIRC, JRuby was "indyfied" even before Java 7 came out; in fact, several JRuby core developers were on the JSR-292 Working Group. Dynalink itself also predates Java 8 by quite a bit.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jörg W Mittag</dc:creator><pubDate>Sun, 16 Apr 2017 18:45:54 -0000</pubDate></item><item><title>Re: Stack Overflow Podcast #89 - The Decline of Stack Overflow Has Been Greatly Exaggerated – Stack Overflow Blog – A destination for all things related to development at Stack Overflow</title><link>https://stackoverflow.blog/2016/10/podcast-89-the-decline-of-stack-overflow-has-been-greatly-exaggerated/#comment-2932780840</link><description>&lt;p&gt;Obligatory Abelson quote: “Programs must be written for people to read, and only incidentally for machines to execute.” He put his money where his mouth is (so to speak) by writing *Structure and Interpretation of Classical Mechanics*, which teaches physics using Scheme instead of maths. This is an interesting example, in that the code in question is in fact not even meant to be executed, it is just a notation for describing dynamic behavior. The formal specification of IBM System/360 in APL is another example of a programming language being used for describing systems instead of writing programs.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jörg W Mittag</dc:creator><pubDate>Tue, 04 Oct 2016 10:17:24 -0000</pubDate></item><item><title>Re: SIP 25 - Trait Parameters - Scala Documentation</title><link>http://docs.scala-lang.org/sips/pending/trait-parameters.html#comment-2580537196</link><description>&lt;p&gt;I guess the problem is that the Diamond Problem is highly non-local: IOW, the problem cannot be fixed at the point where it manifests itself, and the only place it *can* be fixed may very well be in code you can't fix. E.g. in the example above, `A`, `B`, and `C` may be defined in three separate libraries that are completely oblivious of each other and none of which may be under your control.&lt;/p&gt;&lt;p&gt;It is a very unsatisfying user experience to create a language feature that sometimes works and sometimes doesn't and when it doesn't, you cannot even do something about it. For the sake of simplicity, you'd rather just restrict the feature in a way that the problem cannot even present itself.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jörg W Mittag</dc:creator><pubDate>Sun, 20 Mar 2016 21:52:33 -0000</pubDate></item><item><title>Re: Episode #70: OAuth2</title><link>http://ruby5.envylabs.com/episodes/72/stories/593.html#comment-46241696</link><description>&lt;p&gt;Actually, I do believe I can explain the difference between OpenID and oAuth in under a minute. In fact, I can do it in under 5 seconds:&lt;/p&gt;&lt;p&gt;OpenID lets humans log into machines, oAuth lets machines log into other machines (sometimes on behalf of a human).&lt;/p&gt;&lt;p&gt;[Okay, that might be 10 seconds ...]&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jörg W Mittag</dc:creator><pubDate>Fri, 23 Apr 2010 11:08:50 -0000</pubDate></item><item><title>Re: Ruby Best Practices - The Complete Numeric Class</title><link>http://blog.rubybestpractices.com/posts/rklemme/019-Complete_Numeric_Class.html#comment-46109397</link><description>&lt;p&gt;I believe that your Object#to_hex method violates Ruby's conversion protocol contract: to_xyz methods are not allowed to fail. They are allowed to not exist, of course, but if they *do*exist, i.e. if an object responds to a to_xyz message, then it *must* return a value. Only the top-level Integer()/Hash()/HexNum() type methods are allowed to fail.&lt;/p&gt;&lt;p&gt;In this case, Object#to_hex may fail if self doesn't respond to to_i.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jörg W Mittag</dc:creator><pubDate>Thu, 22 Apr 2010 16:48:44 -0000</pubDate></item><item><title>Re: What if You Didn't Have Access to If/Then/Else? &amp;mdash; A Single Programmer's Blog</title><link>http://blog.teksol.info/2009/04/17/what-if-you-didnt-have-access-to-if-then-else.html#comment-8468781</link><description>&lt;p&gt;I wrote something like this up a couple of months ago, just for fun. See https://JoergWMittag.GitHub.Com/b001e/ . The meat is in https://GitHub.Com/JoergWMittag/B001e/blob/master/lib/b001e/truthiness.rb and https://GitHub.Com/JoergWMittag/B001e/blob/master/lib/b001e/falsiness.rb . My implementation actually passes the RubySpec tests, which I ported over to MiniUnit: https://GitHub.Com/JoergWMittag/B001e/tree/master/spec/ .&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jörg W Mittag</dc:creator><pubDate>Mon, 20 Apr 2009 18:03:13 -0000</pubDate></item><item><title>Re: tinyrb Interview
      -
      macournoyer's blog</title><link>http://macournoyer.com/blog/2009/02/27/tinyrb-interview/#comment-6731560</link><description>&lt;p&gt;Rubinus currently has a Ruby parser in Ruby: they are using the ruby_parser Gem right now. However, they are thinking of going back to their old C-based parser.&lt;/p&gt;&lt;p&gt;ruby_parser is a parser that is automatically generated from MRI's parse.y via racc (a Ruby port of YACC), the same way that MRI's parser is generated from parse.y via YACC.&lt;/p&gt;&lt;p&gt;As it turns out, parse.y is the problem, not C. So, the switch to ruby_parser just made Rubinius slower and more complicated, but didn't actually improve anything. The Ruby version is no more maintainable than the C version, because the code is generated anyway: what needs maintaining is parse.y and that is the same unmaintainable 10000 line mess in both cases.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jörg W Mittag</dc:creator><pubDate>Sat, 28 Feb 2009 17:39:14 -0000</pubDate></item><item><title>Re: tinyrb Interview
      -
      macournoyer's blog</title><link>http://macournoyer.com/blog/2009/02/27/tinyrb-interview/#comment-6731468</link><description>&lt;p&gt;I'm not surprised that you're having trouble with the parser. There are currently around 15 Ruby implementations, exactly *three* of those do not use the MRI parser: XRuby, Cardinal and now tinyrb. XRuby always had major trouble with the parser, Cardinal isn't exactly moving fast either, and now, well, you are having trouble too.&lt;/p&gt;&lt;p&gt;YARV and MacRuby use the YACC-generated MRI C-Parser directly, JRuby generates its parser from the MRI parse.y file via a Java port of YACC (Jay), Ruby.NET generates its parser from parse.y via a .NET port of YACC that they specifically wrote for their project (Gardens Point Parser Generator, GPPG), for IronRuby, Microsoft has licensed GPPG and the Ruby.NET parser from the Gardens Point Ruby.NET project, Rubinius originally used Evan Phoenix's repackaging of the MRI parser as a library (libsydparse) and now uses the ruby_parser Gem, which is a parser generated from the MRI parse.y file via the Ruby port of YACC (racc). Even MagLev uses this crazy setup, where they have replaced the innards of MRI with a server and have it handout the AST to the MagLev VM via a network socket.&lt;/p&gt;&lt;p&gt;*Everybody* who has ever tried to write their own Ruby grammar and/or parser has failed. There is a project/mailinglist called ruby-grammarians, whose sole purpose is to define a formal grammar for Ruby. At first, they failed. Then they started over again, using XRuby's ANTLR grammar as base. And failed again.&lt;/p&gt;&lt;p&gt;There's two reasons for this:&lt;/p&gt;&lt;p&gt;	1) Ruby's grammar is hideously, mind-bogglingly complex and &lt;br&gt;	2) nobody knows, what Ruby's grammar is – there is no specification for it; the closest thing to a specification is parse.y from MRI, 9500 SLOC of pure terror.&lt;/p&gt;&lt;p&gt;None of this is news, BTW. I just found this blog post by _why the lucky stiff from 2006: &amp;lt;http: &lt;a href="http://redhanded.hobix.com" rel="nofollow noopener" target="_blank" title="redhanded.hobix.com"&gt;redhanded.hobix.com&lt;/a&gt;="" cult="" parseyremakes.html=""&amp;gt;&lt;/p&gt;&lt;p&gt;Here's all the Ruby grammars I know about:&lt;/p&gt;&lt;p&gt;MRI: &amp;lt;https: &lt;a href="http://github.com" rel="nofollow noopener" target="_blank" title="github.com"&gt;github.com&lt;/a&gt;="" rubyspec="" matzruby="" tree="" trunk="" parse.y=""&amp;gt; (YACC)&lt;/p&gt;&lt;p&gt;XRuby: &amp;lt;http: &lt;a href="http://googlecode.com" rel="nofollow noopener" target="_blank" title="googlecode.com"&gt;googlecode.com&lt;/a&gt;="" p="" xruby="" source="" browse="" trunk="" src="" com="" xruby="" compiler="" parser="" ruby.g=""&amp;gt; (ANTLRv3)&lt;/p&gt;&lt;p&gt;Cardinal: &amp;lt;https: &lt;a href="http://svn.parrot.org" rel="nofollow noopener" target="_blank" title="svn.parrot.org"&gt;svn.parrot.org&lt;/a&gt;="" parrot="" trunk="" languages="" cardinal="" src="" parser="" &lt;a href="http://grammar.pg" rel="nofollow noopener" target="_blank" title="grammar.pg"&gt;grammar.pg&lt;/a&gt;=""&amp;gt; (Parrot Grammar Engine)&lt;/p&gt;&lt;p&gt;Markus Liedl (whom some of you might know as the author of the Carbone Ruby VM) posted a grammar he developed to ruby-talk 1.5 years ago: &amp;lt;http: &lt;a href="http://ruby-forum.com" rel="nofollow noopener" target="_blank" title="ruby-forum.com"&gt;ruby-forum.com&lt;/a&gt;="" topic="" 131793=""/&amp;gt;. (The thread also contains some interesting discussion about alternative Ruby grammars in general.)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jörg W Mittag</dc:creator><pubDate>Sat, 28 Feb 2009 17:31:09 -0000</pubDate></item><item><title>Re: Github vs Sourceforge</title><link>http://adam.blog.heroku.com/past/2009/1/20/github_vs_sourceforge/#comment-5410138</link><description>&lt;p&gt;I agree with you in principle that many projects are much too afraid of forks. However, I think that your list of examples is a little bit off: I know that IBM maintains their own fork of Apache for the OS/400 operating system, called "IBM Web Server for OS/400 powered by Apache" and the relationship between IBM and the ASF seems to be just fine. Ubuntu actually encourages forking, in fact, they have even built tools and infrastructure to make creating these forks (called "Remixes") easy and straightforward. (The same applies e.g. to Fedoras "Respins".)&lt;/p&gt;&lt;p&gt;And last but not least: Linux. Really? I mean ... REALLY? Linus Torvalds is the friggin' *inventor* of the "forks are good" mantra! In fact, this mantra is so important that he even wrote a version control system specifically to support it. You might have heard of it ...&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jörg W Mittag</dc:creator><pubDate>Tue, 20 Jan 2009 19:33:46 -0000</pubDate></item></channel></rss>