<?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 r_klemme</title><link>http://disqus.com/by/r_klemme/</link><description></description><atom:link href="http://disqus.com/r_klemme/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Mon, 04 Dec 2017 11:22:19 -0000</lastBuildDate><item><title>Re: neverworkintheory.github.io: Abbreviated vs. Full-Word Identifier Names</title><link>http://neverworkintheory.org/2017/11/26/abbreviated-full-names.html#comment-3646058067</link><description>&lt;p&gt;Interesting! It seems, specific terms evoke ideas and probably form mental expectations which lead to some things not being looked at. The abbreviation is more cryptic and needs more brain CPU to process so people seem to resort to a more methodical problem detection process.&lt;/p&gt;&lt;p&gt;On the flip side: I guess, if "named" code does exactly what it advertises, then it can be read and comprehended much faster. So neither is better than the other but it depends on the trade offs we want to make.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Mon, 04 Dec 2017 11:22:19 -0000</pubDate></item><item><title>Re: 10 frequently asked Java Interview Questions | Tuturself.com | Tutu'rself</title><link>https://www.tuturself.com/posts/view?menuId=93&amp;postId=887#comment-2952260353</link><description>&lt;p&gt;Now you made item 4 identical to 2. I would define "abstract class" like this&lt;br&gt;1. (as above)&lt;br&gt;2. In contrast to a regular class can contain any number of abstract methods (including zero).&lt;br&gt;3. In contrast to a regular class cannot be instantiated.&lt;/p&gt;&lt;p&gt;Other than that it has the same properties as a regular class.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Sat, 15 Oct 2016 16:10:18 -0000</pubDate></item><item><title>Re: 10 frequently asked Java Interview Questions | Tuturself.com | Tutu'rself</title><link>https://www.tuturself.com/posts/view?menuId=93&amp;postId=887#comment-2951899657</link><description>&lt;p&gt;"5. It doesn’t support multiple inheritance, whereas an abstract class does." That sentence does not make sense in this context.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Sat, 15 Oct 2016 11:34:49 -0000</pubDate></item><item><title>Re: What is the difference between a Process and a Thread? | Tutu'rself</title><link>https://www.tuturself.com/posts/view?menuId=56&amp;postId=101&amp;qbankId=2#comment-2951814268</link><description>&lt;p&gt;"But the heap is not thread-safe and must be synchronized for thread safety." There are multiple ways to achieve thread safety and synchronization access to the variable is not a requirement. The most obvious way is if object 1's methods do synchronization internally where needed (e.g. Vector, ConcurrentHashMap). Another case is immutable data structures.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Sat, 15 Oct 2016 10:27:17 -0000</pubDate></item><item><title>Re: What is the difference between a Process and a Thread? | Tutu'rself</title><link>https://www.tuturself.com/posts/view?menuId=56&amp;postId=101&amp;qbankId=2#comment-2951553540</link><description>&lt;p&gt;"When a method is called then a thread is automatically created to execute the method." This is plain wrong.&lt;/p&gt;&lt;p&gt;"And all the local variables of a method are stored in that stack and are kept thread safe from other threads." This is technically correct but misleading in Java world since most variables are references to objects on the heap. Only variables of primitive data types are actually thread safe (more precisely: thread local) on the heap.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Sat, 15 Oct 2016 05:00:39 -0000</pubDate></item><item><title>Re: The Ruby Community and Reputation | AkitaOnRails.com</title><link>http://www.akitaonrails.com/2016/08/19/the-ruby-community-and-reputation#comment-2849518730</link><description>&lt;p&gt;I think it has not become clear what I meant. I was talking about this three step approach in general. And the more freedom you have in step 1, the more painful architecture errors are which are detected later. When using a framework many / most architectural decisions have been done already so that limits the freedom (these are the "rails") and as well the architectural mistakes you can do. That still does not protect against the discovery "Oh, we picked the wrong framework because it targets a completely different class of applications than the one we need to build."&lt;/p&gt;&lt;p&gt;Then, the comparison with Rails was just with regard to the extremism of like and dislike and the general trend in our industry (or maybe even more globally) to oscillate between "awesome" (a word I have grown to hate because of it its indiscriminate overuse) and "sucks".&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Sun, 21 Aug 2016 07:00:37 -0000</pubDate></item><item><title>Re: The Ruby Community and Reputation | AkitaOnRails.com</title><link>http://www.akitaonrails.com/2016/08/19/the-ruby-community-and-reputation#comment-2847144880</link><description>&lt;p&gt;&amp;gt; The strategy is definitely:&lt;br&gt;&amp;gt; Make it work,&lt;br&gt;&amp;gt; Then make it right,&lt;br&gt;&amp;gt; and, finally, make it fast.&lt;/p&gt;&lt;p&gt;Yes, but there is a large grain of salt to apply: if you take the wrong architectural decisions in step one, at the time you get to step three it might be too late - or you pay a tremendous price. How big the risk is, of course depends on the application at hand. I am just always cautious when I see these seemingly simple recipes to success - probably because I have seen them applied mindlessly too often.&lt;/p&gt;&lt;p&gt;Actually there is a similarity between these recipes and software like Rails: people tend to be total fans or hate it and by doing that they forget that everything has its two sides and all software has strengths and weaknesses - and often there are good reasons for them. I find these heated debates boring because they often digress so far from the factual level into opinion land that they are not even useful at highlighting pros and cons any more. The just serve to illustrate gullibility of human beings.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Fri, 19 Aug 2016 15:17:49 -0000</pubDate></item><item><title>Re: Printer: Canon MG5350 | OpenPrinting - The Linux Foundation</title><link>https://www.openprinting.org/printer/Canon/Canon-MG5350#comment-2523397471</link><description>&lt;p&gt;For me the printer works well - printing and scanning via network.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Fri, 19 Feb 2016 11:01:44 -0000</pubDate></item><item><title>Re: Der Postillon: Handspiel in der 33. Minute: Wird Deutschland jetzt der EM-Titel aberkannt?#more#more</title><link>http://www.der-postillon.com/2016/02/handspiel-in-der-33-minute-wird.html#comment-2489908733</link><description>&lt;p&gt;So schlechte Augen? Wow!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Mon, 01 Feb 2016 13:17:27 -0000</pubDate></item><item><title>Re: Der Postillon: Handspiel in der 33. Minute: Wird Deutschland jetzt der EM-Titel aberkannt?#more#more</title><link>http://www.der-postillon.com/2016/02/handspiel-in-der-33-minute-wird.html#comment-2489751494</link><description>&lt;p&gt;Jodeldidö oder Jodeldida?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Mon, 01 Feb 2016 11:47:43 -0000</pubDate></item><item><title>Re: Der Postillon: Handspiel in der 33. Minute: Wird Deutschland jetzt der EM-Titel aberkannt?#more#more</title><link>http://www.der-postillon.com/2016/02/handspiel-in-der-33-minute-wird.html#comment-2489749798</link><description>&lt;p&gt;Kann nicht sein: Postillon ist eine absolut vertrauenswürdige Nachrichtenquelle. Oder willst Du etwa behaupten, dass RT dahinter steckt?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Mon, 01 Feb 2016 11:46:43 -0000</pubDate></item><item><title>Re: Der Postillon: Handspiel in der 33. Minute: Wird Deutschland jetzt der EM-Titel aberkannt?#more#more</title><link>http://www.der-postillon.com/2016/02/handspiel-in-der-33-minute-wird.html#comment-2489701093</link><description>&lt;p&gt;Das geht gar nicht! Wird jetzt echt so langsam mal Zeit für den Videobeweis im Handball!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Mon, 01 Feb 2016 11:17:34 -0000</pubDate></item><item><title>Re: Ruby Best Practices - Full Book Now Available For Free!</title><link>http://blog.rubybestpractices.com/posts/gregory/022-rbp-now-open.html#comment-2299786499</link><description>&lt;p&gt;Can you please be more specific which links are broken? I tried various links and so far none was broken.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Sat, 10 Oct 2015 06:48:06 -0000</pubDate></item><item><title>Re: Ruby Best Practices - The Double Dispatch Dance</title><link>http://blog.rubybestpractices.com/posts/aaronp/001_double_dispatch_dance.html#comment-1981758407</link><description>&lt;p&gt;As soon as two types are needed in order to decide which code must be executed you have double dispatch. How that is technically solved is another question.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Wed, 22 Apr 2015 14:21:40 -0000</pubDate></item><item><title>Re: Wie glaubwürdig ist Varoufakis noch?</title><link>http://www.sueddeutsche.de/politik/ihr-forum-wie-glaubwuerdig-ist-varoufakis-noch-1.2395354#comment-1909668446</link><description>&lt;p&gt;Dass jemand ein Interesse an etwas hat, bedeutet ja nicht automatisch, dass es auch passiert.&lt;/p&gt;&lt;p&gt;Ich mache mit bei Herrn Varoufakis eher an anderer Stelle mehr Sorgen um seine Glaubwürdigkeit: offensichtlich kommt er ja nicht mit Sanierungskonzepten zum abgesprochenen Zeitpunkt über und was er vorlegt, hat nicht sehr viel Hand und Fuß, nach allem, was ich so sehe.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Mon, 16 Mar 2015 08:14:42 -0000</pubDate></item><item><title>Re: 4 Essential Lessons for Your Self-Improvement</title><link>http://www.lifeoptimizer.org/2014/12/16/self-improvement-lessons/#comment-1817553091</link><description>&lt;p&gt;I believe the pendulum has swung too far to the self optimization side. We are _not_ programs, not even machines. Putting the pressure on everybody to constantly self improve will and does have an adverse effect. For example, for item 1 precondition is that you are not satisfied with yourself. That is a big door for self-doubt and insecurity. Look at all these teenagers who suffer from eating disorders - that's a direct consequence of the self improvement program broadcasted everywhere - and especially in advertising.&lt;/p&gt;&lt;p&gt;Note that I do not say, you should not improve! But there is a fine line between healthy improvement and the never ending struggle towards perfection that haunts so many fellow humans.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Mon, 26 Jan 2015 08:40:01 -0000</pubDate></item><item><title>Re: Ruby Best Practices - LRU Integration explained</title><link>http://blog.rubybestpractices.com/posts/rklemme/013-LRU-Explanations.html#comment-1727101421</link><description>&lt;p&gt;Thank you! You are very welcome.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Fri, 05 Dec 2014 08:46:13 -0000</pubDate></item><item><title>Re: Class: Array (Ruby 2.1.1)</title><link>http://www.ruby-doc.org/core-2.1.1/Array.html#comment-1681168455</link><description>&lt;p&gt;Surprising as it may seem to you people using Ruby do not take an issue with this. We even value it as a strength (-&amp;gt; duck typing). If you think Ruby's dynamic nature is a design flaw then you will probably be more happy with a different language.&lt;/p&gt;&lt;p&gt;Of course you can "fix" this by introducing static typing into Ruby. I will assume though that the result will have very few resemblance to Ruby.&lt;/p&gt;&lt;p&gt;Oh, and btw: even in statically typed languages you do not know what methods actually do. Define an interface in Java, create a method with such a beast as argument which invokes methods defined in the interface. The situation with Eiffel may be a bit better with pre and post conditions being automatically checked. In practice this additional level of safety does not seem all that important.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Fri, 07 Nov 2014 07:40:57 -0000</pubDate></item><item><title>Re: Does Task Automation Improve Code Reviews?</title><link>http://neverworkintheory.org/2013/08/31/does-task-automation-improve-code-reviews.html#comment-1431931736</link><description>&lt;p&gt;But: if the file is linted, there are some classes of issues you do not have to look for during the code review. And: if you look at the test while doing the code review it might be easier to spot the potential issues to look for by thinking about which tests might be missing or what feature might not be tested.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Thu, 12 Jun 2014 09:10:39 -0000</pubDate></item><item><title>Re: Practicing Ruby - Issue #15: Duck Typing in Practice (2 of 2)</title><link>http://blog.rubybestpractices.com/posts/gregory/047-issue-15-duck-typing-2.html#comment-1404715646</link><description>&lt;p&gt;Yes, absolutely. Good catch!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Mon, 26 May 2014 09:35:48 -0000</pubDate></item><item><title>Re: Practicing Ruby - Issue #8: Uses for Modules (1 of 4)</title><link>http://blog.rubybestpractices.com/posts/gregory/037-issue-8-uses-for-modules.html#comment-1358938055</link><description>&lt;p&gt;Yep! That looks like an even better approach for the use case of only methods. However, if you also want to define classes or modules int that very namespace you will need to use a module (or class).&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Mon, 28 Apr 2014 09:38:22 -0000</pubDate></item><item><title>Re: Practicing Ruby - Issue #8: Uses for Modules (1 of 4)</title><link>http://blog.rubybestpractices.com/posts/gregory/037-issue-8-uses-for-modules.html#comment-1358654611</link><description>&lt;p&gt;I've shown above that the module itself as well as any class including (or instance extending) it will carry state. There is nothing particular about instance or singleton methods that would make the instance immutable. It's the specific implementation (i.e. not modifying instance variables) that creates an immutable.&lt;/p&gt;&lt;p&gt;To complete the example from above:&lt;/p&gt;&lt;p&gt;irb(main):001:0&amp;gt; module M&lt;br&gt;irb(main):002:1&amp;gt; extend self&lt;br&gt;irb(main):003:1&amp;gt; attr_accessor :foo&lt;br&gt;irb(main):004:1&amp;gt; end&lt;br&gt;=&amp;gt; nil&lt;br&gt;irb(main):005:0&amp;gt; class C&lt;br&gt;irb(main):006:1&amp;gt; include M&lt;br&gt;irb(main):007:1&amp;gt; end&lt;br&gt;=&amp;gt; C&lt;br&gt;irb(main):008:0&amp;gt; c = &lt;a href="http://C.new" rel="nofollow noopener" target="_blank" title="C.new"&gt;C.new&lt;/a&gt;&lt;br&gt;=&amp;gt; #&amp;lt;c:0x00000002230be8&amp;gt;&lt;br&gt;irb(main):009:0&amp;gt; &lt;a href="http://c.foo" rel="nofollow noopener" target="_blank" title="c.foo"&gt;c.foo&lt;/a&gt;&lt;br&gt;=&amp;gt; nil&lt;br&gt;irb(main):010:0&amp;gt; &lt;a href="http://c.foo" rel="nofollow noopener" target="_blank" title="c.foo"&gt;c.foo&lt;/a&gt; = 99&lt;br&gt;=&amp;gt; 99&lt;br&gt;irb(main):011:0&amp;gt; &lt;a href="http://c.foo" rel="nofollow noopener" target="_blank" title="c.foo"&gt;c.foo&lt;/a&gt;&lt;br&gt;=&amp;gt; 99&lt;br&gt;irb(main):012:0&amp;gt; c.instance_variables&lt;br&gt;=&amp;gt; [:@foo]&lt;/p&gt;&lt;p&gt;My point is that be doing "extend self" you end with a module that has a bunch of singleton methods (the one that you primarily intend to use) but can also be included in a class or used to extend an object (which is inclusion in the singleton class). I prefer to do exactly one OR the other - but not both at the same time. The reason is clarity. Both uses are different concepts and I like to keep things separate to reduce potential confusion and errors.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Mon, 28 Apr 2014 02:29:03 -0000</pubDate></item><item><title>Re: Practicing Ruby - Issue #8: Uses for Modules (1 of 4)</title><link>http://blog.rubybestpractices.com/posts/gregory/037-issue-8-uses-for-modules.html#comment-1358238857</link><description>&lt;p&gt;Probably I wasn't making myself clear enough.&lt;/p&gt;&lt;p&gt;irb(main):001:0&amp;gt; module M&lt;br&gt;irb(main):002:1&amp;gt; extend self&lt;br&gt;irb(main):003:1&amp;gt; attr_accessor :foo&lt;br&gt;irb(main):004:1&amp;gt; end&lt;br&gt;=&amp;gt; nil&lt;br&gt;irb(main):005:0&amp;gt; &lt;a href="http://M.foo" rel="nofollow noopener" target="_blank" title="M.foo"&gt;M.foo&lt;/a&gt; = 123&lt;br&gt;=&amp;gt; 123&lt;br&gt;irb(main):006:0&amp;gt; &lt;a href="http://M.foo" rel="nofollow noopener" target="_blank" title="M.foo"&gt;M.foo&lt;/a&gt;&lt;br&gt;=&amp;gt; 123&lt;br&gt;irb(main):007:0&amp;gt; o = Object.new.extend M&lt;br&gt;=&amp;gt; #&amp;lt;object:0x00000001220a00&amp;gt;&lt;br&gt;irb(main):008:0&amp;gt; &lt;a href="http://o.foo" rel="nofollow noopener" target="_blank" title="o.foo"&gt;o.foo&lt;/a&gt; = 456&lt;br&gt;=&amp;gt; 456&lt;br&gt;irb(main):009:0&amp;gt; &lt;a href="http://o.foo" rel="nofollow noopener" target="_blank" title="o.foo"&gt;o.foo&lt;/a&gt;&lt;br&gt;=&amp;gt; 456&lt;br&gt;irb(main):010:0&amp;gt; M.instance_methods(false)&lt;br&gt;=&amp;gt; [:foo, :foo=]&lt;br&gt;irb(main):011:0&amp;gt; M.singleton_methods&lt;br&gt;=&amp;gt; [:foo, :foo=]&lt;/p&gt;&lt;p&gt;See, M contains instance methods foo= and foo as well as the same pair as singleton methods. And there is nothing immutable.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Sun, 27 Apr 2014 18:00:51 -0000</pubDate></item><item><title>Re: Practicing Ruby - Issue #8: Uses for Modules (1 of 4)</title><link>http://blog.rubybestpractices.com/posts/gregory/037-issue-8-uses-for-modules.html#comment-1358232268</link><description>&lt;p&gt;Well, I find it more ugly that your approach essentially defines instance methods and singleton methods at the same time. I rather spend the effort of that bit of extra typing. The important part is the reading of the code (as I've written elsewhere) - not the writing. If you read "def &lt;a href="http://self.foo" rel="nofollow noopener" target="_blank" title="self.foo"&gt;self.foo&lt;/a&gt;" all the time you know immediately that the module is used as a namespace for "functions" while the "extend self" at the top can be easily overlooked.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Sun, 27 Apr 2014 17:54:09 -0000</pubDate></item><item><title>Re: Practicing Ruby - Issue #8: Uses for Modules (1 of 4)</title><link>http://blog.rubybestpractices.com/posts/gregory/037-issue-8-uses-for-modules.html#comment-1357780391</link><description>&lt;p&gt;You do not need "extend self" here:&lt;/p&gt;&lt;p&gt;irb(main):001:0&amp;gt; module Thingi&lt;br&gt;irb(main):002:1&amp;gt; def self.do_this(x) puts "foo #{x}" end&lt;br&gt;irb(main):003:1&amp;gt; end&lt;br&gt;=&amp;gt; nil&lt;br&gt;irb(main):004:0&amp;gt; Thingi.do_this "bar"&lt;br&gt;foo bar&lt;br&gt;=&amp;gt; nil&lt;/p&gt;&lt;p&gt;I prefer to either define methods on the module instance OR define instance methods. Your "extend self" trick does both and you can still mix in the module somewhere.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Klemme</dc:creator><pubDate>Sun, 27 Apr 2014 11:48:08 -0000</pubDate></item></channel></rss>