<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Tom Dalling - Latest Comments</title><link xmlns="http://www.w3.org/2005/Atom" rel="http://api.friendfeed.com/2008/03#sup" href="http://disqus.com/sup/all.sup#forumcomments-53612ba2" type="application/json"/><link>http://tomdalling.disqus.com/</link><description></description><atom:link href="http://tomdalling.disqus.com/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Tue, 10 Jan 2012 22:02:22 -0000</lastBuildDate><item><title>Re: Model View Controller Explained</title><link>http://www.tomdalling.com/blog/software-design/model-view-controller-explained#comment-407581352</link><description>Woah, wacky #ifdef intendation alert!&lt;br&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Chris</dc:creator><pubDate>Tue, 10 Jan 2012 22:02:22 -0000</pubDate></item><item><title>Re: Implementing Your Own Cocoa Bindings</title><link>http://www.tomdalling.com/blog/cocoa/implementing-your-own-cocoa-bindings#comment-376620571</link><description>Hi Tom,&lt;br&gt;&lt;br&gt;thanks a lot for that piece of code! I used your code to make bindings work in a custom subclass of NSTextField which reacts to scrolling.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bastian Bechtold</dc:creator><pubDate>Thu, 01 Dec 2011 07:37:54 -0000</pubDate></item><item><title>Re: Model View Controller Explained</title><link>http://www.tomdalling.com/blog/software-design/model-view-controller-explained#comment-362194018</link><description>Thank you so much for providing such a good explanation for MVC.. clarified many doubts :)</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Snehal Masne</dc:creator><pubDate>Sun, 13 Nov 2011 01:56:50 -0000</pubDate></item><item><title>Re: How To Set Up A Secure Git Server At Home (OSX)</title><link>http://www.tomdalling.com/blog/software-processes/how-to-set-up-a-secure-git-server-at-home-osx#comment-346977220</link><description>I haven't done a whole lot of ssh config before, so I'm not sure how to do that I'm afraid.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Dalling</dc:creator><pubDate>Thu, 27 Oct 2011 07:18:11 -0000</pubDate></item><item><title>Re: How To Set Up A Secure Git Server At Home (OSX)</title><link>http://www.tomdalling.com/blog/software-processes/how-to-set-up-a-secure-git-server-at-home-osx#comment-346865572</link><description>Is there a possibility to disable the password authentication only for the git user? According to "man ssh_config" this should be possible by editing ~/.ssh/config the same way as you suggested to edit /etc/sshd_config (sans the root-part of course), but I can't seem to get it running...</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nebu</dc:creator><pubDate>Thu, 27 Oct 2011 05:38:09 -0000</pubDate></item><item><title>Re: Model View Controller Explained</title><link>http://www.tomdalling.com/blog/software-design/model-view-controller-explained#comment-325104951</link><description>Awesome - great explanation, thanks.  Appreciate the benefits write up - helps understand the competitive edge of using MVC</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Hsharif2</dc:creator><pubDate>Sun, 02 Oct 2011 14:05:17 -0000</pubDate></item><item><title>Re: Coding Tip: Have A Single Exit Point</title><link>http://www.tomdalling.com/blog/coding-tips/coding-tip-have-a-single-exit-point#comment-321720738</link><description>It's a dated concept that is as relevant today as it was when Djikstra first proposed it.  If you are in a professional shop, multiple exits in your methods, unless handling unexpected exceptions, will normally fail your code during review.&lt;br&gt;&lt;br&gt;The principles of structured programming are to be adhered to whenever possible... any developer breaking with them today, in my opinion, should be viewed as a novice.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rick</dc:creator><pubDate>Wed, 28 Sep 2011 09:46:45 -0000</pubDate></item><item><title>Re: How To Set Up A Secure Git Server At Home (OSX)</title><link>http://www.tomdalling.com/blog/software-processes/how-to-set-up-a-secure-git-server-at-home-osx#comment-315633837</link><description>Actually AFAIK, git comes installed on Lion by default, which means you shouldn't have to change any user's path to find it. I think it's at /usr/bin/git now.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Benjamin Kreeger</dc:creator><pubDate>Mon, 19 Sep 2011 23:43:22 -0000</pubDate></item><item><title>Re: How To Set Up A Secure Git Server At Home (OSX)</title><link>http://www.tomdalling.com/blog/software-processes/how-to-set-up-a-secure-git-server-at-home-osx#comment-313342752</link><description>Hi Tom,&lt;br&gt;&lt;br&gt;Just wanted to say thanks for this guide, really helped me get my remote git server setup on my home machine.&lt;br&gt;&lt;br&gt;Good work.&lt;br&gt;Matt.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt</dc:creator><pubDate>Fri, 16 Sep 2011 14:43:23 -0000</pubDate></item><item><title>Re: Model View Controller Explained</title><link>http://www.tomdalling.com/blog/software-design/model-view-controller-explained#comment-305805023</link><description>One of the better high level explanations I've seen. Thanks.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Guest</dc:creator><pubDate>Fri, 09 Sep 2011 06:57:07 -0000</pubDate></item><item><title>Re: How To Set Up A Secure Git Server At Home (OSX)</title><link>http://www.tomdalling.com/blog/software-processes/how-to-set-up-a-secure-git-server-at-home-osx#comment-273588232</link><description>I haven't installed Lion yet, but try adding this line to the bottom of /etc/profile (in addition to step 4):&lt;br&gt;&lt;br&gt;[ -r "$HOME/.bashrc" ] &amp;amp;&amp;amp; source "$HOME/.bashrc"&lt;br&gt;&lt;br&gt;It looks like .bashrc isn't run by default anymore, but this should make it run according to: &lt;a href="http://natelyman.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=129:fixing-git-after-installing-os-x-lion-&amp;amp;catid=39:iphone-sdk" rel="nofollow"&gt;http://natelyman.com/index.php...&lt;/a&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Dalling</dc:creator><pubDate>Tue, 02 Aug 2011 00:38:36 -0000</pubDate></item><item><title>Re: How To Set Up A Secure Git Server At Home (OSX)</title><link>http://www.tomdalling.com/blog/software-processes/how-to-set-up-a-secure-git-server-at-home-osx#comment-273148933</link><description>How should step 4 "echo 'export PATH="$PATH:/usr/local/git/bin/"' &amp;gt;&amp;gt; ~/.bashrc"  be changed to work on OSX Lion?</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Maddicken</dc:creator><pubDate>Mon, 01 Aug 2011 16:55:04 -0000</pubDate></item><item><title>Re: Model View Controller Explained</title><link>http://www.tomdalling.com/blog/software-design/model-view-controller-explained#comment-262080454</link><description>I have never gotten MVC before now, great article, thanks much for the help!</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">pianite</dc:creator><pubDate>Sat, 23 Jul 2011 11:54:21 -0000</pubDate></item><item><title>Re: For those who have never used Objective C</title><link>http://www.tomdalling.com/blog/coding-styleconventions/for-those-who-have-never-used-objective-c#comment-248453471</link><description>its gud. well, is TOM similar to objective C? what is TOM exactly?????? pls reply.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Priyavarshini13</dc:creator><pubDate>Mon, 11 Jul 2011 23:36:17 -0000</pubDate></item><item><title>Re: For those who have never used Objective C</title><link>http://www.tomdalling.com/blog/coding-styleconventions/for-those-who-have-never-used-objective-c#comment-239488663</link><description>Box a large number of parameters in an NSDictionary, wrap the method call in your own method that checks the dict and supplies reasonable defaults for missing keys. Easy peasy lemon squeezy.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">willc2</dc:creator><pubDate>Fri, 01 Jul 2011 03:36:24 -0000</pubDate></item><item><title>Re: Model View Controller Explained</title><link>http://www.tomdalling.com/blog/software-design/model-view-controller-explained#comment-235769513</link><description>I still don't get it 100%, but this helped me slightly understand it more. Thankyou!</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Hughes</dc:creator><pubDate>Mon, 27 Jun 2011 06:18:37 -0000</pubDate></item><item><title>Re: Why performSelector: Is More Dangerous Than I Thought</title><link>http://www.tomdalling.com/blog/cocoa/why-performselector-is-more-dangerous-than-i-thought#comment-175798945</link><description>Thanks. Not sure how long it would have taken me to ferret this out ...</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Steven Parkes</dc:creator><pubDate>Thu, 31 Mar 2011 16:44:14 -0000</pubDate></item><item><title>Re: Implementing Your Own Cocoa Bindings</title><link>http://www.tomdalling.com/blog/cocoa/implementing-your-own-cocoa-bindings#comment-174672326</link><description>Sorry, I've been meaning to get around to this for ages. In the mean time, have a look at mmalc's examples if you haven't already:&lt;br&gt;&lt;br&gt;&lt;a href="http://homepage.mac.com/mmalc/CocoaExamples/controllers.html" rel="nofollow"&gt;http://homepage.mac.com/mmalc/...&lt;/a&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Dalling</dc:creator><pubDate>Wed, 30 Mar 2011 02:03:09 -0000</pubDate></item><item><title>Re: SOLID Class Design: The Liskov Substitution Principle</title><link>http://www.tomdalling.com/blog/software-design/solid-class-design-the-liskov-substitution-principle#comment-174671306</link><description>Yes, in that respect this Bird/FlightfulBird example isn't great. If this were real software, I wouldn't use subclassing for every different type of bird. I'd just have a single Bird class, with a "setCanFly" method on it. That would make the whole problem go away.&lt;br&gt;&lt;br&gt;When you say that your code snippet looks similar to the "Solution 1" code and therefor violates the OCP, I'd say it's actually more similar to the "Solution 2" code which doesn't violate the OCP. This is because when you make a new flightless bird class, you don't have to modify the ArrangeBirdInPattern function. In "Solution 1", you have to modify the function every time a new flightless bird class is created.&lt;br&gt;&lt;br&gt;Like most software development advice, the LSP is just a rule of thumb. You can think of an LSP violation as a kind of code smell. It indicates that there may be a better way to structure the code.&lt;br&gt;&lt;br&gt;As for the Java exceptions, I had a quick google (doesn't that sound dirty) and found this: &lt;br&gt;&lt;br&gt;class: java.nio.ByteBuffer&lt;br&gt;method: public ByteBuffer put(ByteBuffer src)&lt;br&gt;throws: ReadOnlyBufferException (extends UnsupportedOperationException) - If this buffer is read-only&lt;br&gt;&lt;br&gt;If you have a subclass of ByteBuffer that is read-only, I would say that it does violate the LSP. If you can never call "put", then it shouldn't have a "put" method at all. You could get around this by having two interfaces like ReadableByteBuffer and WritableByteBuffer. Then you can choose not to implement WritableByteBuffer if the class is read-only.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Dalling</dc:creator><pubDate>Wed, 30 Mar 2011 01:58:10 -0000</pubDate></item><item><title>Re: SOLID Class Design: The Liskov Substitution Principle</title><link>http://www.tomdalling.com/blog/software-design/solid-class-design-the-liskov-substitution-principle#comment-172583916</link><description>Hi Tom,&lt;br&gt;&lt;br&gt;from a software architecture point of view I can fully agree to you. Subclassing the Bird for the FlightfulBird does make sense to group the flying ones alltogether. It is a reasonable choice both from a software design point of view and the semantically perspective.&lt;br&gt;&lt;br&gt;But in practice the downsides stay exactly the same. To implement an apropriate ArrangeBirdInPattern-method you need to approximately do the following:&lt;br&gt;&lt;br&gt;void ArrangeBirdInPattern(Bird* aBird)&lt;br&gt;{&lt;br&gt;	FlightfulBird * aFlyingOne= dynamic_cast&amp;lt;flightfulbird *=""&amp;gt;(aBird);&lt;br&gt;	if(aFlyingOne)&lt;br&gt;		ArrangeBirdInSky(aFlyingOne);&lt;br&gt;	else&lt;br&gt;		ArrangeBirdOnGround(aBird);&lt;br&gt;		&lt;br&gt;}&lt;br&gt;&lt;br&gt;That looks pretty similar to the "blatant violation of the Open Closed Principle" earlier in this article. The difference is the use of an (abstract) superclass or interface instead of a single concrete subclass of Bird. &lt;br&gt;&lt;br&gt;Did I get something wrong or is the LSP rather an academic subtleness and a design faux pas that a practical problem?&lt;br&gt;&lt;br&gt;Besides in the Java Collection Framework the use of UnsupportedOperationException is pretty common (Collections.unmodifiableList()). The interface List itself even declares that such an Exception may be throws. Is this a violation of LSP?&lt;br&gt;&lt;br&gt;Best regards&lt;br&gt;Andy&amp;lt;/flightfulbird&amp;gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Noemail</dc:creator><pubDate>Sat, 26 Mar 2011 19:53:49 -0000</pubDate></item><item><title>Re: Implementing Your Own Cocoa Bindings</title><link>http://www.tomdalling.com/blog/cocoa/implementing-your-own-cocoa-bindings#comment-134594298</link><description>Hi Tom,&lt;br&gt;&lt;br&gt;Could you please give me an working example project of your code? I couldn't make it work since I'm not so sure where to put these codes, especially where to write [self propagateValue:newColor forBinding:@"color"];. Thanks in advance. My email is nonamelive#&lt;a href="http://gmail.com" rel="nofollow"&gt;gmail.com&lt;/a&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nonamelive</dc:creator><pubDate>Tue, 25 Jan 2011 21:09:54 -0000</pubDate></item><item><title>Re: SOLID Class Design: The Dependency Inversion Principle</title><link>http://www.tomdalling.com/blog/software-design/solid-class-design-the-dependency-inversion-principle#comment-86332229</link><description>can a mouse burn my mother board ?? and how plz?</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rooor Gh</dc:creator><pubDate>Tue, 12 Oct 2010 14:30:12 -0000</pubDate></item><item><title>Re: Crack an MD5 hash in less than a second</title><link>http://www.tomdalling.com/blog/security/crack-an-md5-hash-in-less-than-a-second#comment-81032229</link><description>Not cracked in less than a second precomputed passwords are actully a password and its md5 hash stored in a database then a matching will be checked for the hash you entered.&lt;br&gt;&lt;br&gt;this could prove helpful if the password you choose is 7 chars or less in length, but to generate a database with 8 chars or more with alpha(small and capital)+numbers+special chars will take huge amount of space and also long generating time ...&lt;br&gt;&lt;br&gt;for an 8 chars pass of alpha either small or capital with numbers and up to 10 allowable special chars, the pass space is 72^8+72^7+72^6 .... + 72^1 ... assuming a minimal size of 40 bytes as space for the pass + the hash ... my computer wont give an answer for that ... but it will take multi TBs with weeks if not months of generating ....&lt;br&gt;&lt;br&gt;wither your pass is salted or not ... choose it to be 9 chars or more, with at least 1 number, 1 special char, 1 alpha capital and the rest as alpha small and your safe from getting your pass cracked as the chances of you being tricked into a false login or having your session stolen will be 1000s of time greater of your pass being cracked ....</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Adiga Hacker</dc:creator><pubDate>Sun, 26 Sep 2010 17:06:06 -0000</pubDate></item><item><title>Re: Why Inline Comments Are Generally a Bad Idea</title><link>http://www.tomdalling.com/blog/coding-styleconventions/why-inline-comments-are-generally-a-bad-idea#comment-72727060</link><description>Sage advice.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Dalling</dc:creator><pubDate>Fri, 27 Aug 2010 20:49:37 -0000</pubDate></item><item><title>Re: Why Inline Comments Are Generally a Bad Idea</title><link>http://www.tomdalling.com/blog/coding-styleconventions/why-inline-comments-are-generally-a-bad-idea#comment-72690484</link><description>"Don't just echo the code with comments -- make every comment count."&lt;br&gt;&lt;br&gt;"Make sure comments and code agree."&lt;br&gt;&lt;br&gt;"Don't comment bad code -- rewrite it."&lt;br&gt;&lt;br&gt;from "The Elements of Programming Style" by Kernighan and Plauger, 1974.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Greg Jorgensen</dc:creator><pubDate>Fri, 27 Aug 2010 17:55:59 -0000</pubDate></item></channel></rss>
