<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11516459</id><updated>2011-06-22T06:54:09.375-07:00</updated><title type='text'>Dino's Stuff</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11516459.post-2922349204395923050</id><published>2007-09-07T10:55:00.000-07:00</published><updated>2007-09-07T16:26:51.567-07:00</updated><title type='text'>Joel Spolsky, EBS and a Bit of Nyquist / Jolie</title><summary type='text'>I'm totally impressed by the evidence-based scheduling (EBS) proposed by Joel Spolsky and his team. Their approach to scheduling is so simple and usable that people may adventure to try it out. And then there is a good chance that the EBS will make accurate predictions.For accurate predictions, the project has to broken down into fine grained half-a-day sized tasksHuh, is that small print? In all</summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/2922349204395923050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=2922349204395923050&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/2922349204395923050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/2922349204395923050'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2007/09/joel-spolsky-ebs-and-bit-of-nyquist.html' title='Joel Spolsky, EBS and a Bit of Nyquist / Jolie'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-5550759663500103070</id><published>2007-08-31T14:40:00.000-07:00</published><updated>2007-08-31T16:32:52.124-07:00</updated><title type='text'>Interface, Behavior, Implementation</title><summary type='text'>I always break down my code in interface, behavior and implementation. Code structured this way scales up naturally while its dependencies are easy to manage. This breakdown also promotes code testability and reusability. But what always amazes me is that, when the code is structured correctly, one can achieve a lot with very little code. On the negative side of things, the code is fairly </summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/5550759663500103070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=5550759663500103070&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/5550759663500103070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/5550759663500103070'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2007/08/interface-behavior-implementation.html' title='Interface, Behavior, Implementation'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-116056013611415027</id><published>2006-10-11T02:48:00.000-07:00</published><updated>2006-10-11T02:52:25.196-07:00</updated><title type='text'>Bad Number Four: The Has-It-All-SwissKnife Anti-Pattern</title><summary type='text'>The Bad:All-in-one interfaces, which address multiple concerns. Such interfaces are likely to change. They force changes in unrelated code. Large interfaces create artificial dependencies.The Good:Segregated interfaces, with only one reason to change. When an interface changes, only relevant code changes.Let's implement a swiss-knife which has a blade, a scissors and a can-opener. As </summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/116056013611415027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=116056013611415027&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/116056013611415027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/116056013611415027'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2006/10/bad-number-four-has-it-all-swissknife.html' title='Bad Number Four: The Has-It-All-SwissKnife Anti-Pattern'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-115947191187770807</id><published>2006-09-28T12:30:00.000-07:00</published><updated>2006-09-29T09:07:26.973-07:00</updated><title type='text'>Bad Number Three: Can’t See the Tree for the Leaves … Never Mind the Forest</title><summary type='text'>The Bad: Making abstractions depend on implementations. Dependencies are inverted, instead of running from implementation towards interfaces they go backwards. The consequences are dreadful: very quickly the code becomes spaghetti like and each change request is going to look like a 9th Richter scale codequake.The Good: Have abstractions dependent only on other abstractions. Have implementations </summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/115947191187770807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=115947191187770807&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115947191187770807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115947191187770807'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2006/09/bad-number-three-cant-see-tree-for.html' title='Bad Number Three: Can’t See the Tree for the Leaves … Never Mind the Forest'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-115933925095323918</id><published>2006-09-26T23:34:00.003-07:00</published><updated>2006-09-26T23:57:35.866-07:00</updated><title type='text'>Bad Numer Two: Can't See the Forest for the Trees</title><summary type='text'>The Bad: Diving too soon into implementation details. The end result is a rigid design. Each time a new feature needs adding it’s a major piece of work. The rigidity derives from the fact that the design lacks abstraction.The Good: A good software design contains both abstractions and concrete artifacts. The first are interfaces and abstract classes, the second are concrete classes, also named </summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/115933925095323918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=115933925095323918&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115933925095323918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115933925095323918'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2006/09/bad-numer-two-cant-see-for_115933925095323918.html' title='Bad Numer Two: Can&apos;t See the Forest for the Trees'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-115923483557725506</id><published>2006-09-25T18:40:00.000-07:00</published><updated>2006-09-26T23:09:08.856-07:00</updated><title type='text'>Bad Number One:  Class Exhibitionism</title><summary type='text'>The Bad: Adding a non-public type to the signature of a public type. In order to get the code to compile, the non-public type has to be refactored to public, thus weakening the package level encapsulation. With time, if the same wrong is repeated enough, all classes and interfaces in the package become public. Package level dependencies quickly become unmanageable. All classes in the package are </summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/115923483557725506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=115923483557725506&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115923483557725506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115923483557725506'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2006/09/bad-number-one-class-exhibitionism.html' title='Bad Number One:  Class Exhibitionism'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-115920943503806260</id><published>2006-09-25T11:35:00.000-07:00</published><updated>2006-09-25T14:35:26.203-07:00</updated><title type='text'>The Good, The Bad and The Ugly</title><summary type='text'>Somebody requested me to post some examples of badly engineered code compared to well engineered one. It’s a fare request. Plus, writing about that makes things clearer for me too. It's a good learning exercises to explain why the bad are bad and why the good are good. So, the next few posts will focus on making that comparison.</summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/115920943503806260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=115920943503806260&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115920943503806260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115920943503806260'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2006/09/good-bad-and-ugly.html' title='The Good, The Bad and The Ugly'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-115873579018050946</id><published>2006-09-19T23:50:00.000-07:00</published><updated>2007-06-15T12:48:36.786-07:00</updated><title type='text'>Functional Programming in Java</title><summary type='text'>A simple interface can take a program a long way. public interface Expression {Expression evaluate();}This can a starting point for an implementation of functional programming in Java. Java has enough firepower to implement functional programming and dynamic typing. Following I've tried to provide an elegant solution to the above problem. The article discusses some of the design issues. The </summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/115873579018050946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=115873579018050946&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115873579018050946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115873579018050946'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2006/09/functional-programming-in-java.html' title='Functional Programming in Java'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-115316988979319295</id><published>2006-07-17T13:57:00.000-07:00</published><updated>2007-06-15T12:31:26.345-07:00</updated><title type='text'>An Unfit Industry</title><summary type='text'>In the last 16 years I've done software development for quite a few companies. I've seen good and well engineered code only in a couple of places. The norm is poor code.The software industry requires highly trained people. In almost all cases, senior developers have a B.Sc. or M.Sc. from an accredited university. Self-taught rarely works above the intermediate programmer level.  Education is </summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/115316988979319295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=115316988979319295&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115316988979319295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115316988979319295'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2006/07/unfit-industry.html' title='An Unfit Industry'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-115222677737739368</id><published>2006-07-06T15:57:00.000-07:00</published><updated>2007-06-15T12:32:38.567-07:00</updated><title type='text'>Managing Complexity</title><summary type='text'>After reading G. Chaitin's book "Meta Math - The Quest for Omega" (summarized in SciAmer ) I realized that in order to completely verify a software system it is required to employ resources which have at least the same complexity as the system itself. Complexity means effort(and that means $$$$), therefore an organization should spend the same effort for verification as it spends for </summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/115222677737739368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=115222677737739368&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115222677737739368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/115222677737739368'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2006/07/managing-complexity.html' title='Managing Complexity'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-112924787552777076</id><published>2005-10-13T16:41:00.000-07:00</published><updated>2005-10-13T16:57:55.533-07:00</updated><title type='text'>Functionality, Quality and Timeframe: Pick Two</title><summary type='text'>There are three things required to sell a product: functionality, quality and timeframe. You miss any of the three, next you don't have a selling product. In an perfect world, you would plan to cover all three aspects and then manage the development accordingly. In reality you cannot manage all three aspects. That puts hard boundaries on each of functionality, quality and timeframe. The resulting</summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/112924787552777076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=112924787552777076&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/112924787552777076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/112924787552777076'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2005/10/functionality-quality-and-timeframe.html' title='Functionality, Quality and Timeframe: Pick Two'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-112292822894127866</id><published>2005-08-01T13:29:00.000-07:00</published><updated>2006-01-02T20:10:53.690-08:00</updated><title type='text'>Variations on a Turing Halting Theme: Beyond the Turing Machine</title><summary type='text'>A program is a list of instructions. Each instruction is equivalent to a sequence of operations ran by a turing device. We can detail the program in its equivalent sequence of turing operations, which can be encoded as the equivalent turing machine. The output of a turing machine is a sequence of bits. That can be seen, of course, as another turing machine. With that as a prerequisite, can a </summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/112292822894127866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=112292822894127866&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/112292822894127866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/112292822894127866'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2005/08/variations-on-turing-halting-theme.html' title='Variations on a Turing Halting Theme: Beyond the Turing Machine'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-111173325525978872</id><published>2005-04-24T22:47:00.000-07:00</published><updated>2005-04-28T00:42:59.333-07:00</updated><title type='text'>Variations on a Turing Halting Theme: Superbug Hunting</title><summary type='text'>SuperBugs inherit their "intelligence" from the system complexity. It is the system complexity where we have to look for weapons against superbugs. Here are a few things programmers and their managers can do to prevent superbugs from occurring in the code and to bring down the ones that haunt complex systems.SuperBugs inherit their "intelligence" from the system complexity. It is the system </summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/111173325525978872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=111173325525978872&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/111173325525978872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/111173325525978872'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2005/04/variations-on-turing-halting-theme.html' title='Variations on a Turing Halting Theme: Superbug Hunting'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11516459.post-111108410039573904</id><published>2005-03-17T09:54:00.000-08:00</published><updated>2006-01-02T19:29:18.946-08:00</updated><title type='text'>Variations on a Turing Halting Theme: Bug Anatomy</title><summary type='text'>The turing halting problem: "Given a description of an algorithm and its initial input, determine whether the algorithm, when executed on this input, ever halts (completes). The alternative is that it runs forever without halting." [ wikipedia.org ] There is no such thing as bug free software. No matter how much quality we try to put into our software, bugs always seem to find their way back into</summary><link rel='replies' type='application/atom+xml' href='http://dinosstuff.blogspot.com/feeds/111108410039573904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11516459&amp;postID=111108410039573904&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/111108410039573904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11516459/posts/default/111108410039573904'/><link rel='alternate' type='text/html' href='http://dinosstuff.blogspot.com/2005/03/variations-on-turing-halting-theme-bug.html' title='Variations on a Turing Halting Theme: Bug Anatomy'/><author><name>Dino</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
