<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Software Engineering Matters : Category plop, everything about plop</title>
    <link>/category/plop.rss</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>giving a little more thought...</description>
    <item>
      <title>A Pattern Language for Screencasting</title>
      <description>&lt;div style="text-align:center;"&gt;&lt;img src="/files/screen.jpg" alt="TV photo purchased from iStockPhoto" /&gt;&lt;/div&gt;

&lt;p&gt;
I have written a pattern language for screencasting based on my experiences producing and observing various screencasts on the internet. Through my experiences I have noticed various patterns that myself and other screencasters have used. Applying those patterns would certainly help the presentation of your screencast but, more importantly, I believe that the patterns enhance the teaching-learning experience of screencasts. And ultimately that is what matters most.
&lt;/p&gt;

&lt;p&gt;
Interested readers may view the patterns &lt;a href="/files/Patterns.pdf"&gt;here&lt;/a&gt; (older version can be found &lt;a href="/files/screencast_patterns.html"&gt;here&lt;/a&gt;). The pictures that I have included are based on software for the Mac since that is what I  use for my screencasting.
&lt;/p&gt;

&lt;p&gt;
At the moment, it's a rather complete version of what I had originally envisioned for such a document. It can definitely be improved but I would like to get a version out on the web for people to read in case anyone is interested in providing feedback or suggestions. This pattern language is in the shepherding stage of &lt;a href="http://hillside.net/plop/"&gt;PLoP '09&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
I do maintain copyright on the document.
&lt;/p&gt;

</description>
      <pubDate>Thu, 09 Jul 2009 14:35:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:5560c28f-9416-4782-8c68-3b50ee5caa75</guid>
      <comments>http://softwareengineering.vazexqi.com/2009/07/09/a-pattern-language-for-screencasting#comments</comments>
      <category>plop</category>
      <category>patterns</category>
      <category>screencast</category>
      <category>pattern language</category>
      <category>patterns</category>
      <enclosure length="36251" url="http://softwareengineering.vazexqi.com/files/screencast_patterns.html" type="text/html"/>
      <link>http://softwareengineering.vazexqi.com/2009/07/09/a-pattern-language-for-screencasting</link>
    </item>
    <item>
      <title>ParaPLoP'09: First Workshop on Parallel Programming Patterns</title>
      <description>&lt;div style="text-align:center;"&gt;
&lt;img src="http://www.upcrc.illinois.edu/images/para_plop.gif" /&gt;
&lt;/div&gt;

&lt;br /&gt;

&lt;p&gt;
I'll be attending &lt;a href="http://www.upcrc.illinois.edu/workshops/paraplop09/program.html"&gt;ParaPLoP 2009&lt;/a&gt; over the next few days. It's a patterns workshop along the traditions of &lt;a href="http://www.hillside.net/plop/2009/"&gt;PLoP&lt;/a&gt; but focusing exclusively on patterns for parallel programming.
&lt;/p&gt;

&lt;p&gt;
I am the author and co-author of the following three patterns paper that you can find on the &lt;a href="http://www.upcrc.illinois.edu/workshops/paraplop09/program.html"&gt;program page&lt;/a&gt;:
&lt;ul&gt;
	&lt;li&gt;Barrier Synchronization&lt;/li&gt;
	&lt;li&gt;Patterns for Collective Communication&lt;/li&gt;
	&lt;li&gt;Patterns for Topology Aware Mapping&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;
Most of the patterns submitted are part of the &lt;em&gt;Our Pattern Language (OPL): A Design Pattern Language for Engineering (Parallel) Software 
&lt;/em&gt; &lt;a href="http://parlab.eecs.berkeley.edu/wiki/patterns/patterns"&gt;catalog&lt;/a&gt; proposed by Kurt Keutzer (EECS UC Berkeley) and Tim Mattson (Intel). OPL is based on Tim's earlier book &lt;a href="http://www.amazon.com/Patterns-Parallel-Programming-Software/dp/0321228111"&gt;&lt;em&gt;Patterns for Parallel Programming&lt;/em&gt;&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
While we have already identified quite a few patterns, there's definitely still a lot of work that needs to be done to produce a sizable pattern language that covers most of the patterns that most programmers will encounter in their programming career. However, I think that the layered approach that the Berkeley folks are advocating has great potential. The layered approach allows programmers to focus on different patterns depending on their skill sets and contributions to their project. At the top layer, &lt;em&gt;application programmers&lt;/em&gt; focus on understanding the high level patterns and take advantage of the parallelism by using libraries and frameworks. And at the bottom layer, &lt;em&gt;platform programmers&lt;/em&gt; focus more on understanding the low level patterns and develop libraries and frameworks to be used by other programmers. 
&lt;/p&gt;

&lt;p&gt;
Writing good software is hard. And writing good parallel programs is even harder. Patterns help make the task easier by showing the best practice principles that novice parallel programmers can learn from. And it's great that both UIUC and UC Berkeley are working together to catalog such patterns.
&lt;/p&gt;

&lt;p&gt;
Ralph Johnson is leading the patterns project as part of the &lt;a href="http://www.upcrc.illinois.edu/index.html"&gt;UPCRC&lt;/a&gt; at UIUC. And one of his projects is to mine for patterns by examining how different algorithms are expressed in different languages and frameworks, in particular those developed at UIUC (e.g. &lt;a href="http://dpj.cs.uiuc.edu/DPJ/Home.html"&gt;Deterministic Parallel Java&lt;/a&gt;, &lt;a href="http://charm.cs.uiuc.edu/"&gt;Charm++&lt;/a&gt;, &lt;a href="http://osl.cs.uiuc.edu/af/"&gt;Actor Foundry&lt;/a&gt;). Kent Beck, Samira Tasharofi, Amin Shali and I will be contributing to this project and our preliminary results can be found &lt;a href="https://agora.cs.illinois.edu/display/transformation/Results+Matrix"&gt;here&lt;/a&gt;.
&lt;/p&gt;

</description>
      <pubDate>Tue, 02 Jun 2009 20:08:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:dfaa7522-bc92-4710-a1ef-18c02a351e22</guid>
      <comments>http://softwareengineering.vazexqi.com/2009/06/02/paraplop09-first-workshop-on-parallel-programming-patterns#comments</comments>
      <category>plop</category>
      <category>patterns</category>
      <category>patterns</category>
      <category>paraplop</category>
      <category>plop</category>
      <link>http://softwareengineering.vazexqi.com/2009/06/02/paraplop09-first-workshop-on-parallel-programming-patterns</link>
    </item>
    <item>
      <title>EuroPLoP '08: Shepherding experience</title>
      <description>&lt;p&gt;
About a month ago, I volunteered as a shepherd for EuroPLoP '08. I shepherded an interesting paper which I hope will be accepted at the conference. I don't think I can talk about the paper here because of confidentiality issues but I can at least describe my experiences with the shepherding process.
&lt;/p&gt;

&lt;img src="/files/sheep.jpg" alt="Shepherding - Image purchased from iStockPhoto"/&gt;

&lt;p&gt;
I did the shepherding process pretty much based on my own experiences both as a teaching assistant and a peer reviewer for my colleagues' papers. Even though this was my first time shepherding, I &lt;em&gt;think&lt;/em&gt; I did a good job based on what my sheep and PC member said. Today, I was pretty much surprised to discover that someone had actually created a pattern language for shepherding -- &lt;a href="http://hillside.net/language-of-shepherding.pdf"&gt;&lt;em&gt;The Language of Shepherding&lt;/em&gt;&lt;/a&gt;. I was also pleasantly surprised that most of my actions were inline with the patterns from the article.
&lt;/p&gt;

&lt;p&gt;
The following paragraphs are titled with a pattern from the &lt;em&gt;The Language of Shepherding&lt;/em&gt; article and my experiences with that pattern.
&lt;/p&gt;

&lt;h2&gt;The Shepherd Knows the Sheep&lt;/h2&gt;
&lt;p&gt;
&lt;blockquote&gt;
Start immediately to build a relationship with the author, and maintain it throughout the 
shepherding. Contact the author right away, even before reading the patterns, and tell the author 
about yourself. Tell the author what to expect from you (such as three iterations), and establish what 
you expect from them in return. Above all, follow through on your commitments! 
&lt;/blockquote&gt;
I found that this works very well. In addition, I also asked the sheep about their own experiences with patterns so that I can tailor my comments to their experiences. I also asked about their long-term goals for their pattern; perhaps they are interested in compiling the pattern into a book or actually implementing the pattern in a working system. Having such questions help the me as the shepherd understand how to tailor the comments. Such questions also help remind the sheep of what they need to do to achieve their own goals for the paper.
&lt;/p&gt;

&lt;h2&gt;Three Iterations&lt;/h2&gt;
&lt;p&gt;
There is usually little time for reviews between the start of the shepherding process and the deadline for submission. Therefore, it is a good idea to establish a &lt;em&gt;schedule&lt;/em&gt; at the beginning of the shepherding process. I have found that having an iteration be about 1.5 weeks long works out well -- a week is usually a bit too short. This allows for some flexibility in the schedule in case some other commitment pops-up halfway through the shepherding process. Once you have established a schedule (make this concrete by listing the actual dates that you expect an iteration) both parties should agree to stick with it. Having a complete paper at the end of an iteration (vs just having chunks here and there) is also better since it allows both parties to gauge the current state of the paper in its entirety and examine its cohesion.
&lt;/p&gt;
&lt;p&gt;
It also helps to have a plan for each iteration. The first iteration should focus on the big picture of the pattern (and whether or not the paper is &lt;em&gt;really&lt;/em&gt; a pattern). Subsequent iterations would be geared toward polishing the paper and making it more cohesive.
&lt;/p&gt;
&lt;p&gt;
The hardest thing about iterations is to be mindful of consistencies. As the paper undergoes various rewrites, some parts can become inconsistent and need to be adjusted. For instance making sure that the same terms are used consistently throughout the paper is an important consistency to check for.
&lt;/p&gt;

&lt;h2&gt;Half a Loaf&lt;/h2&gt;
&lt;p&gt;
I found that small manageable chunks of feedback work well. Small comments tend to be more detailed and concrete and are easier for the sheep to follow. Thus, as the shepherd you are less likely to ramble on too much or dwell into some meta-argument of the paper.
&lt;/p&gt;
&lt;p&gt;
As the original article suggests, it might also be necessary to give a full loaf sometimes. For instance, it is important to provide &lt;em&gt;important feedback as soon as possible&lt;/em&gt; even if this might be a big comment. For instance, some changes are big and need to be made since the entire paper hinges on it. It's best to deliver such feedback early even if it would require a lot of explanation/reworking.
&lt;/p&gt;
&lt;p&gt;
This makes it possible to produce a polished paper within the time constraints by addressing the most important issues first.
&lt;/p&gt;

&lt;h2&gt;Small Patterns&lt;/h2&gt;
&lt;p&gt;
&lt;blockquote&gt;
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
&lt;br /&gt;
-- Antoine de Saint-Exupery, French writer (1900 - 1944)
&lt;/blockquote&gt;
As the pattern progresses through comments from the shepherd and other potential peer reviewers, there is the tendency for the pattern to accrue too much description. It then becomes extremely hard to distill the gist of the pattern.
&lt;/p&gt;
&lt;p&gt;
So it is prudent to keep the pattern short. It is best to prune pathological cases from the pattern that practitioners of the pattern are unlikely to encounter. Or it could also be a symptom that the pattern should be broken down into smaller ones. Anyway, a &lt;em&gt;huge&lt;/em&gt; pattern is a kind of "pattern smell" and should be examined thoroughly.
&lt;/p&gt;

&lt;hr /&gt;
&lt;br /&gt;
&lt;p&gt;
Here are some of my own techniques that were not actually mentioned in the original article but which I found helpful.
&lt;/p&gt;

&lt;h2&gt;Sheep Bleats&lt;/h2&gt;
&lt;p&gt;
Usually as a shepherd you would be familiar with the domain of the paper. However, sometimes there will be certain details that you are not familiar with. Or maybe the sheep makes a very compelling argument for something that you are almost certain is &lt;em&gt;wrong&lt;/em&gt;. Nonetheless you want to avoid unnecessary conflicts/arguments.
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;* * *&lt;/div&gt;
&lt;br /&gt;
&lt;em&gt;Therefore&lt;/em&gt;, give your sheep the benefit of doubt. Ask the sheep for resources to justify and support their claims. Not only will this help make the paper stronger but as the shepherd you also get the chance to improve your own knowledge on the domain. Even if the sheep is wrong, this experience has helped clarify any misconceptions in a non-threatening way.
&lt;/p&gt;

&lt;h2&gt;Multiple Examples&lt;/h2&gt;
&lt;p&gt;
It's hard to explain something just by giving a meta-argument of the issue.
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;* * *&lt;/div&gt;
&lt;br /&gt;
&lt;em&gt;Therefore&lt;/em&gt;, spend the extra time to give a few examples on the issue and let the sheep experience an "aha" moment. Being able to give multiple examples usually clarifies the issue for both the sheep and the shepherd.
&lt;/p&gt;

&lt;h2&gt;Interlaced Comments&lt;/h2&gt;
&lt;p&gt;
&lt;small&gt;This appeared as a candidate patlet in the original article.&lt;/small&gt;
&lt;br /&gt;
You want to point out a particular section of the pattern that requires work by the author. Usually what you would do is write down the page and paragraph number and then describe the problem in the e-mail. However this has some potential problems: 
&lt;ol&gt;
&lt;li&gt;it becomes tedious and confusing to refer to multiple sections.&lt;/li&gt;
&lt;li&gt;there is the potential for miscommunication since people in different countries use papers of different sizes. So the page and paragraph number might be off.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;* * *&lt;/div&gt;
&lt;br /&gt;
&lt;em&gt;Therefore&lt;/em&gt;, put the comments in-line in the original document. This could be done using pencil/pen/colored markers/ etc and then have the document scanned for sending. Or it could be done using a tool like &lt;em&gt;Adobe Acrobat&lt;/em&gt; or &lt;em&gt;Microsoft Word&lt;/em&gt; which allows comments to be embedded. Using such tools also provides automatic comment tracking -- to see which issues have been addressed.
&lt;/p&gt;
&lt;p&gt;
If the use of such tools is not possible it might also be prudent to label the comments so that they can be referred to easily in subsequent follow-ups.
&lt;/p&gt;
&lt;p&gt;
Using a pencil/pen or a tool also allows the embedding of non-text comments e.g. images. drawings, circles which might make it easier to communicate.
&lt;/p&gt;

&lt;h2&gt;Modern Communication&lt;/h2&gt;
&lt;p&gt;
Sometimes it is hard to express something in text. It could either get very verbose or you are afraid that there is a chance for misinterpretation. After all, e-mail doesn't really convey emotion that well.
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;* * *&lt;/div&gt;
&lt;br /&gt;
&lt;em&gt;Therefore&lt;/em&gt;, when possible it might be a good idea to offer other ways of communicating i.e. using Skype. Verbal communication is usually better when both parties are fluent in the same language but can be problematic otherwise.
&lt;/p&gt;
&lt;p&gt;
I offered this option to my sheep but we never got around to using it. My friend Maurice had a chance to use it with his sheep and he told me that it worked well. Setting up a Skype session takes a lot prior arrangement from both parties since it requires you to set up a meeting that could span multiple time zones.
&lt;/p&gt;

&lt;hr /&gt;
&lt;br /&gt;
&lt;p&gt;
As far as I know, &lt;em&gt;The Language of Shepherding&lt;/em&gt; has not been revised/updated since its inception in 1999. So hopefully the details of my experiences will highlight the fact that the article is still very much relevant for use circa 2008. Moreover, perhaps someone would also benefit from some of my suggested patlets.
&lt;/p&gt;

</description>
      <pubDate>Tue, 27 May 2008 16:15:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:891a07b2-2896-4026-beb9-1c09077658dd</guid>
      <comments>http://softwareengineering.vazexqi.com/2008/05/27/europlop-08-shepherding-experience#comments</comments>
      <category>plop</category>
      <category>patterns</category>
      <category>shepherding</category>
      <category>plop</category>
      <category>patterns</category>
      <category>europlop</category>
      <trackback:ping>http://softwareengineering.vazexqi.com/trackbacks?article_id=2234</trackback:ping>
      <link>http://softwareengineering.vazexqi.com/2008/05/27/europlop-08-shepherding-experience</link>
    </item>
  </channel>
</rss>

