<div dir="auto">Yes, the idea of functional blocks could be very interesting. But the most straight forward idea of blocks that don’t modify state at all wouldn’t work, it would be more complicated than that.</div><div dir="auto">For example, the block [:x | x / 2] is a function for integers and fractions in the sense I was using before, e.g. evaluating it multiple times at 3 returns always 3/2. But it modifies object memory and creates new instances of 3/2 each time (they are equal but not identical).</div><div dir="auto">So I think perhaps the notion of “functional blocks” should be used differently in Smalltalk, not strongly as in functional languages, but dynamically and in terms of behavior, similarly as how we deal with types (for example in methods that assume their arguments implement certain protocols, but without enforcing types explicitly like other languages).</div><div dir="auto"><br></div><div dir="auto">Later I’ll write some comments for the methods that assume the blocks are functions. I should have documented that more clearly.</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 3 Nov 2022 at 20:28 Juan Vuletich <<a href="mailto:juan@cuis.st">juan@cuis.st</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><u></u>

  
    
  
  <div bgcolor="#ffffff" text="#000000">
    A feature that would be nice to have is functional blocks. Some way
    to be certain that some block will evaluate without modifying any
    existing object at all. Then, Smalltalk would be better as a
    functional language, and many operations taking a block would be
    more natural.<br>
    <br>
    Just rambling out loud.<br>
    <br>
    BTW, comments at these methods could be enhanced, possibly with
    links to this email thread.<br>
    <br>
    Cheers,</div><div bgcolor="#ffffff" text="#000000"><br>
    <br>
    On 11/3/2022 8:56 AM, Hernán Wilkinson via Cuis-dev wrote:
    <blockquote type="cite">
      <div dir="ltr">I got what I wanted!! to provoke a discussion! you
        believe me, don't you?? hahahaah<br>
        <div><br>
        </div>
        <div>Yeah, I completely agree Luciano, maybe we should make it
          more clear with a test and/or comment in the sum:ifEmpty:
          method... </div>
        <div><br>
        </div>
        <div>Cheers!</div>
        <div>Hernan.</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Thu, Nov 3, 2022 at 3:45 AM
          Martin McClure <<a href="mailto:martin@hand2mouse.com" target="_blank">martin@hand2mouse.com</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
          <div>
            <div>Hi Luciano,<br>
              <br>
              Well, a lot depends on exactly which combination of
              properties one wants. There are many ways to implement
              collections, and each reasonable way is better at some
              things and worse than others.<br>
              <br>
              Arrays can already be concurrently modified while
              iterating. (Arrays allow duplicate entries, violating my
              third requirement, which I now realize should only apply
              to collections which do not allow duplicates.)<br>
              <br>
              Hashed collections (let's say Set, but Dictionary is
              similar) as implemented in Smalltalk-80 (open addressing
              with linear probing) have two problem points for iterating
              while modifying -- deletions can move an existing element
              earlier in the table, and additions can cause the table to
              grow, scrambling everything. The deletion problem can be
              handled by using collision buckets instead of linear
              probing, which is not quite as fast because more cache
              line reads, but still O(1). The grow problem can be
              handled more easily. A grow replaces the table and copies
              the elements over to the new table. If the iterator caches
              the table in a temporary variable then it can do the
              iteration over the original table even if the base
              collection has moved on to a new table. The old table will
              be released when the iteration is done.<br>
              <br>
              One of the nice things about Smalltalk is that if there
              isn't a collection class that meets the your exact needs,
              you have the ability to implement your own.<br>
              <br>
              Regards,<br>
              -Martin<br>
              <br>
              On 11/2/22 23:09, Luciano Notarfrancesco via Cuis-dev
              wrote:<br>
            </div>
            <blockquote type="cite">
              <div dir="auto">Hi Martin,</div>
              <div dir="auto">That’s very interesting. I guess this was
                not the best example, since not being able to modify a
                collection while it’s iterating doesn’t really have to
                do with the essence of the collections or their
                messages, but more with a limitation of the
                implementation.</div>
              <div dir="auto">Is there a way to change existing
                collections to support modification while iterating
                without loosing performance? </div>
              <div><br>
                <div class="gmail_quote">
                  <div dir="ltr" class="gmail_attr">On Thu, 3 Nov 2022
                    at 12:44 Martin McClure <<a href="mailto:martin@hand2mouse.com" target="_blank">martin@hand2mouse.com</a>>
                    wrote:<br>
                  </div>
                  <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
                    <div>
                      <div>Hi Luciano,<br>
                        <br>
                        I agree that restricting #sum: to be used with a
                        block that is a function is reasonable, and
                        probably best.<br>
                        <br>
                        But I disagree about changing a collection while
                        iterating it. I have often wanted a collection
                        that could be modified while iterating it. And,
                        given how much time I've spent writing stuff
                        that has to work in a multi-threaded
                        environment, I've probably implemented that sort
                        of collection at least once. My idea of
                        desirable semantics for this kind of collection
                        are:<br>
                        1) The iteration <i>will</i> include each
                        element that is present throughout the
                        iteration.<br>
                        2) It is <i>unpredictable</i> whether any
                        elements added or removed during the iteration
                        are included in the iteration.<br>
                        3) The same element (same being equal or
                        identical, depending on the collection) will
                        appear at most once in the iteration.<br>
                        <br>
                        There are a number of cases where this is
                        useful. <br>
                        <br>
                        * The iterating thread may want to add or remove
                        elements while it iterates.<br>
                        A queue is a simple example of this kind of
                        collection, where the iterator is
                        unconditionally removing elements as they're
                        iterated, while some other entity may be
                        concurrently adding elements. This can be
                        generalized to conditional removal of elements
                        that are iterated, or conditional adding of
                        elements based on elements found.<br>
                        <br>
                        * Modification of the collection and iteration
                        of the collection might happen in separate
                        threads. There are times when a "more or less
                        up-to-date" iteration of the contents is fine.<br>
                        <br>
                        Regards,<br>
                        -Martin <br>
                      </div>
                    </div>
                    <div>
                      <div> <br>
                        On 11/2/22 21:57, Luciano Notarfrancesco via
                        Cuis-dev wrote:<br>
                      </div>
                      <blockquote type="cite">
                        <div dir="auto">Yes, the method assumes the
                          block is a function (it maps one element to
                          only one value). We talked about this here a
                          couple of times. The Collection protocol is
                          very “functional”, specially messages like
                          #collect:, #select:, #detect:, etc, and using
                          them with blocks that are functions is the
                          most natural way to use them, and I don’t
                          think we loose anything by making the
                          assumption that the blocks for these messages
                          are functions.</div>
                        <div dir="auto">Moreover, the whole point of Bag
                          is to be able to efficiently store elements
                          with lots of repetitions, possibly millions of
                          repetitions that otherwise wouldn’t even fit
                          in memory. If #sum: iterated over all the
                          repetitions it would defeat the original
                          purpose of Bag. And I argue that this is not
                          necessary because no one would ever call #sum:
                          with a block that is not a function, at least
                          I never had the need to do that, and it feels
                          unnatural to use #sum: in that way and I’d use
                          #do: instead.</div>
                        <div dir="auto">If you think this assumption is
                          strange, think about all the other assumptions
                          that collections make. For example, you cannot
                          change a collection while you’re iterating it.
                          It would just feel wrong to change a
                          collection while you iterate it, we don’t need
                          to try to support that because who would do
                          that?</div>
                        <div dir="auto"><br>
                        </div>
                        <div dir="auto"><br>
                        </div>
                        <div dir="auto">On Thu, 3 Nov 2022 at 03:12
                          Hernán Wilkinson <<a href="mailto:hernan.wilkinson@10pines.com" target="_blank">hernan.wilkinson@10pines.com</a>>

                          wrote:<br>
                        </div>
                        <div>
                          <div class="gmail_quote">
                            <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
                              <div dir="ltr">How does that optimization
                                work?
                                <div>Because I thought about evaluating
                                  the block and multiplying that for the
                                  number of elements, but that makes
                                  sense if the block returns always the
                                  same value por the same element, if it
                                  does not then it will not work...</div>
                                <div><br>
                                </div>
                              </div>
                              <br>
                              <div class="gmail_quote">
                                <div dir="ltr" class="gmail_attr">On
                                  Wed, Nov 2, 2022 at 3:24 PM Juan
                                  Vuletich <<a href="mailto:juan@cuis.st" target="_blank">juan@cuis.st</a>>
                                  wrote:<br>
                                </div>
                                <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
                                  <div bgcolor="#ffffff"> On 11/1/2022
                                    11:23 PM, Hernán Wilkinson via
                                    Cuis-dev wrote:
                                    <blockquote type="cite">
                                      <div dir="ltr">yeap, the current
                                        implementation is not correct.
                                        <div>Juan, attached is a change
                                          set that fixes it and another
                                          with the related tests.</div>
                                        <div><br>
                                        </div>
                                        <div>Cheers!</div>
                                        <div>Hernan.</div>
                                      </div>
                                      <br>
                                      <div class="gmail_quote">
                                        <div dir="ltr" class="gmail_attr">On Tue, Nov
                                          1, 2022 at 3:39 AM Luciano
                                          Notarfrancesco <<a href="mailto:luchiano@gmail.com" target="_blank">luchiano@gmail.com</a>>

                                          wrote:<br>
                                        </div>
                                        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
                                          <div dir="auto">I’m afk right
                                            now so I cannot check, but
                                            it sounds like I made a
                                            mistake. Of course it should
                                            be the value of aBlock at
                                            each element times the
                                            number of occurrences.</div>
                                          <div><br>
                                            <div class="gmail_quote">
                                              <div dir="ltr" class="gmail_attr">On
                                                Tue, 1 Nov 2022 at 07:33
                                                Hernán Wilkinson <<a href="mailto:hernan.wilkinson@10pines.com" target="_blank">hernan.wilkinson@10pines.com</a>>

                                                wrote:<br>
                                              </div>
                                              <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
                                                <div dir="ltr">Hi,
                                                  <div> the
                                                    implementation of
                                                    Bag>>#sum:
                                                    aBlock ifEmpty:
                                                    emptyBlock does not
                                                    use the parameter
                                                    aBlock at all and
                                                    assumes that each of
                                                    the elements answers
                                                    the message * </div>
                                                  <div> <a class="gmail_plusreply" id="m_-842773493606144957m_-7493885684589873084m_-3526128079982332351m_-8793636495669467945m_7503398456341899303m_-3423588523307269653m_4335152602574426633plusReplyChip-0" href="mailto:luchiano@gmail.com" target="_blank">@Luciano Notarfrancesco</a> the

                                                    implementation is
                                                    yours and it is very
                                                    new? Is there a
                                                    reason you did that
                                                    way? </div>
                                                  <div><br>
                                                  </div>
                                                  <div>Thanks</div>
                                                  <div>Hernan</div>
                                                </div>
                                                <div dir="ltr">
                                                  <div><br clear="all">
                                                    <div><br>
                                                    </div>
                                                    -- <br>
                                                    <div dir="ltr">
                                                      <div dir="ltr">
                                                        <div>
                                                          <div dir="ltr">
                                                          <div style="font-size:small">
                                                          <div dir="ltr">
                                                          <div dir="ltr">
                                                          <div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong style="font-family:tahoma,sans-serif"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2"><span style="font-weight:normal;font-family:tahoma,sans-serif"><span style="font-weight:bold;font-family:tahoma,sans-serif">Hernán

                                                          Wilkinson</span><br>
                                                          Agile Software
                                                          Development,
                                                          Teaching &
                                                          Coaching</span></font></span></span></strong></span></div>
                                                          <div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong style="font-family:tahoma,sans-serif"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2"><span style="font-weight:normal;font-family:tahoma,sans-serif">Phone:
                                                          +54-011</span></font></span></span></strong></span><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2" face="tahoma,
                                                          sans-serif">-4893-2057</font></div>
                                                          <div style="font-size:12.8px"><strong style="font-family:tahoma,sans-serif;font-size:xx-small"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2"><span style="font-weight:normal;font-family:tahoma,sans-serif">Twitter:

@HernanWilkinson</span></font></span></span></strong></div>
                                                          <div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong style="font-family:tahoma,sans-serif"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2"><span style="font-weight:normal;font-family:tahoma,sans-serif">site: <a href="http://www.10pines.com/" style="font-family:tahoma,sans-serif;color:rgb(17,65,112)" target="_blank">http://www.10Pines.com</a></span></font></span></span></strong></span></div>
                                                          <div style="font-size:12.8px"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" face="tahoma,
                                                          sans-serif"><span style="border-collapse:collapse;font-family:tahoma,sans-serif">Address:

                                                          Alem 896</span></font>,
                                                          Floor 6,
                                                          Buenos Aires,
                                                          Argentina</div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                        </div>
                                                      </div>
                                                    </div>
                                                  </div>
                                                </div>
                                              </blockquote>
                                            </div>
                                          </div>
                                        </blockquote>
                                      </div>
                                      <br clear="all">
                                      <div><br>
                                      </div>
                                      -- <br>
                                      <div dir="ltr">
                                        <div dir="ltr">
                                          <div>
                                            <div dir="ltr">
                                              <div style="font-size:small">
                                                <div dir="ltr">
                                                  <div dir="ltr">
                                                    <div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong style="font-family:tahoma,sans-serif"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2"><span style="font-weight:normal;font-family:tahoma,sans-serif"><span style="font-weight:bold;font-family:tahoma,sans-serif">Hernán
                                                          Wilkinson</span><br>
                                                          Agile Software
                                                          Development,
                                                          Teaching &
                                                          Coaching</span></font></span></span></strong></span></div>
                                                    <div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong style="font-family:tahoma,sans-serif"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2"><span style="font-weight:normal;font-family:tahoma,sans-serif">Phone:

                                                          +54-011</span></font></span></span></strong></span><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2" face="tahoma,
                                                        sans-serif">-4893-2057</font></div>
                                                    <div style="font-size:12.8px"><strong style="font-family:tahoma,sans-serif;font-size:xx-small"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2"><span style="font-weight:normal;font-family:tahoma,sans-serif">Twitter:

@HernanWilkinson</span></font></span></span></strong></div>
                                                    <div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong style="font-family:tahoma,sans-serif"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2"><span style="font-weight:normal;font-family:tahoma,sans-serif">site: <a href="http://www.10pines.com/" style="font-family:tahoma,sans-serif;color:rgb(17,65,112)" target="_blank">http://www.10Pines.com</a></span></font></span></span></strong></span></div>
                                                    <div style="font-size:12.8px"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" face="tahoma,
                                                        sans-serif"><span style="border-collapse:collapse;font-family:tahoma,sans-serif">Address:

                                                          Alem 896</span></font>,
                                                      Floor 6, Buenos
                                                      Aires, Argentina</div>
                                                  </div>
                                                </div>
                                              </div>
                                            </div>
                                          </div>
                                        </div>
                                      </div>
                                    </blockquote>
                                    <br>
                                    Hi Hernán,<br>
                                    <br>
                                    Your fix disables the optimization
                                    Luciano did. I chose to fix
                                    Luciano's code. Did the same for
                                    #product: (same bug). Integrated
                                    your tests, and added another one
                                    for #product:<br>
                                    <br>
                                    Thanks,<br>
                                    <pre style="font-family:monospace" cols="72">-- 
Juan Vuletich
<a href="http://cuis.st" style="font-family:monospace" target="_blank">cuis.st</a>
<a href="http://github.com/jvuletich" style="font-family:monospace" target="_blank">github.com/jvuletich</a>
<a href="http://researchgate.net/profile/Juan-Vuletich" style="font-family:monospace" target="_blank">researchgate.net/profile/Juan-Vuletich</a>
<a href="http://independent.academia.edu/JuanVuletich" style="font-family:monospace" target="_blank">independent.academia.edu/JuanVuletich</a>
<a href="http://patents.justia.com/inventor/juan-manuel-vuletich" style="font-family:monospace" target="_blank">patents.justia.com/inventor/juan-manuel-vuletich</a>
<a href="http://linkedin.com/in/juan-vuletich-75611b3" style="font-family:monospace" target="_blank">linkedin.com/in/juan-vuletich-75611b3</a>
<a href="http://twitter.com/JuanVuletich" style="font-family:monospace" target="_blank">twitter.com/JuanVuletich</a></pre>
                                  </div>
                                </blockquote>
                              </div>
                              <br clear="all">
                              <div><br>
                              </div>
                              -- <br>
                              <div dir="ltr">
                                <div dir="ltr">
                                  <div>
                                    <div dir="ltr">
                                      <div style="font-size:small">
                                        <div dir="ltr">
                                          <div dir="ltr">
                                            <div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong style="font-family:tahoma,sans-serif"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2"><span style="font-weight:normal;font-family:tahoma,sans-serif"><span style="font-weight:bold;font-family:tahoma,sans-serif">Hernán
                                                          Wilkinson</span><br>
                                                          Agile Software
                                                          Development,
                                                          Teaching &
                                                          Coaching</span></font></span></span></strong></span></div>
                                            <div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong style="font-family:tahoma,sans-serif"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2"><span style="font-weight:normal;font-family:tahoma,sans-serif">Phone:

                                                          +54-011</span></font></span></span></strong></span><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2" face="tahoma,
                                                sans-serif">-4893-2057</font></div>
                                            <div style="font-size:12.8px"><strong style="font-family:tahoma,sans-serif;font-size:xx-small"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2"><span style="font-weight:normal;font-family:tahoma,sans-serif">Twitter:

                                                        @HernanWilkinson</span></font></span></span></strong></div>
                                            <div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong style="font-family:tahoma,sans-serif"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" size="2"><span style="font-weight:normal;font-family:tahoma,sans-serif">site: <a href="http://www.10pines.com/" style="font-family:tahoma,sans-serif;color:rgb(17,65,112)" target="_blank">http://www.10Pines.com</a></span></font></span></span></strong></span></div>
                                            <div style="font-size:12.8px"><font style="font-family:tahoma,sans-serif;color:rgb(0,0,0)" face="tahoma,
                                                sans-serif"><span style="border-collapse:collapse;font-family:tahoma,sans-serif">Address:

                                                  Alem 896</span></font>,
                                              Floor 6, Buenos Aires,
                                              Argentina</div>
                                          </div>
                                        </div>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </blockquote>
                          </div>
                        </div>
                        <br>
                        <fieldset></fieldset>
                      </blockquote>
                      <br>
                    </div>
                  </blockquote>
                </div>
              </div>
              <br>
              <fieldset></fieldset>
            </blockquote>
            <br>
          </div>
        </blockquote>
      </div>
      <br clear="all">
      <div><br>
      </div>
      -- <br>
      <div dir="ltr">
        <div dir="ltr">
          <div>
            <div dir="ltr">
              <div style="font-size:small">
                <div dir="ltr">
                  <div dir="ltr">
                    <div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong style="font-family:tahoma,sans-serif"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font size="2" style="font-family:tahoma,sans-serif;color:rgb(0,0,0)"><span style="font-weight:normal;font-family:tahoma,sans-serif"><span style="font-weight:bold;font-family:tahoma,sans-serif">Hernán
                                    Wilkinson</span><br>
                                  Agile Software Development, Teaching
                                  & Coaching</span></font></span></span></strong></span></div>
                    <div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong style="font-family:tahoma,sans-serif"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font size="2" style="font-family:tahoma,sans-serif;color:rgb(0,0,0)"><span style="font-weight:normal;font-family:tahoma,sans-serif">Phone:
                                  +54-011</span></font></span></span></strong></span><font size="2" face="tahoma, sans-serif" style="font-family:tahoma,sans-serif;color:rgb(0,0,0)">-4893-2057</font></div>
                    <div style="font-size:12.8px"><strong style="font-family:tahoma,sans-serif;font-size:xx-small"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font size="2" style="font-family:tahoma,sans-serif;color:rgb(0,0,0)"><span style="font-weight:normal;font-family:tahoma,sans-serif">Twitter: @HernanWilkinson</span></font></span></span></strong></div>
                    <div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong style="font-family:tahoma,sans-serif"><span style="font-size:8pt;font-family:tahoma,sans-serif"><span style="font-size:small;font-family:tahoma,sans-serif"><font size="2" style="font-family:tahoma,sans-serif;color:rgb(0,0,0)"><span style="font-weight:normal;font-family:tahoma,sans-serif">site: <a href="http://www.10pines.com/" style="font-family:tahoma,sans-serif;color:rgb(17,65,112)" target="_blank">http://www.10Pines.com</a></span></font></span></span></strong></span></div>
                    <div style="font-size:12.8px"><font face="tahoma,
                        sans-serif" style="font-family:tahoma,sans-serif;color:rgb(0,0,0)"><span style="border-collapse:collapse;font-family:tahoma,sans-serif">Address: Alem 896</span></font>,
                      Floor 6, Buenos Aires, Argentina</div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    <br>
    <pre cols="72" style="font-family:monospace">-- 
Juan Vuletich
<a href="http://cuis.st" target="_blank" style="font-family:monospace">cuis.st</a>
<a href="http://github.com/jvuletich" target="_blank" style="font-family:monospace">github.com/jvuletich</a>
<a href="http://researchgate.net/profile/Juan-Vuletich" target="_blank" style="font-family:monospace">researchgate.net/profile/Juan-Vuletich</a>
<a href="http://independent.academia.edu/JuanVuletich" target="_blank" style="font-family:monospace">independent.academia.edu/JuanVuletich</a>
<a href="http://patents.justia.com/inventor/juan-manuel-vuletich" target="_blank" style="font-family:monospace">patents.justia.com/inventor/juan-manuel-vuletich</a>
<a href="http://linkedin.com/in/juan-vuletich-75611b3" target="_blank" style="font-family:monospace">linkedin.com/in/juan-vuletich-75611b3</a>
<a href="http://twitter.com/JuanVuletich" target="_blank" style="font-family:monospace">twitter.com/JuanVuletich</a></pre>
  </div>

</blockquote></div></div>