<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>carriagereturn.org</title><link>http://www.carriagereturn.org</link><description>carriagereturn.org - Horizontal Refresh</description><language>en</language><lastBuildDate>Fri, 10 Feb 2012 04:10:07 -0000</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/carriagereturn" /><feedburner:info uri="carriagereturn" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>carriagereturn</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>polymorphism</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/nUq5mzaz2fs/</link><description>Methods / Functions of polymorphic type (that can take many different types) are said to be polymorphic
&lt;br/&gt;
&lt;br/&gt;The opposite of polymorhpic is monomorphic. A monomorphic function is for example: thisFunc(int, int)
&lt;br/&gt;
&lt;br/&gt;All methods that take an object are polymorphic, because the object given could be a subclass of the declared object, and this will only be known at runtime.
&lt;br/&gt;
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/nUq5mzaz2fs" height="1" width="1"/&gt;</description><pubDate>Fri, 10 Feb 2012 04:10:07 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/15/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/15/</feedburner:origLink></item><item><title>polymorphism glossary</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/GAn-ZrsjwXE/</link><description>---+ Polymorphism
&lt;br/&gt;
&lt;br/&gt;---++ From the dictionary
&lt;br/&gt;polymorphism
&lt;br/&gt;
&lt;br/&gt;&lt;theory, programming&gt; A concept first identified by
&lt;br/&gt;Christopher Strachey (1967) and developed by Hindley and
&lt;br/&gt;Milner, allowing types such as list of anything. E.g. in
&lt;br/&gt;Haskell:
&lt;br/&gt;
&lt;br/&gt;length :: [a] -&gt; Int
&lt;br/&gt;
&lt;br/&gt;is a function which operates on a list of objects of any type,
&lt;br/&gt;a (a is a type variable). This is known as parametric
&lt;br/&gt;polymorphism. Polymorphic typing allows strong type checking
&lt;br/&gt;as well as generic functions. ML in 1976 was the first
&lt;br/&gt;language with polymorphic typing.
&lt;br/&gt;
&lt;br/&gt;Ad-hoc polymorphism (better described as overloading) is the
&lt;br/&gt;ability to use the same syntax for objects of different types,
&lt;br/&gt;e.g. "+" for addition of reals and integers or "-" for unary
&lt;br/&gt;negation or diadic subtraction. Parametric polymorphism
&lt;br/&gt;allows the same object code for a function to handle arguments
&lt;br/&gt;of many types but overloading only reuses syntax and requires
&lt;br/&gt;different code to handle different types.
&lt;br/&gt;
&lt;br/&gt;See also generic type variable.
&lt;br/&gt;
&lt;br/&gt;In object-oriented programming, the term is used to describe
&lt;br/&gt;a variable that may refer to objects whose class is not
&lt;br/&gt;known at compile time and which respond at run time
&lt;br/&gt;according to the actual class of the object to which they
&lt;br/&gt;refer.
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/GAn-ZrsjwXE" height="1" width="1"/&gt;</description><pubDate>Thu, 09 Feb 2012 04:10:04 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/14/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/14/</feedburner:origLink></item><item><title>testing helper</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/Z_W6umXi504/</link><description>*Generator*
&lt;br/&gt;
&lt;br/&gt;Generator --&gt; Component
&lt;br/&gt;
&lt;br/&gt;Creates test data and feeds it into the component under test. Test data can be read from a script file that contains instructions on the test execution as well as test data. Or test data can come from a capture / replay mechanism which captures data output by an external application or another test case and stores it for replay. Or test data can be created randomly or algorithmically.
&lt;br/&gt;
&lt;br/&gt;*Verifier*
&lt;br/&gt;
&lt;br/&gt;Component --&gt; Verifier
&lt;br/&gt;
&lt;br/&gt;A Verifier compares actual test results with expected results. Usually tied into a reporting mechanism.
&lt;br/&gt;
&lt;br/&gt;*Stub*
&lt;br/&gt;
&lt;br/&gt;Component &lt;--&gt; Stub
&lt;br/&gt;
&lt;br/&gt;Simulates part of the system under test.
&lt;br/&gt;
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/Z_W6umXi504" height="1" width="1"/&gt;</description><pubDate>Wed, 08 Feb 2012 04:10:08 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/13/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/13/</feedburner:origLink></item><item><title>complexity</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/Wu5e3dORrnM/</link><description>Two weapons against complextiy:
&lt;br/&gt;
&lt;br/&gt;- Intuitiveness of the programming experience from the developers point of view.
&lt;br/&gt;- Ability to decompose the whole into smaller units and aggregate individual units into a whole.
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/Wu5e3dORrnM" height="1" width="1"/&gt;</description><pubDate>Tue, 07 Feb 2012 04:10:02 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/67/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/67/</feedburner:origLink></item><item><title>apology</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/Kv-kcW5V_pc/</link><description>In the past few days spammers seem to of discovered the 'submit' link on carriagereturn.org. This morning a spam made it past me and got mailed / RSSed out to you all. My apologies. I have disabled the 'submit' link for the time being.
&lt;br/&gt;
&lt;br/&gt; When I have some time I intend to restore the submit link with a spam-proof addition: Kitten Auth http://www.thepcspy.com/kittenauth
&lt;br/&gt;
&lt;br/&gt; - Graham
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/Kv-kcW5V_pc" height="1" width="1"/&gt;</description><pubDate>Mon, 06 Feb 2012 04:10:05 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/128/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/128/</feedburner:origLink></item><item><title>reading complexity</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/VQp29Ip41nc/</link><description>Read better:
&lt;br/&gt;
&lt;br/&gt;SQ3R technique:
&lt;br/&gt;    * Survey:
&lt;br/&gt;      Survey the document: scan the contents, introduction, chapter introductions and chapter summaries to pick up a shallow overview of the text. Form an opinion of whether it will be of any help. If it does not give you the information you want, discard it.
&lt;br/&gt;    * Question:
&lt;br/&gt;      Make a note of any questions on the subject that come to mind, or particularly interest you following your survey. Perhaps scan the document again to see if any stand out. These questions can be considered almost as study goals - understanding the answers can help you to structure the information in your own mind.
&lt;br/&gt;    * Read:
&lt;br/&gt;      Now read the document. Read through useful sections in detail, taking care to understand all the points that are relevant. In the case of some texts this reading may be very slow. This will particularly be the case if there is a lot of dense and complicated information. While you are reading, it can help to take notes in Concept Map format.
&lt;br/&gt;    * Recall:
&lt;br/&gt;      Once you have read appropriate sections of the document, run through it in your mind several times. Isolate the core facts or the essential processes behind the subject, and then see how other information fits around them.
&lt;br/&gt;    * Review:
&lt;br/&gt;      Once you have run through the exercise of recalling the information, you can move on to the stage of reviewing it. This review can be by rereading the document, by expanding your notes, or by discussing the material with colleagues. A particularly effective method of reviewing information is to have to teach it to someone else!
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/VQp29Ip41nc" height="1" width="1"/&gt;</description><pubDate>Fri, 03 Feb 2012 04:10:05 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/12/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/12/</feedburner:origLink></item><item><title>singleton pattern</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/5a97INDQU6Y/</link><description>Singleton Pattern
&lt;br/&gt;
&lt;br/&gt;The Singleton pattern is used when you only need one of a particular object. For example a printer manager object, a database connection pool, etc.
&lt;br/&gt;
&lt;br/&gt;This is achieved by giving the class a private class level method of type itself, making the constructor private, and giving it a class level getInstance() method which returns the only copy of itself.
&lt;br/&gt;
&lt;br/&gt;Singleton's are considered harmful by many these days because they are object-oriented global variables. And we _know_ those are bad.
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/5a97INDQU6Y" height="1" width="1"/&gt;</description><pubDate>Thu, 02 Feb 2012 04:10:05 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/11/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/11/</feedburner:origLink></item><item><title>Design UI Spacing</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/TjjVypMSgEk/</link><description>One of the telling differences between an application design that is handled by a designer and one that is handled more by a development team is spacing. Developers don't usually think much about how element should sit on a screen together, so you see a lot of items crammed together or unevenly distributed. This is the kind of thing an average user can't put their finger on, but on a subconscious level, it bothers them and gives them a negative opinion of the application.&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/TjjVypMSgEk" height="1" width="1"/&gt;</description><pubDate>Wed, 01 Feb 2012 04:10:02 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/146/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/146/</feedburner:origLink></item><item><title>adapter pattern</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/dbc_3LvHnZY/</link><description>When inserting an abstract interface is infeasible because the target is third party software then insert your own interface / class between you and the software and make all interactions with it use that.
&lt;br/&gt;
&lt;br/&gt; The inserted interface / class is an Adapter.
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/dbc_3LvHnZY" height="1" width="1"/&gt;</description><pubDate>Tue, 31 Jan 2012 04:10:07 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/10/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/10/</feedburner:origLink></item><item><title>writing</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/G3Le9IZTn44/</link><description>Writing well:
&lt;br/&gt;
&lt;br/&gt;- Speak what you write: Read it out loud to see if it is easy to read.
&lt;br/&gt;- Punctuate. Check spelling and grammar.
&lt;br/&gt;- Keep sentences short.
&lt;br/&gt;- Don't use words you don't really know
&lt;br/&gt;- Front load your point: Don't make people wade through anecdotes to get to the point.
&lt;br/&gt;- When in doubt, simplify. Simpler is easier to understand, hence is more effective communication.
&lt;br/&gt;
&lt;br/&gt;(from http://www.scalzi.com/whatever/004023.html)
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/G3Le9IZTn44" height="1" width="1"/&gt;</description><pubDate>Mon, 30 Jan 2012 04:10:07 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/8/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/8/</feedburner:origLink></item><item><title>environment smells</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/HCGgGYNdN18/</link><description>Development environment smells:
&lt;br/&gt;
&lt;br/&gt;- No command line build. This is pure evil. No excuses, ever.
&lt;br/&gt;- Build environment tied to a particular IDE. I can't believe that people do this. But they do, sigh.
&lt;br/&gt;- No specific development test environment. You need to practice deployment
&lt;br/&gt;- Development environment depends on externally managed resources. Database goes down, team stops work. Dumb.
&lt;br/&gt;- A development environment that mandates a "reusable framework". Reuse is dead. Build a bridge, get over it.
&lt;br/&gt;
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/HCGgGYNdN18" height="1" width="1"/&gt;</description><pubDate>Fri, 27 Jan 2012 04:10:10 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/7/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/7/</feedburner:origLink></item><item><title>Expression builder</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/jEw2_I9F4tM/</link><description>One of the problems with a FluentInterface is that it results in some odd looking methods. Consider this example:
&lt;br/&gt;
&lt;br/&gt;customer.newOrder()
&lt;br/&gt;  .with(6, "TAL")
&lt;br/&gt;  .with(5, "HPK").skippable()
&lt;br/&gt;  .with(3, "LGV")
&lt;br/&gt;  .priorityRush();
&lt;br/&gt;
&lt;br/&gt;Methods like with, skippable, and priorityRush don't sit well on the Order class. The naming works well in the context of the little DomainSpecificLanguage that the fluent interface provides, but we usually expect methods to make sense in their own right.
&lt;br/&gt;
&lt;br/&gt;An Expression Builder is a solution to this problem. An expression builder is a separate object on which we define the fluent interface that then translates the fluent calls to the underlying regular API calls. So an expression builder for the order case would look something like this.
&lt;br/&gt;
&lt;br/&gt;public class OrderBuilder {
&lt;br/&gt;  private Order subject = new Order();
&lt;br/&gt;  private OrderLine currentLine;
&lt;br/&gt;
&lt;br/&gt;  public OrderBuilder with(int quantity, String productCode) {
&lt;br/&gt;    currentLine = new OrderLine(quantity, Product.find(productCode));
&lt;br/&gt;    subject.addLine(currentLine);
&lt;br/&gt;    return this;
&lt;br/&gt;  }
&lt;br/&gt;
&lt;br/&gt;  public OrderBuilder skippable() {
&lt;br/&gt;    currentLine.setSkippable(true);
&lt;br/&gt;    return this;
&lt;br/&gt;  }
&lt;br/&gt;
&lt;br/&gt;  public OrderBuilder priorityRush() {
&lt;br/&gt;    subject.setRush(true);
&lt;br/&gt;    return this;
&lt;br/&gt;  }
&lt;br/&gt;
&lt;br/&gt;  public Order getSubject() {
&lt;br/&gt;    return subject;
&lt;br/&gt;  }
&lt;br/&gt;}
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/jEw2_I9F4tM" height="1" width="1"/&gt;</description><pubDate>Thu, 26 Jan 2012 04:10:07 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/135/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/135/</feedburner:origLink></item><item><title>participation</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/_t52NSvTsNw/</link><description>One of the under-appreciated elements in the success of open source software projects is their modular design, which is an essential element of an architecture of participation. 
&lt;br/&gt;
&lt;br/&gt;It's easier for people to collaborate around small chunks, and to build up larger works piece by piece, than it is for them to work together on a large, complex project with many dependencies.
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/_t52NSvTsNw" height="1" width="1"/&gt;</description><pubDate>Wed, 25 Jan 2012 04:10:07 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/134/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/134/</feedburner:origLink></item><item><title>software hacking crisis</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/3j1nk-Ex5Gw/</link><description>*Gene Michael Stover* at http://www.lisp-p.org/controversy
&lt;br/&gt;
&lt;br/&gt;Good software development depends on good software developers: programmers, analysts, managers, testers, &amp; others. Hell, it even depends on good customers.
&lt;br/&gt;
&lt;br/&gt;Processes can remove only so much of the risk of software development. Once you've removed all the risk you can, you must rely on the skills of your people, &amp; they will need to do some hacking.
&lt;br/&gt;
&lt;br/&gt;Hacking is experimental programming to test theories &amp; algorithms, and to work your way through libraries, APIs, protocols, &amp; other tools. There will be kinks in the works for which you cannot plan. The only way to find them is to hack through it. Bottom-up implementation. That's hacking, &amp; you can't develop most programs without it.
&lt;br/&gt;
&lt;br/&gt;The only program which you can design before you code is the program you've written so many times that you know everything it needs to do. (Nope, you can't always put it in a reusable library. Sometimes, you have to write from scratch.) That's the only program you can design completely before you code. And why is that? It's because you've done all your hacking on your previous implementations!
&lt;br/&gt;
&lt;br/&gt;For what it's worth, I don't believe the software development crisis is a crisis. It's just a fact that most software development these days is bad software development. If we never come to the day when most software development is good software development, life as we know it will still continue. Trust me; I know these things. 
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/3j1nk-Ex5Gw" height="1" width="1"/&gt;</description><pubDate>Tue, 24 Jan 2012 04:10:09 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/5/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/5/</feedburner:origLink></item><item><title>gathering requirements</title><link>http://feedproxy.google.com/~r/carriagereturn/~3/v-dBbBHKyLg/</link><description>Gathering requirements can be done as
&lt;br/&gt;
&lt;br/&gt; - UseCases
&lt;br/&gt;
&lt;br/&gt; - UserStories
&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/carriagereturn/~4/v-dBbBHKyLg" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Jan 2012 04:10:05 -0000</pubDate><guid isPermaLink="false">http://www.carriagereturn.org/entry/3/</guid><feedburner:origLink>http://www.carriagereturn.org/entry/3/</feedburner:origLink></item></channel></rss>

