<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-9310397</atom:id><lastBuildDate>Wed, 05 Oct 2011 01:35:48 +0000</lastBuildDate><title>CoolBeans</title><description>Daniel Maly's blog</description><link>http://beansonrocks.blogspot.com/</link><managingEditor>noreply@blogger.com (Daniel Maly)</managingEditor><generator>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Coolbeans" /><feedburner:info uri="coolbeans" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-4918281070199251266</guid><pubDate>Sun, 04 Jul 2010 18:50:00 +0000</pubDate><atom:updated>2010-07-05T07:28:40.926-07:00</atom:updated><title>Add Simplicity</title><description>&lt;div&gt;SIMPLICITY needs to be constantly "added" to software solutions. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's very easy to create unnecessary complex solutions for variety of reasons. We engineers like to create &lt;i&gt;smart &lt;/i&gt;and &lt;i&gt;unique &lt;/i&gt;solutions, but can't always see where it is justified to do so. It can easily become an "ego thing" where too much of personality of author creeps into solutions. No one else then fully understands the solution, which becomes increasingly problematic with time. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Today I'm painting my garage. It is 30 degrees Celsius out there and all I want to do is to give the garage a new coat of paint. The builder has decided to add nice mouldings horizontally and vertically - every few feet. These mouldings while nice, increase my effort exponentially, as I have to paint them individually. 30 degrees heat is equivalent to a need to turn a project around quickly - under heat. Luckily I don't have to paint the garage that often, but I'd be in serious trouble had it been my software product.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another reason for complexity can be just the development landscape. Especially enterprise software can be a mine field of complexity. Variety of implementation technologies, techniques and patterns is augmented by infrastructure as colorful as United Colors of Benetton.&lt;/div&gt;&lt;div&gt;So just to display enterprise grade "Hello World" - what do we need to consider? Front End? Check. Load balancers? Check. Web tier? Check. App Server? Check. Database? Check. ORM? Check. Caching? Check. MQ? Check. EMB? Check. WS-*? Check. A few obscure protocols of choice? Check. Complex transactions? Check. N-Stack for redundancy? Check. One mainframe for "Hello" and another for "World"? Check.&lt;/div&gt;&lt;div&gt;OK, there is more but I'll stop here. The point is that the landscape is complicated as it is. We should not add any more complexity (or "smarts"), we need to strive for the opposite. Simplify, Simplify, Simplify.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is the same outside of enterprise software. The competition is tough, you need to be constantly adding value and looking for new opportunities. You need to be nimble an light on your feet. Ability to adapt and change is more important than validity of that "Great Idea" you once had.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The formula to success in software business is to Add Simplicity on every step of the way. If you think your killer idea will make your solution successful - dream on. Actually, WAKE UP, you are delusional and it is hurting you. Your idea has already been thought of by someone, somewhere. The difference is in execution. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Add Lightness" - &lt;a href="http://en.wikipedia.org/wiki/Colin_Chapman"&gt;Colin Chapman&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-4918281070199251266?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/WoKR8Sp1oHk/add-simplicity.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2010/07/add-simplicity.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-5996001064336195842</guid><pubDate>Sun, 04 Jul 2010 17:36:00 +0000</pubDate><atom:updated>2010-07-04T11:59:02.597-07:00</atom:updated><title>Software Art</title><description>Software engineering is part science, part art. The science part is all about making computers understand our instructions. Science are the algorithms, languages, execution environments and semantics. The science portion of software is fairly cut and dry and mastering that will give an ability to execute a given task. It is not a difference maker, though.&lt;div&gt;&lt;br /&gt;&lt;div&gt;The difference maker is the Art component of software. Software Art is all about how do we translate an idea into instructions that computers understand, while losing as little of the original intent and scope as possible. Software Art is encompassing both &lt;i&gt;What&lt;/i&gt; are we solving and &lt;i&gt;How&lt;/i&gt; are we doing it, in &lt;i&gt;exact &lt;/i&gt;measures of each. Software Art is the sweet science (doh!) of the Big Picture. It has some properties and mechanisms of its own, via which it impacts the results. The most important property of Software Art is SIMPLICITY.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;To be &lt;a href="http://beansonrocks.blogspot.com/2010/07/add-simplicity.html"&gt;continued &lt;/a&gt;...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-5996001064336195842?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/vrRaWNU-0Mw/software-art.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2010/07/software-art.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-8696740252871062402</guid><pubDate>Tue, 15 Jun 2010 16:01:00 +0000</pubDate><atom:updated>2010-06-15T09:19:03.929-07:00</atom:updated><title /><description>&lt;span style="font-size:130%;color:#ff9966;"&gt;&lt;strong&gt;&lt;span style="color:#ff6600;"&gt;SOAP, REST, Postmen and Telephones&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Once upon a time, SOAP was Simple Object Access Protocol.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_yQfJQkp6vHM/TBemZncZ5cI/AAAAAAAAAC0/Pbv390Zju8M/s1600/small+soap.JPG"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 138px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5483034030361929154" border="0" alt="" src="http://1.bp.blogspot.com/_yQfJQkp6vHM/TBemZncZ5cI/AAAAAAAAAC0/Pbv390Zju8M/s400/small+soap.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That is some 310 characters in simple enough message.&lt;br /&gt;What we &lt;u&gt;want&lt;/u&gt; to do is to execute a remote method such as:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Amount getAccountBalance (AccountNumber);&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;We also wish to ask a specific endpoint:&lt;em&gt; &lt;/em&gt;&lt;br /&gt;&lt;em&gt;http://example.org/account&lt;/em&gt; for the answer.&lt;br /&gt;&lt;br /&gt;The actual ask could be encapsulated in as few as 65 characters.&lt;br /&gt;&lt;br /&gt;In this example, our question’s payload grows ~5 times. The reason is that we are not ASKING A QUESTION; we create an intermediate message that does it, including complete explanation of the intent. We than sent the message to the other side, that will do nothing upon receiving the message – there is no business meaning to receiving a message, yet. The receiver has to open the envelope, read the message and reconstruct sender’s intent. Only then can the receiver actually ANSWER the question – but it proceeds to put the ANSWER into yet another vanilla envelop and send it back to the original sender, continuing the cycle.&lt;br /&gt;&lt;br /&gt;Consider following scenario: Jane wants to ask John “What time is it?”&lt;br /&gt;A SOAP service could do something like this:&lt;br /&gt;&lt;br /&gt;Figure 1 Wait a minute Mr. Postman!&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_yQfJQkp6vHM/TBelpsHoy6I/AAAAAAAAACs/QtC8z5aTuEQ/s1600/SOAP+mailman.JPG"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 204px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5483033206983281570" border="0" alt="" src="http://4.bp.blogspot.com/_yQfJQkp6vHM/TBelpsHoy6I/AAAAAAAAACs/QtC8z5aTuEQ/s400/SOAP+mailman.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This certainly works, but there is a significant overhead in this style of interaction. Think of all the logistic and recycling needs! Also, there are dangers lurking in the shadows: Ink may dry up. Letterhead paper may run out. Or we maybe out of stamps!&lt;br /&gt;&lt;br /&gt;It works, but we could do better..&lt;br /&gt;&lt;br /&gt;Imagine a phone conversation:&lt;br /&gt;&lt;br /&gt;Figure 2 Mr. Marconi? Hello?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_yQfJQkp6vHM/TBekuLqRoMI/AAAAAAAAACc/x7jR2vJOjSk/s1600/rest+phone.JPG"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; FLOAT: left; HEIGHT: 106px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5483032184657912002" border="0" alt="" src="http://3.bp.blogspot.com/_yQfJQkp6vHM/TBekuLqRoMI/AAAAAAAAACc/x7jR2vJOjSk/s320/rest+phone.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There is no reconstruction of sender’s intent needed, the receiver reacts directly to sender's QUESTION.&lt;br /&gt;&lt;br /&gt;This is much like RESTful style&lt;br /&gt;&lt;br /&gt;HTTP GET www.john.org/time&lt;br /&gt;HTTP/1.1 OK 200&lt;br /&gt;10 AM&lt;br /&gt;&lt;br /&gt;~&lt;br /&gt;The proposition of SOAP style messaging is that it can abstract communication details. SOAP message is a SOAP message is a SOAP message. A letter can travel all around the world. It used to be that letters were the only way how to communicate remotely.&lt;br /&gt;&lt;br /&gt;But SOAP also abstracts the actual QUESTIONS. We exchange envelopes of “mysterious content” and reconstruct senders and receivers intent encapsulated within on each respective side. OVER AND OVER AGAIN.&lt;br /&gt;&lt;br /&gt;The main benefit I see is that SOAP is transport agnostic. I am not tied to HTTP for my Web services. Is it worth the price? Is the cost benefit justifiable? I don’t think so. Especially when I introduce other WS-* concerns, which snowball INTO my SOAP message, I quickly come to a need for dedicated midle ware, effective compression and transformation mechanisms etc. I’ll take SIMPLICITY, instead.&lt;br /&gt;&lt;br /&gt;In RESTful style, we can ask more direct questions. The question is expressed directly to the RESOURCE, not through auxiliary message. There’s little need to keep introducing additional, verbose, xml based mechanism “encapsulate” the QUESTION and make it generic “Message”. Understanding of a Resource IS generic already, just as Jane knows what time is, so she can ask the QUESTION about it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-8696740252871062402?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/EpuJqjfPWps/soap-rest-postmen-and-telephones-once.html</link><author>noreply@blogger.com (Daniel Maly)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_yQfJQkp6vHM/TBemZncZ5cI/AAAAAAAAAC0/Pbv390Zju8M/s72-c/small+soap.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2010/06/soap-rest-postmen-and-telephones-once.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-5855029899990576415</guid><pubDate>Mon, 14 Jun 2010 20:36:00 +0000</pubDate><atom:updated>2010-06-14T14:28:14.263-07:00</atom:updated><title>WS - Reuse - Simplicity - Consistency</title><description>Reuse in Web Service world. I think about reuse from the perspective of two major architectural styles - Message based (SOAP) and &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;RESTful&lt;/span&gt;. It seems to me that SOAP based architecture is poor fit when we aim for &lt;strong&gt;REUSE&lt;/strong&gt;, from its very foundation.&lt;br /&gt;&lt;br /&gt;Let's have a look at the building blocks of both styles (pic below), with a bit of a twist. Clearly, SOAP style  ignores the full &lt;a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete"&gt;CRUD&lt;/a&gt; &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-error"&gt;API&lt;/span&gt; of its most usual transport protocol - &lt;a href="http://en.wikipedia.org/wiki/HTTP"&gt;HTTP&lt;/a&gt;. Instead of using full set of HTTP &lt;span id="SPELLING_ERROR_2" class="blsp-spelling-error"&gt;API&lt;/span&gt; - GET, POST, PUT and DELETE, it uses POST only - just as transport gimmick.&lt;br /&gt;&lt;br /&gt; There maybe some good reasons for this, but what it also inherently means is that this very CRUD capability of HTTP needs to be replicated on the service &lt;span id="SPELLING_ERROR_3" class="blsp-spelling-error"&gt;API&lt;/span&gt; - after all CRUD change is what we want to do with the service.&lt;br /&gt;Each service now has to re-implement a definition of CRUD capability by itself!  Just by definition of this information interchange, we mandate waste. We do not use what we have and invent something new for the same purpose.&lt;br /&gt;&lt;br /&gt;Not only is this an replication and overhead on the service provider side, it also causes an overhead on service consumer side, where each consumer pretend they do not know what they want to do, must "learn" (i.e. discover) the capability set of each service, map it onto their original intent, &lt;span id="SPELLING_ERROR_4" class="blsp-spelling-corrected"&gt;exchange&lt;/span&gt; messages with the service provider and interpret the results. So we have reimplemented the same capability, just made it more complex.&lt;br /&gt;&lt;br /&gt;Compare that with simplicity of &lt;a href="http://en.wikipedia.org/wiki/Restful"&gt;&lt;span id="SPELLING_ERROR_5" class="blsp-spelling-error"&gt;RESTful&lt;/span&gt; &lt;/a&gt;approach. No auxiliary messages, no discovery of &lt;span id="SPELLING_ERROR_6" class="blsp-spelling-error"&gt;APIs&lt;/span&gt;, each service has the same set of capabilities - HTTP methods. These methods than "transfer" "service state representations" (an instance of resource) from consumer to provider. To know WHERE to transfer and to know WHAT is the relationship of resources - there are &lt;span id="SPELLING_ERROR_7" class="blsp-spelling-error"&gt;URIs&lt;/span&gt;, to know HOW to transfer- &lt;span id="SPELLING_ERROR_8" class="blsp-spelling-error"&gt;there're&lt;/span&gt; the methods of HTTP. To navigate and relate, there's hypertext. No fancy &lt;span id="SPELLING_ERROR_9" class="blsp-spelling-corrected"&gt;middle ware&lt;/span&gt; needed, short and sweet information exchange using the battle tested infrastructure of &lt;a href="http://en.wikipedia.org/wiki/Www"&gt;WWW&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now that is some sweet &lt;strong&gt;REUSE - SIMPLICITY - CONSISTENCY!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_yQfJQkp6vHM/TBaTWwWIEeI/AAAAAAAAACU/_2nHNd0LNsg/s1600/WS-Reuse.JPG"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 311px; FLOAT: left; HEIGHT: 320px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5482731615514268130" border="0" alt="" src="http://4.bp.blogspot.com/_yQfJQkp6vHM/TBaTWwWIEeI/AAAAAAAAACU/_2nHNd0LNsg/s320/WS-Reuse.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-5855029899990576415?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/cBAHf0HHjt8/ws-reuse-simplicity-consistency.html</link><author>noreply@blogger.com (Daniel Maly)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_yQfJQkp6vHM/TBaTWwWIEeI/AAAAAAAAACU/_2nHNd0LNsg/s72-c/WS-Reuse.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2010/06/ws-reuse-simplicity-consistency.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-8991271061682381625</guid><pubDate>Tue, 27 Apr 2010 18:02:00 +0000</pubDate><atom:updated>2010-05-26T09:02:06.240-07:00</atom:updated><title>Ford Flex take 2</title><description>I previously &lt;a href="http://beansonrocks.blogspot.com/2009/10/ford-flex-test-drive.html"&gt;wrote&lt;/a&gt; about my experience with driving rented Ford Flex from Toronto to New York and back. There is an UPDATE ... .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2010 Ford Flex &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;Ecoboost&lt;/span&gt; now finds home in my driveway. The trusty &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-error"&gt;Duratec&lt;/span&gt; 3.5L V6 makes way to a new 3.5L &lt;span id="SPELLING_ERROR_2" class="blsp-spelling-error"&gt;Ecoboost&lt;/span&gt; engine. Twin turbocharged, direct injection mill is good for 355 hp and 350 lb ft of twist that is channeled to all four wheels. The ride is lower to the ground, &lt;span id="SPELLING_ERROR_3" class="blsp-spelling-error"&gt;susspension&lt;/span&gt; is stiffer, steering wheel feedback (&lt;span id="SPELLING_ERROR_4" class="blsp-spelling-error"&gt;EPAS&lt;/span&gt;) is much improved and the 6speed automatic transmission much better match with the engine than in the rented model. The dash issue of glowing see of green buttons I complained about previously is mitigated by large screen navigation system, which is also used to control the sound, climate, phone, 10G of &lt;span id="SPELLING_ERROR_5" class="blsp-spelling-error"&gt;HDD&lt;/span&gt; for &lt;span id="SPELLING_ERROR_6" class="blsp-spelling-error"&gt;entertainement&lt;/span&gt; or backup camera. Microsoft's SYNC is still doing a great job in providing voice interface to most of the features.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Features galore indeed, but you can always turn most of it off, open the sunroof, push on the steering wheel mounted paddle shifter do drop a gear, step on the gas pedal and ... GO! There's no thinking twice about it anymore, the peak 350 ft lbs of torque are on tap almost instantly (from 1500rpm), pushing you into the seat, while the sprint from 0-60mph comes in just 6.5 seconds. Very quick and effortless. And this is a large seven &lt;span id="SPELLING_ERROR_7" class="blsp-spelling-error"&gt;seater&lt;/span&gt; we are talking about! The speed maybe something to get used to, Flex is a very quiet and comfortable car and it is very easy to &lt;span id="SPELLING_ERROR_8" class="blsp-spelling-error"&gt;seamlessy&lt;/span&gt; cross into the illegal speed range if not checking the &lt;span id="SPELLING_ERROR_9" class="blsp-spelling-error"&gt;speedo&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Another great aspect of the car is the ability to cross large distance without tiring either the driver or &lt;span id="SPELLING_ERROR_10" class="blsp-spelling-corrected"&gt;passengers&lt;/span&gt;. It is a great family GT car. That kind you can pack all the camping gear into, car seats for the little ones, seat two more adults in comfort (grandparents) and go for a weekend trip without worrying if the destination is couple hundred kilometers closer or further. Or fold all the seats flat and load up half of &lt;span id="SPELLING_ERROR_11" class="blsp-spelling-error"&gt;IKEA&lt;/span&gt; into it. Or take all the &lt;span id="SPELLING_ERROR_12" class="blsp-spelling-error"&gt;sippy&lt;/span&gt; cups and toys out and go enjoying the &lt;span id="SPELLING_ERROR_13" class="blsp-spelling-corrected"&gt;on-ramps&lt;/span&gt; and back roads. Flex can do it all and do it very well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-8991271061682381625?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/3G5ceg-xErs/ford-flex-take-2.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2010/04/ford-flex-take-2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-939699372532809751</guid><pubDate>Wed, 25 Nov 2009 18:31:00 +0000</pubDate><atom:updated>2009-11-25T10:31:45.808-08:00</atom:updated><title>From the pen of Jake Maly</title><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:11.0pt;font-family:Calibri"&gt;I pooped well this morning. Halmony washed me up nicely.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:11.0pt;font-family:Calibri"&gt;I came downstairs sans diaper &amp;amp; pants, and decided to go to wake sleeping Harabujy up. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:11.0pt;font-family:Calibri"&gt;Harabujy pleasantly woke up by me. Since I was feeling extra happy with the nice bowel movement, I decided to sit on Harabujy’s lap on his bed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:11.0pt;font-family:Calibri"&gt;Harabujy and I were chilling. But then something strange &amp;amp; stinky happened behind me. Harabujy and I both got shocked and we started screaming together.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:11.0pt;font-family:Calibri"&gt;Halmony seems busy today washing lots of things.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-939699372532809751?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/Bn06lhsZuwg/from-pen-of-jake-maly.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>2</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2009/11/from-pen-of-jake-maly.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-1729759198535539125</guid><pubDate>Wed, 14 Oct 2009 14:55:00 +0000</pubDate><atom:updated>2009-10-14T10:41:47.409-07:00</atom:updated><title>Ford Flex Test Drive</title><description>Spec: 2010 Ford Flex, AWD Limited, 3.5l &lt;a href="http://www.twitpic.com/lhvda"&gt;www.twitpic.com/lhvda&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Having an extended family of six and desire for a road trip from Toronto to NYC during Thanksgiving weekend, the trusty '08 Altima was relegated to a driveway rest and we rented a Ford Flex. I was quite intrigued by the vehicle before, so I was quite happy I got to rent it for a long drive.&lt;br /&gt;&lt;br /&gt;It's a big car. It feels like a big car inside, it drives like a big car. Lot's of toys inside, Sync is fantastic, great seats, great versatility, good handling and comfort, great HID projectors up front, LEDs in the rear. So many good things that the shortcomings are even more disappointing. In sum, it feels like a two step car. Turn the wheel and wait - it shall turn. Step on the brakes and wait - it shall break. Step on the gas and wait - it shall accelerate. There is no progressin, no modulation. It's on or off. Anemic steering feel negates very solid suspension setup. Lazy (very) 6sp automatic transmition does absolutely no favors to the 262hp V6. The important instruments are too small - speedo. There's a million buttons (so it seems) on the console &lt;a href="http://twitpic.com/lhvgi"&gt;http://twitpic.com/lhvgi&lt;/a&gt; and it does no favours to the driver on a long drive through the night and rain। Great functionality, good fit and finish but lacking ergonomics - I was really distracted by the flowing field of green buttons when needing to adjust temperature and fan speed (toggle+button action) after 4hrs of driving. What's with the single stick with turn signals, highbeams, lowbeams, front wipers rear wipers and windsheeld washer? Couldn't Ford fit even more functions in there :-)?&lt;br /&gt;The writeup may sound a bit negative, but I really like what this the car COULD BE as whole. Great handling, good power, great  utility and comfort in a package seating 6 people. If the next iteration fixes some of the issues and puts a bit more GT and refinement into the car (which I hope the EcoBoost version already does, to some extent), I'll put it towards the top of my shopping list for large family car, regardless of make.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-1729759198535539125?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/lqUQS1IPc00/ford-flex-test-drive.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2009/10/ford-flex-test-drive.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-8903878498806287042</guid><pubDate>Tue, 08 Sep 2009 18:38:00 +0000</pubDate><atom:updated>2009-09-08T12:15:31.871-07:00</atom:updated><title>Agile Done Right</title><description>&lt;span class="Apple-style-span"   style="  ;font-family:Verdana;font-size:13px;"&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Agile as a software development methodology [&lt;a href="http://www.agilealliance.org/"&gt;http://www.agilealliance.org/&lt;/a&gt;]. The empowering of teams, the productivity of team which surpasses combined efforts of individuals. The starter fluid to change and improvement. The results orientation. Constant iterations and reflection. All of it provides tremendous potential for an organization to deliver outstanding results.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;It can be a tall order to influence the way an organization works. I work for a large financial institution and rigid, risk averse environments are typically hard to change. But I'm proud that our own "Agile Mix" is successful and finding its way to broader and broader audience. I was the main advocate, proponent and preacher of Agile, at the beginning. Not so lonesome, anymore. Given trust and a seed team, we have not only developed out own "Agile Mix". We have also delivered the product with zero variances detected through out QA, on time, on budget. Our plans and estimates were aggressive and REAL. The team loved working in high paced and stimulating setup. They loved owning the product. &lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Everybody listens and learns from success stories. There is no better way to convince anybody that Agile works, other than when teams love it, while superb results are delivered.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Agile done right will evolve organically, with thin layer of "impediments removal" on top of it. The core values need to be reiterated and reflected in each team's decision. The particular flavor of Agile - &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;XP&lt;/span&gt;, Scrum, Lean doesn't quite matter. All of the different methodologies provide yet another set of tools we can choose from, with useful variation in approach to achieving the same thing. &lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;To make Agile work in any organization, you need results. Go get a team and DO IT. No matter the scale of the project, doing it is the only way to figure out what works in your environment and what doesn't. Your "Agile Mix" will always change and evolve - that's a good thing. Set the expectations right, be 100% transparent with all stakeholders. Apply the same rules on the process, which you'd apply on the product. Iterate. Iterate. Iterate. &lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-8903878498806287042?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/TzJGPQ0-CTs/agile-done-right.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2009/09/agile-done-right.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-572816244056890324</guid><pubDate>Wed, 02 Sep 2009 18:13:00 +0000</pubDate><atom:updated>2009-09-08T11:32:52.733-07:00</atom:updated><title>My Work</title><description>&lt;span class="Apple-style-span"   style="  ;font-family:Verdana;font-size:13px;"&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Craftsmanship:&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;The paramount of my efforts is to be a good craftsman. Regardless if I'm replacing a light bulb, designing software, doing R&amp;amp;D, strategic planning  or giving presentations and executive summaries. I want my work to be meaningful. I want to know it is making a difference. I want to keep getting better at it. Day in and Day out. [&lt;a href="http://manifesto.softwarecraftsmanship.org/"&gt;http://manifesto.softwarecraftsmanship.org/&lt;/a&gt;]&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;I like &lt;a href="http://www.agilealliance.org/"&gt;Agile&lt;/a&gt; software development methodology very much. It helps in making good craftsmen - it makes work personal. I blog about Agile &lt;a href="http://beansonrocks.blogspot.com/"&gt;here&lt;/a&gt;.  &lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;The rest is some tech stuff I enjoy working with, in alphabetical order:&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Android&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Software Architecture&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Best Practices&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Software Design&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Enterprise Portals&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;J2EE&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Mainframes and NonStops&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;OOA and OOD&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;OSGi and all things modular&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;RIA&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Services and SOA&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Strategy and Planning&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-572816244056890324?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/0-xzpskSFsc/my-work.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2009/09/my-work.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-5251016460848638258</guid><pubDate>Wed, 19 Aug 2009 14:44:00 +0000</pubDate><atom:updated>2009-08-19T09:45:08.453-07:00</atom:updated><title>Browser as a Platform, HTML 5, WebSockets</title><description>&lt;div&gt;&lt;div&gt;In 2009 QCon London presentation "Browser as a Platform" Mozilla’s own Ben Galbraith and Dion Almaer &lt;a href="http://www.infoq.com/presentations/Browser-as-Platform-Galbraith-and-Almaer"&gt;presented &lt;/a&gt;their view of current state and potentials for the future state-of-the art in pure browser based applications. Very enthusiastic and entertaining presentation, lots of familiar icons and visuals from many organizations, some Bespin tease, all great stuff and fun. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But it got me thinking more about aspects of HTML5 that got very limited spot light (at a bit unfortunate cost of constant comparison to Flash and other plugins) - WebSockets and Server (sent) Events. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;WebSockets and Server Events should become the real game changers of the browser world. Rendering technology (HTML DOM and JavaScript) issues and browser issues (threading et al.) are mere growing pains of an infant, but it is when we start looking at (and talking about) full duplex communication capability from the browser (WebSockets) and about standardized browser "PUSH" Comet style (Server Events), we'll know we've reached the maturing phase of an adolescent first class, full fledged presentation technology.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Communication is the key.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;HTTP served us great as an information exchange protocol over many years, achieved great standardization and ubiquitous penetration. It enabled new architectural styles such as SOA; it is deeply reflected in REST, among many others. It also held the information flow back a little bit, which could be good and also bad. With browsers, it held it back. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Post-back driven web applications of earlier times, even with AJAX "wizardry" of late have kept the browser from becoming first class player in presentation technologies. Not that there are not great examples to the contrary, there are many amazing applications delivered in plain browser client. &lt;/div&gt;&lt;div&gt;But any first class player has to be able to achieve this in a simple, easy and replicable manner. It maybe simple, it is not always easy and not very often replicable to deliver browser application where user doesn't notice there is a browser involved and is interacting with the system in natural and intuitive way. Applications need to be specially tailored, users need to be trained.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is the limited information flow paradigm that has held the browser from becoming first class player, capable of delivering of any application to all users, even more than the browser and presentation issues. After all, simpler presentation is often better and as great as Canvas and SVG (RIP?) are, their utility is centered around specialized set of applications.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But in any case, only after the information flows naturally to seamlessly enable application's flow and support user's thought process, can we present the information effectively and without technology infused stops and gaps. That is why I see the changes introduced by WebSockets and Server Events as profound and truly significant additions to the capabilities of browser based applications.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We'll still probably hear more about the presentation aspects, JavaScript Engines and threading tweaks of the next generation browser and standards, but the more we hear, talk and focus on the information flow features, the further stage has been reached on the Hype Cycle of "New" Technology.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-5251016460848638258?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/kpAPTAI0vJI/browser-as-platform-html-5-websockets.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2009/08/browser-as-platform-html-5-websockets.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-8194915329409965109</guid><pubDate>Fri, 03 Jul 2009 20:25:00 +0000</pubDate><atom:updated>2009-07-07T07:24:41.412-07:00</atom:updated><title>OSGi Complexity?</title><description>&lt;div&gt;Functional decomposition and modularization of applications is a popular topic. Instead of building singular, monolithic applications, we can build little Bundles or Modules that represent business functions and put them together Jigsaw Puzzle style.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The idea is that any overhead of such an approach is greatly offset by the benefits of encapulations - from software development to enterprise function placement.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example, an application can "Shake bread crumbs with some chicken" and "Bake dinner", these two concerns are agnostic of each other, but can be composed into business flow "Shake 'N Bake". Or other business flows can be "Shake 'N Freez" or "Defrost 'N Bake". &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anytime we need to add/remove/change anything in the application we know exactly the place where the logic lives - as opposed to hunting throughout large codebases of potentially manyy application. It works great for testability, enables effective refactoring and short iterations.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://en.wikipedia.org/wiki/OSGi"&gt;OSGi&lt;/a&gt; has done a terrific job in championing of the modular concerns. But OSGi implementation can get quite complicated, for a reason that is not part of its core value proposition ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Large portion of OSGi complexity comes from the assumption that the whole system is highly dynamic - OSGi bundles can come and go during the runtime and the system needs to constantly adapt. That is great and usefull for certain applications - I imagine telco world is a great example, but for most applications, this ability introduces too much complexity. Take the stallwart of OSGi examples Eclipse - the dynamic bundle update (called Plugins) is not used everyday and most new bundles force restart of the application after update, anyway.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's a solution: As soon as I replace "highly dynamic" with "fairly static" environment assumptions, it gets much simpler. I know that my application will either "shake" or "bake" sometime during application's runtime, &lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;anyway&lt;/span&gt;. I can live without introducing brand new business functions (say brand new operation "DeepFry") while the application is running.  Now I could concentrate on the real issue at hand - modularity and functional decomposition, which is the core reason I arrived at OSGi gates. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Most of the OSGi complexity goes away with this change. It is a simple change, but it has far reaching impact. Bundles still have dynamic lifecycle, the major change is that all the Bundles are present from the start of the application and the application doesn't have to deal with Bundles exiting or brand new Bundles entering the application on a whim.  Maybe this could be called SimpleOSGi. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;Thanks to Ricky Bobby and Cal Naugton Jr. for inspiration in naming business functions examples. Dear Kraft Foods, please do not sue me.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-8194915329409965109?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/4x8aPqR5Iuc/osgi-complexity.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>3</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2009/07/osgi-complexity.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-6159313546241778941</guid><pubDate>Fri, 03 Jul 2009 18:54:00 +0000</pubDate><atom:updated>2011-10-04T05:50:57.589-07:00</atom:updated><title>Name Things Right</title><description>&lt;span class="Apple-style-span"   style=" color: rgb(51, 51, 51);  font-family:'trebuchet ms';font-size:13px;"&gt;&lt;div class="deleteBody"&gt;&lt;p class="postBody"&gt;In Object Oriented languages, Class represents a definition of what will become an Object at runtime. In some languages (Smalltalk, Ruby) Class can be a runtime Object as well, in others it is more static formula (Java, C#). It always contains the prescription, the recipe. A Class may say: Add two arms, body, head and two legs to create a Person. It can also say that Person can speak. &lt;/p&gt;&lt;p class="postBody"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="postBody"&gt;When software runs, two instances of Person Object are created and they can speak with each other.We try to model the problem domain which is the target of our software as collection of Objects that can interact with each other (i.e. two Persons can speak with each other). This added level of abstraction helps us understand the domain better – we do not primarily focus on the details of sound wave exchange that is human speech, we primarily focus on the fact that two Persons can speak with each other. This way we do not get lost in details from the start, we find a place to put appropriate logic and move on. &lt;/p&gt;&lt;p class="postBody"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="postBody"&gt;The trick to software modeling is the ability to “Name Things Right”. If I can give names to all the actors in my domain I have created all the Classes. Then I decide what the actors (now Classes) can do in form of methods and I’m done creating my domain model. If I can not name my actors, I do not understand the problem domain enough to try to solve it with software. I have to go back and get more information, remodel and refactor. It takes several iterations before the problem domain is solved. &lt;/p&gt;&lt;p class="postBody"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="postBody"&gt;When “Utility Classes” rear their ugly heads: Utility Classes are convenient holder of unrelated methods, often accessed statically. I’m convinced that proliferation of Utility Classes is evil in Object Oriented software. It is clear indication that we have failed to model our domain correctly and started to put methods into one size fits all bag. Strobe lights should go off and sirens should sound every time this happens – just to attract attention. “Name Things Right” and your design will be conducive for beautiful code to happen. &lt;/p&gt;&lt;p class="postBody"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="postBody"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="postBody"&gt;Hat tip to Derek Zoolander for “Name Things Right” inspiration.&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-6159313546241778941?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/15M4fZGjgJ8/utility-classes-in-object-oriented.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2009/07/utility-classes-in-object-oriented.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-8162218282285039745</guid><pubDate>Fri, 26 Jun 2009 15:13:00 +0000</pubDate><atom:updated>2009-06-26T09:24:09.965-07:00</atom:updated><title>Twitter this, Twitter that II.</title><description>I found about Michael &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Jackson's&lt;/span&gt; death last night, via Twitter. RIP King of Pop. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;Even though&lt;/span&gt; I never was a proper fan, I think he's been a major factor in the culture of late 20&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;th&lt;/span&gt; century. The music will live on.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;Suddenly&lt;/span&gt; it became a bit clearer what is the magic of Twitter, for me. Information comes to me, I do not actively come to it. I have no idea what I'm going to see each time I open &lt;a href="http://en.wikipedia.org/wiki/TweetDeck"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;TweetDeck&lt;/span&gt;&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is also known as the &lt;a href="http://en.wikipedia.org/wiki/Hollywood_Principle"&gt;Hollywood Principle&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Inversion_of_Control"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;IOC&lt;/span&gt; &lt;/a&gt;. It's used heavily  in the software world and the main benefit is the removal of coupling among systems, computers, components, classes or files. One part of system doesn't assume anything about others, it &lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;declares&lt;/span&gt; its capabilities and lets others use it. The less coupling, the less assumptions, the less plumbing, the cleaner and simpler designs and lesser potential for mistakes. It makes it easier to develop great software. It also makes it easy to understand.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;IOC&lt;/span&gt; has caused a shift in the software development paradigms and it's also changing the way we digest information in general. Applications like Twitter are  trully &lt;b&gt;I&lt;/b&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;nverting&lt;/span&gt; the &lt;b&gt;C&lt;/b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;ontrol&lt;/span&gt; of &lt;b&gt;I&lt;/b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;nformation&lt;/span&gt; flow from "browse and search" to "publish and subscribe".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Twitter may come and go, but it has moved the paradigm shift along a bit. It didn't start the shift, either, there's been &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;bss&lt;/span&gt; and newsgroups and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;&lt;a href="http://en.wikipedia.org/wiki/RSS_(file_format)"&gt;rss&lt;/a&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/RSS_(file_format)"&gt; &lt;/a&gt;feeds long before it. I used to think &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;rss&lt;/span&gt; is the greatest, just like I do about Twitter, now. Rss reader is still one of the most heavily utilized applications on my smart phone. Twitter is simpler, faster and more engaging. Search results from &lt;a href="http://search.twitter.com/"&gt;search.twitter.com&lt;/a&gt;&lt;a href="http://search.twitter.com/"&gt;&lt;span class="Apple-style-span"  style="color:#99FFFF;"&gt; &lt;/span&gt;&lt;/a&gt;are great complement to Google search. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Any (web) application needs to be aware of this shift. Information access needs to be simplified, simplified, simplified. It is not that there's too much of information, it is that it's too tedious to get to. If it's not simple, I'm not interested - and I'll never know how great a product you might have.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-8162218282285039745?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/rRLiZDszDHE/twitter-this-twitter-that-ii.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2009/06/twitter-this-twitter-that-ii.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-7756712880137198464</guid><pubDate>Thu, 25 Jun 2009 15:14:00 +0000</pubDate><atom:updated>2009-06-25T08:44:29.523-07:00</atom:updated><title>What's for lunch</title><description>That's a reccuring question, every day I forget to "brown bag it".  I wish there was a simple way I could be suggested what is the current soup du jour by local eateries. I don't want to perform an extensive (re)search, just recieve short notification that "Wednesday Wings are 20c each @ Lawrence Wings". I wish to receive such notification only on Wednesdays, and only if I'm in the vicinity of Lawrence Wings. Just that and not much else. Sounds both simple enough and exciting to do. Bit of RoR for the web front end, android extension for mobile , Twitter API for the broadcast ...  . Why don't I do it?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are many applications centered on food industry - Urban Spoon, Open Table, Yelp, Menu Palace ... and it's still a hedeache to order pizza online in Toronto (except from PizzaHut, if you are into it). Lot of great apps, but I feel that each is trying to do too many things at once, forgetting to satisfy the ONE need, first and foremost. My need is to find What's for lunch. Period.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I find myself to have lower threshold for the amount of information I'm willing to digest, than I used to have. I want to find what I'm looking for, not much more. I don't browse around much anymore, I search and I'm gone. The one way to make me stick around (and eventually monetize on me) is to give me what I'm looking for first, than weave a web of distraction around it. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-7756712880137198464?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/10rCCNS7QUY/whats-for-lunch.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2009/06/whats-for-lunch.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-9059701670486294867</guid><pubDate>Fri, 29 May 2009 19:25:00 +0000</pubDate><atom:updated>2009-06-25T07:41:17.996-07:00</atom:updated><title>STICK TO IT</title><description>There are many approaches to designing and developing software. There are even fancy names to each. Structured or Procedural, Data Centric, Domain Driven, Event Driven, Object and Aspect Oriented ... and more. Add any implentation language of choice to the mix and stir well. People may tell you that some are better than other, some are practical, and others are just playgrounds for theory obsessed folks wearing funny hats. Some are old school and others are the new kids on the block.  There are as many opinions on what it all means as many people get involved in discussions revolving around these topics. Books have been written, countless presentation were sat through.&lt;br /&gt;&lt;br /&gt;We still keep discussing which the best way to build software is. The answer is simple: It doesn't quite matter. Potato, Potatoe. Different hats for different heads. Different tools for ... different folks. I may have mixed up my analogies a bit. Ultimately it is the type of job that has to determine the correct approach (insert another toolbox analogy).&lt;div&gt;&lt;br /&gt;The point is once you've chosen one approach, methodology or philosophy - for a particular task - STICK TO IT. It is the "dog pretending to be a cat" solution that brings out the worst in any given approach, combined. It is because each paradigm can be very different in nature, have different value system, different focus. And these do not mix well, especially if we try to make &lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;one look like the other.&lt;/span&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The final product may look OK - on the first take, but sure won't taste great (insert the Cat and Dog making a cake tale details). It will have the worst traits from each approach involved, under such circumstances. Our OO code will be overun with inheritance, our Procedures interrupted without any apparent reason, our Domain Objects will not represent any business reality, our Pointcuts will attempt to crosscut accros dimensions.&lt;br /&gt;&lt;br /&gt;So show your colors. Wear a 'God thought in Erlang' T-shirt. Spray paint 'Shuttles run on Procedural' all over you cubicle. Be critical but also proud of your decision despite what is the soup du jour. Beautiful code can happen using any approach.  Choose what is the best for your team and project and STICK TO IT. Once you are done, re-evaluate your decisions, explore new teritories and get closer to the cutting edge. Then STICK TO THAT until you are done again.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-9059701670486294867?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/_r_tuhmCeRw/stick-to-it.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2009/05/stick-to-it.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-5440049802503547611</guid><pubDate>Fri, 29 May 2009 19:12:00 +0000</pubDate><atom:updated>2009-05-29T12:22:45.723-07:00</atom:updated><title>Twitter this, twitter that</title><description>&lt;div&gt;As a believer in the goodness of disruptive nature of new *stuff (well, mostly limited tech), I've been following Twitter for quite some time (@danielssonn).  Using a cell phone with Windows Mobile (don't ask), good Twitter client is hard to find. Now I want to try the Twikini client, and the good folks are giving 'em for free! All you have to do is publish a blog post, following few simple &lt;a href="http://www.trinketsoftware.com/twikini/purchase2.aspx"&gt;rules.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(80, 80, 80); font-family: Verdana; font-size: 11px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;p&gt;&lt;a href="http://www.trinketsoftware.com/Twikini"&gt;Twikini&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.trinketsoftware.com/Images/Twikini03.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 322px; height: 322px;" src="http://www.trinketsoftware.com/Images/Twikini03.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-5440049802503547611?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/JSiG-OM853Q/twitter-this-twitter-that.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2009/05/twitter-this-twitter-that.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-5250229899986452401</guid><pubDate>Mon, 04 May 2009 13:55:00 +0000</pubDate><atom:updated>2009-07-03T11:42:38.786-07:00</atom:updated><title>Kids and books</title><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Georgia;font-size:8.5pt;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;This morning in the neighborhood was beautiful. Sun was shinning, birds chirping and the tulips blooming in plethora of colours. The neighbour’s son was dragging his huge backpack off the front steps, on the way to school. One of the last generations to have to do this, I hope. Once the time comes for my son Jake, he’ll be travelling light. The word on the street is that Amazon is to announce textbook size Kindle, soon. In the years to come, EBook readers such as the Kindle will become ubiquitous, come down in price and serve the broadest content of written word. There’s still time for this to happen, Jake is not even two years old. But if I see him dragging his backpack full of books off the doorstep, on his way to school, I’ll give the Amish thing a try.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"  style="font-size:48px;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Georgia;font-size:8.5pt;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;C&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:16px;"&gt;&lt;span style="font-family:Georgia;font-size:8.5pt;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;urrent Kindle model: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Generation/dp/B00154JDAI"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Generation/dp/B00154JDAI&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-5250229899986452401?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/-ifJ8RHK4xQ/kids-and-books.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2009/05/kids-and-books.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-1138150067476572971</guid><pubDate>Wed, 29 Oct 2008 16:49:00 +0000</pubDate><atom:updated>2009-07-03T11:42:56.125-07:00</atom:updated><title>What "Done" means?</title><description>&lt;style&gt;@font-face {  font-family: SimSun; } @font-face {  font-family: Verdana; } @font-face {  font-family: @SimSun; } @page Section1 {size: 8.5in 11.0in; margin: 1.0in 1.25in 1.0in 1.25in; } P.MsoNormal {  FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: Verdana } LI.MsoNormal {  FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: Verdana } DIV.MsoNormal {  FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: Verdana } A:link {  COLOR: blue; TEXT-DECORATION: underline } SPAN.MsoHyperlink {  COLOR: blue; TEXT-DECORATION: underline } A:visited {  COLOR: purple; TEXT-DECORATION: underline } SPAN.MsoHyperlinkFollowed {  COLOR: purple; TEXT-DECORATION: underline } SPAN.EmailStyle17 {  COLOR: windowtext; FONT-FAMILY: Arial; mso-style-type: personal-compose } DIV.Section1 {  page: Section1 }&lt;/style&gt;&lt;span style="color: rgb(0, 0, 255);font-family:Arial;font-size:85%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;div  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Is it Done?  This topic that is constantly reoccurring in the  (agile) software development community.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;div  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Done  is a magic keyword, with different meanings for different  people.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;For a  business owner, Done means that the product is running and serving  Customers&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;For a  project manager, Done means that the code is implemented, tested in all testing cycles and delivered&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;For a development manager, Done means the  code is implemented according to standard, commented, unit tested and deployed  in testing environment   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;For a  developer, Done often means that the tricky algorithms work, code compiles and  was checked into Source Control. The HARD part is over and the code CAN  run.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Here's  a sample definition of Done for a Task (via &lt;/span&gt;&lt;a href="http://www.scrumalliance.org/articles/37"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;scrumalliance&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;) :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:trebuchet ms;"&gt;&lt;span class="182203615-29102008"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Coded/implemented&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Peer reviewed (pair programming counts  as peer review)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Code is run against current version in  source control&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Code is commented in source control  and checked in&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Code is commented&lt;/span&gt;&lt;span class="182203615-29102008"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;on Public/Friend methods&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Story/use case manual test plan  updated &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Unit tests written and  passing&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Build and package changes are  communicated to build master&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Task list hours are updated and task  is closed out&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;All to-do items in code are  completed&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;We  need to establish a scale of &lt;/span&gt;&lt;em&gt;&lt;strong&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Done&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;, &lt;/span&gt;&lt;/em&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;so that  &lt;/span&gt;&lt;em&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;/em&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;we can rate our "donnes" clearly, just like a good stake house does.&lt;br /&gt;&lt;/span&gt;&lt;em&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Oh, &lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;em&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Sorry Sir, you  didn't ask for a &lt;/span&gt;&lt;u&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;rare&lt;/span&gt;&lt;/u&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; rib eye? My apologies, let me &lt;/span&gt;&lt;u&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;fix&lt;/span&gt;&lt;/u&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; it for you!  (&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;The staff in a good stake house doesn't usually point out that the  meat &lt;/span&gt;&lt;u&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;is&lt;/span&gt;&lt;/u&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; properly cut,&lt;/span&gt;&lt;/em&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;em&gt;&lt;u&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;is&lt;/span&gt;&lt;/u&gt;&lt;/em&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;em&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;very well seasoned and  the &lt;/span&gt;&lt;u&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;last&lt;/span&gt;&lt;/u&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; piece missing is a bit more heat. The stake is simply not  &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;done &lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;well).&lt;/span&gt;&lt;/em&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;In  agile development, Team has a lot of sovereignty to make decisions and drive the  implementation of Tasks. It takes an ownership of the Tasks and makes the  implementation as good as can be.&lt;br /&gt;&lt;br /&gt;But the Team also needs to clearly communicate  the level of &lt;/span&gt;&lt;em&gt;&lt;strong&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Done&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;,&lt;/span&gt;&lt;/em&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; as different stakeholders have  different expectations. Only when the communication is clear, factual and  correct the mutual trust can foster.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div  style="color: rgb(204, 204, 204);font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div  style="color: rgb(204, 204, 204);font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div  style="color: rgb(255, 255, 255);font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div  style="color: rgb(255, 255, 255);font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="182203615-29102008"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-1138150067476572971?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/HOkhCyZwCK0/what-done-means.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2008/10/what-done-means.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-6345367450395749823</guid><pubDate>Tue, 28 Oct 2008 19:41:00 +0000</pubDate><atom:updated>2009-07-03T11:43:24.305-07:00</atom:updated><title>Let the Water fall</title><description>&lt;span style="font-family:georgia;font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;On Waterfall software development methodology&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: georgia; " onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_yQfJQkp6vHM/SQdry9Fi9aI/AAAAAAAAAAU/CMlriDkJ6IM/s1600-h/waterfall.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 167px;" src="http://3.bp.blogspot.com/_yQfJQkp6vHM/SQdry9Fi9aI/AAAAAAAAAAU/CMlriDkJ6IM/s320/waterfall.JPG" alt="" id="BLOGGER_PHOTO_ID_5262293212741170594" border="0" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Fig-1 Waterfall&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; phases&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; So Waterfall is GREAT, right? It is GREAT for its risk mitigation ability, it is GREAT to produce bug free software and it is GREAT to produce mission critical software. It plays extremely well in regulatory environments. Above all, it is GREAT in maintaining of Status Quo in order to keep the aforementioned virtues of a system.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;It runs Space Shuttles and it got us to the Moon.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; Every phase is dependent on the completion of the previous phase; we do not code unless we have gathered requirements, analyzed it, and came up with design already. This gives Waterfall very SOLID structure, gives a big deal of comfort to organization that a project will be eventually completed, with all&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; Ts&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; crossed and &lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Is&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; dotted.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; Auxiliary control mechanisms and directional layers and reporting structures are deployed alongside all of the phases, with very little overlap to boot. Testers do not have to care about development till the day they get the custody of the code that needs to be tested. Each phase is taken care of by a different group of people; roles and responsibilities are finely defined and distributed.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Each phase feeds into next one and one run through the mill and we are done. Unless...&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;The Waterfall is BAD, right? It's BAD because it is HEAVY, oh so SEQUENTIAL and downright stuck in the last century.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;  All the virtues of Waterfall come at a significant cost. Many people, often many organizations collaborate during Waterfall phases. Due to the great isolation of the Waterfall phases, communication becomes an overhead and bureaucracy prospers. Cost spirals, fat grows. Each of the phases is becoming longer, synergies are absent. Evolution of the product and keeping with the times are difficult - that's the price of a great Status Quo watchdog. We do get a bug free, mission critical software, though. Unless...&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;  The most important and often overlooked aspect of Waterfall development sits right in front of our eyes. On the top of the pyramid. Basking in the sun. That's right, the REQUIREMENTS. It is the first coin we insert into the slot machine and it decides on the outcome. Crooked pennies do not need to apply. Weight of the coin needs to be precise, so does the width and diameter.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;  Waterfall assumes that requirements are exactly specified, are understood by all parties and do not change. Change the requirements and any of the phases will come to a screeching halt. Either you can restart the whole process or you take a shortcut and circumvent the rigid and fail proof process.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;  Most of the bugs in the system come from such shortcuts and firefights, negating the bug free property of the process. The system will retain the heavy cost associated with the process but will not be bug free and or fit of the mission critical label.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;  If you decide to do Waterfall, beware of change. And if there's a single change on a project it will probably be the REQUIREMENTS.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;I&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;f&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; there ever is a mission critical project with ZERO chance for requirements change, deep well of resources in a highly regulatory environment, I wouldn't hesitate subscribing to the Waterfall process. But I hear they&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; are retiring the space shuttles ...&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-6345367450395749823?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/H7eCM1nWWfg/let-water-fall.html</link><author>noreply@blogger.com (Daniel Maly)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_yQfJQkp6vHM/SQdry9Fi9aI/AAAAAAAAAAU/CMlriDkJ6IM/s72-c/waterfall.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2008/10/let-water-fall.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-4557133800944348683</guid><pubDate>Tue, 28 Oct 2008 19:37:00 +0000</pubDate><atom:updated>2008-10-28T13:08:34.061-07:00</atom:updated><title>Agile Values</title><description>&lt;p  style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;The four basic Agile values were described in &lt;a title="http://agilemanifesto.org/" href="http://agilemanifesto.org/"&gt;Agile  Manifesto&lt;/a&gt; in 2001. Brief interpretation of the values follows. I focused on  the Working Software value, as it is the most relevant one to me at the  moment.&lt;/span&gt;&lt;/p&gt; &lt;p  style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;1)&lt;/strong&gt; &lt;u&gt;&lt;strong&gt;Individuals and  interactions&lt;/strong&gt; over processes and tools&lt;/u&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;    It's all about the TEAM which is executing the  Tasks. Process and Tools exist in order to support the TEAM reaching its  objectives. &lt;/span&gt;&lt;/p&gt; &lt;p  style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;2) &lt;/strong&gt;&lt;u&gt;&lt;strong&gt;Working  software&lt;/strong&gt; over comprehensive documentation&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;    Test ALL THE TIME, deploy often and refactor  constantly. Code by intention, not prescription. Design as you code and code as  you design.&lt;/span&gt;&lt;/p&gt; &lt;p  style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;em&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;strong&gt;    Coding by  intention&lt;/strong&gt;: What do I want to code? What is my  &lt;strong&gt;intention&lt;/strong&gt;? Coding starts with &lt;strong&gt;Interface&lt;/strong&gt; as my  understanding is vague and generic at first (I only know I need the code to  do something and return something else), and evolves into concrete  implementation as I learn and understand the topic better as-I-go. I also know  basic test requirements from the beginning, so I can start testing as soon as  I decided on my &lt;strong&gt;Interface&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;     Refactoring&lt;/strong&gt;: Did I understand the requirement correctly and is it still  reflected in my code? Is it as simple as can be? I rarely get my code spot on  from the beginning, so refactoring is constant effort. And it's FUN! Only  constant Refactoring creates &lt;strong&gt;Beautiful Code&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;     Detailed Design and documentation&lt;/strong&gt;: Is often formalized at the end of  the iterations cycle in extra iteration called a &lt;strong&gt;Landing  Strip&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;3) &lt;/strong&gt;&lt;u&gt;&lt;strong&gt;Responding to  change&lt;/strong&gt; over following a plan&lt;/u&gt;&lt;br /&gt;  Plan is created and owned by  the TEAM, is alive and constantly change after every iteration. If we get behind  or ahead, we will know at the end of each ~10 days long  Iteration.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4) &lt;/strong&gt;&lt;u&gt;&lt;strong&gt;Customer Collaboration&lt;/strong&gt;  over contract negotiation&lt;/u&gt;&lt;br /&gt;  The TEAM includes ALL the collaborating  parties. On a typical application release we would have a BA and a PM in all of  our daily stand-ups (and it would still take only 1/2hr!). Constant  collaboration of all parties is more important than signing off "requirements"  and delivering "something" few months later.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-4557133800944348683?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/7JsAqgsG_hc/agile-values.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2008/10/agile-values.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-5749001154217995561</guid><pubDate>Mon, 03 Mar 2008 20:11:00 +0000</pubDate><atom:updated>2008-03-03T12:11:49.030-08:00</atom:updated><title>On poop.</title><description>&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;I'm an expert.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;If there's ever a need to produce extraordinary amount of uncontainable poop, I'm the man to call. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Man for the job. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;I shall not disappoint, won't let you down. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;I challenge anybody to try and contain my product. It will scale mountains, cross rivers, conquer desserts.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;It can't be done. My poop will roam free, as it was intended. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;No diaper, article of clothing or furniture should dare to stand in its way.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Just try ... and weep. I'll smile with my toothless, angelic grin. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Resistance is futile.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Angel from poop heaven.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-5749001154217995561?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/g2OsMf7D5Gg/on-poop.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2008/03/on-poop.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-112369489339198332</guid><pubDate>Wed, 10 Aug 2005 17:26:00 +0000</pubDate><atom:updated>2005-08-10T10:31:34.343-07:00</atom:updated><title>CoolBeans revealed</title><description>&lt;span style=";font-family:&amp;quot;;font-size:12;"  lang="EN-CA" &gt;So it seems that CoolBeans have revealed itself. CoolBeans is a concept of anything interesting (or cool) regarding beans. Bean is a very granular entity (literally) and can be pretty much anything. Since I'm involved in this software business my CoolBeans are mostly related to it.&lt;br /&gt;So CoolBeans are about technology, software, gadgets and thoughts that tend to coolness.&lt;br /&gt;Also, short quotations from the work of Raymond Lin (RL), my distinguished colleague whose words are sometimes more than truth.&lt;br /&gt;&lt;br /&gt;http://wiki.bonsaitalk.com/index.php/Coolbeans&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-112369489339198332?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/xtYkCgSQ20M/coolbeans-revealed_10.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>3</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2005/08/coolbeans-revealed_10.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-112369395518048069</guid><pubDate>Wed, 10 Aug 2005 17:08:00 +0000</pubDate><atom:updated>2009-07-03T12:09:45.942-07:00</atom:updated><title>CoolBeans: XMLBeans, JAX-RPC and Serialization</title><description>&lt;p  style="color: rgb(204, 204, 204);font-family:trebuchet ms;" class="MsoNormal"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  style="color: rgb(204, 204, 204);font-family:trebuchet ms;" class="MsoNormal"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p  style="color: rgb(204, 204, 204);font-family:trebuchet ms;" class="MsoNormal"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;These three technologies (among others) have something in common. A feature that is easily overlooked, but still vital to smart computing.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Let’s define first:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;Serialization: An act of writing objects onto a medium in a serial, byte-by-byte manner. In Java, any object that can do this has to at least implement mark-up interface &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;java.io.Serializable.&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; Any referenced objects have to be Serializable and will be serialized altogether.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span lang="EN-CA"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;JAX-RPC: Java API for XML-based RemoteProcedureCall. You may have sensed the tie-in to serialization via the RPC portion of the acronym, but that’s not the main reason it is here. Rather, we think of mapping of the Objects to SOAP (SimpleObjectAccessProtocol) messages for RPC call (webservice). We think of the mechanism we map Objects and primitive types into SOAP.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;XMLBeans: Java-XML binding tool. The XML schema is converted into set of Java classes representing elements. Inheritance and Composition is used to reflect nested elements and document structure. XML nodes can be manipulated via accessors and mutators of particular java object.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;The common feature is the ability to create an &lt;/span&gt;&lt;b&gt;&lt;span style="text-transform: uppercase;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;object tree&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; that decomposes any Object into its smaller and smaller denominators. Serializable object is serializable only when all the nested and referenced objects are serializable too. All building blocks of an object will be serialized one by one, thus creating basic object tree. JAX-RPC also creates SOAP elements by decomposition mechanism and XMLBeans go even further by naming it right. Generally, the basic building block is an object with certain properties (preferably primitive) and accessors and mutators. A JavaBean.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;JavaBeans are very powerful concept because of its decomposition capabilities and the ability to shift our focus from the complexities of a system towards the real nature and desired functionality of the system. In Fit testing (testing of business requirements before any code is written), anything is a JavaBean to begin with, be it a Host System, Java Object or database. This fine decomposition gives us very interesting and important view at the overall system, uncluttered of the “complexities”.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;This also enforces the rule that healthy object has properties and responsibilities that belong only to this object; otherwise decomposition into simple object tree is not possible. That’s how we get to the very basics again.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;http://java.sun.com/docs/books/tutorial/essential/io/serialization.html&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;a href="http://dev2dev.bea.com/xml/xmlbeans.csp"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;http://dev2dev.bea.com/xml/xmlbeans.csp&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;a href="http://dev2dev.bea.com/xml/xmlbeans.csp"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;http://java.sun.com/xml/jaxrpc/index.jsp&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p  style="color: rgb(204, 204, 204);font-family:trebuchet ms;" class="MsoNormal"&gt;&lt;span lang="EN-CA"  style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-112369395518048069?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/dTgMuAZ82io/coolbeans-xmlbeans-jax-rpc-and.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2005/08/coolbeans-xmlbeans-jax-rpc-and.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-112368077480413305</guid><pubDate>Wed, 10 Aug 2005 13:31:00 +0000</pubDate><atom:updated>2005-08-10T06:32:54.810-07:00</atom:updated><title>Fair comparison</title><description>YES! But if you do not consider the differences, they are the same!&lt;br /&gt;&lt;br /&gt;RL Aug 10 05&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-112368077480413305?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/bofEDvK2gVU/fair-comparison.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2005/08/fair-comparison.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9310397.post-112307593517269011</guid><pubDate>Wed, 03 Aug 2005 13:29:00 +0000</pubDate><atom:updated>2005-08-03T06:33:44.606-07:00</atom:updated><title>Damn you Random!</title><description>Hmmm ... yes, ... it will be more clear once we remove the random function...&lt;br /&gt;&lt;br /&gt;RL Aug 02 05&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9310397-112307593517269011?l=beansonrocks.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/Coolbeans/~3/qB5rQsb9quw/damn-you-random.html</link><author>noreply@blogger.com (Daniel Maly)</author><thr:total>0</thr:total><feedburner:origLink>http://beansonrocks.blogspot.com/2005/08/damn-you-random.html</feedburner:origLink></item></channel></rss>

