<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" version="2.0">
  <channel>
    <title>No Fluff Just Stuff</title>
    <link>http://nofluffjuststuff.com</link>
    <description>The best value in the Java/Open Source conferencing space hands down</description>
    <item>
      <title>This week in #Scala (17/05/2013)</title>
      <link>http://nofluffjuststuff.com/blog/jan_machacek/2013/05/this_week_in_scala_17_05_2013_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>Welcome to another edition of #ThisWeekInScala.   My choice chirp this week: @psnively: It&amp;#8217;s OK to believe #scala is complex. The problem is believing #java, #csharp, #ruby, #python, #php, #javascript aren&amp;#8217;t. &amp;#8230;closely followed by: @jessitron: #Scala and F# are like &amp;#8230; &lt;a href="http://www.cakesolutions.net/teamblogs/2013/05/17/this-week-in-scala-17052013/"&gt;Read more &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;</description>
      <pubDate>Sat, 18 May 2013 08:00:03 CDT</pubDate>
      <guid isPermaLink="true">http://www.cakesolutions.net/teamblogs/?p=3886</guid>
      <dc:creator>Jan Machacek</dc:creator>
    </item>
    <item>
      <title>SSL: Another reason not to ignore IPv6, (Fri, May 17th)</title>
      <link>http://nofluffjuststuff.com/blog/johannes_ullrich/2013/05/ssl_another_reason_not_to_ignore_ipv6__fri_may_17th_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;
	Currently, many public web sites that allow access via IPv6 do so via proxies. This is seen as ...(more)...</description>
      <pubDate>Fri, 17 May 2013 16:00:02 CDT</pubDate>
      <guid isPermaLink="true">http://isc.sans.edu/diary.html?storyid=15833&amp;rss</guid>
      <dc:creator>Johannes Ullrich</dc:creator>
    </item>
    <item>
      <title>Day 15 of 100 Know You Are Managing Time to Market &amp; How To Do It</title>
      <link>http://nofluffjuststuff.com/blog/alan_shalloway/2013/05/day_15_of_100_know_you_are_managing_time_to_market__how_to_do_it?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even"&gt; &lt;p&gt;&lt;span style="margin: 0px; padding: 0px; color: rgb(77, 85, 96); font-family: Arial, Helvetica, sans-serif; line-height: 19.2px;"&gt;Continuing with the &lt;/span&gt;&lt;a href="http://www.netobjectives.com/100-things-you-must-know-be-effective-software-development" style="margin: 0px; padding: 0px; color: rgb(2, 122, 198); text-decoration: none; font-family: Arial, Helvetica, sans-serif; line-height: 19.2px;"&gt;100 Things You Must Know to Be Effective In Software Development&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The purpose of development/IT is to deliver value quickly - not just for a team, but for the entire organization. If you reflect on this, it's not about going fast, it's about removing delays.  Delays are typically waiting for folks, getting feedback late, detecting errors late, or just going to work on something else that has come up.  Scrum, XP, and Kanban all, in their own way, focus on doing this - eliminating delays.  However, instead of listing how these methods do it, let's look at fundamentally at what practice they use to do it.   There are (at least) four ways to accomplish this:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;remove delays in the workflow by making them visible on a value stream map (Lean)&lt;/li&gt;
&lt;li&gt;manage work-in-progress to remove delays in the workflow (Lean, Kanban)&lt;/li&gt;
&lt;li&gt;use cross-functional teams that self-organize to remove delays in the workflow (Lean, Scrum, XP)&lt;/li&gt;
&lt;li&gt;focus on business value delivery - do what it takes to get the most important thing out the door fastest (Lean, Scrum, XP, Kanban)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;These are obviously related, but since one-size does not fit all, if you don't know all of these methods you will certainly not be effective in certain situations.&lt;/p&gt;
&lt;p&gt;Let's go through each of these briefly:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Remove delays in the workflow. &lt;/strong&gt;Sometimes mapping out the workflow is all it takes to get to the root cause of problems.  Attending to delays and thrashing at a macro level can lead to insights how to remove them.  &lt;a href="http://www.netobjectives.com/atdd"&gt;Acceptance Test-Driven Development&lt;/a&gt; is another method to remove delays.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Manage work-in-progress to remove delays in the workflow.  &lt;/strong&gt;Many (most?) delays in workflow are due to working on too many things. If you manage the size and number of things being worked on, the delays you want to eliminate will be reduced significantly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use cross-functional teams that self-organize to remove delays in the workflow. &lt;/strong&gt;Scrum works, when it does, because its core mandate of a cross-functional team provides the structure from which to eliminate delays in workflow. Having all the people you need to get the job done makes it relatively straightforward to eliminate any delays in the workflow.  Scrum hits the wall when it is attempted to be used across teams because it provides no viable  mechanism to handle cross-team delays. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Focus on business value delivery - do what it takes to get the most important thing out the door fastest. &lt;/strong&gt;If one focuses on delivering business value, one will do what it takes to:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;eliminate delays in the workflow&lt;/li&gt;
&lt;li&gt;will focus on the most important work - managing how much work is being done to not lose focus from the most important stuff&lt;/li&gt;
&lt;li&gt;will have all the people necessary to get the job done quickly (notice what you do when you have a high priority, severity one issue&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;These are essential the first 3 items on the list.&lt;/p&gt;
&lt;p&gt;The bottom line is don't get hung up on your method - understand why each can work and use them when that practice is most effective. &lt;/p&gt;
&lt;p&gt;Want to learn how to do this in your company?  Send me a note.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; color: rgb(77, 85, 96); font-family: Arial, Helvetica, sans-serif; line-height: 19.2px;"&gt;&lt;span style="margin: 0px; padding: 0px; line-height: 19.2px;"&gt;Al Shalloway&lt;/span&gt;&lt;br style="margin: 0px; padding: 0px;" /&gt;&lt;span style="margin: 0px; padding: 0px; line-height: 19.2px;"&gt;CEO, Net Objectives&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0px; padding: 0px; color: rgb(77, 85, 96); font-family: Arial, Helvetica, sans-serif; line-height: 19.2px;"&gt; &lt;/div&gt;
&lt;div style="margin: 0px; padding: 0px; color: rgb(77, 85, 96); font-family: Arial, Helvetica, sans-serif; line-height: 19.2px;"&gt;
&lt;p style="margin: 0px 0px 1.4em; padding: 0px; line-height: 19.2px; font-size: 1em;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;em style="margin: 0px; padding: 0px;"&gt;Take the 100 in 100 Challenge. &lt;/em&gt;&lt;/strong&gt;I'm committing to add one entry each day.  I'm asking people to accept the challenge of reading them.  If you accept this challenge, please enter a comment on the &lt;a href="http://www.netobjectives.com/blogs/day-0-100-100-project" style="margin: 0px; padding: 0px; color: rgb(2, 122, 198); text-decoration: none;"&gt;blog that started it all &lt;/a&gt;and tell me why you are taking up the challenge - that is, what you'd like to learn&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
 &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="field field-name-field-staff-member field-type-user-reference field-label-above"&gt;&lt;div class="field-label"&gt;Author:&amp;nbsp;&lt;/div&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even"&gt;&lt;a href="/users/al-shalloway"&gt;alshall&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NetObjectivesThoughtsBlog/~4/i1up15rxDVo" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 17 May 2013 13:00:02 CDT</pubDate>
      <guid isPermaLink="true">1087 at http://www.netobjectives.com</guid>
      <dc:creator>Alan Shalloway</dc:creator>
    </item>
    <item>
      <title>e-netprotections.su ?, (Fri, May 17th)</title>
      <link>http://nofluffjuststuff.com/blog/johannes_ullrich/2013/05/e_netprotections_su___fri_may_17th_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Like with .biz, I sometimes have the impression that  ...(more)...</description>
      <pubDate>Fri, 17 May 2013 11:00:12 CDT</pubDate>
      <guid isPermaLink="true">http://isc.sans.edu/diary.html?storyid=15818&amp;rss</guid>
      <dc:creator>Johannes Ullrich</dc:creator>
    </item>
    <item>
      <title>ISC StormCast for Friday, May 17th 2013 http://isc.sans.edu/podcastdetail.html?id=3314, (Fri, May 17th)</title>
      <link>http://nofluffjuststuff.com/blog/johannes_ullrich/2013/05/isc_stormcast_for_friday_may_17th_2013_http__isc_sans_edu_podcastdetail_html_id_3314__fri_may_17th_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>...(more)...</description>
      <pubDate>Fri, 17 May 2013 08:00:09 CDT</pubDate>
      <guid isPermaLink="true">http://isc.sans.edu/podcastdetail.html?id=3314</guid>
      <dc:creator>Johannes Ullrich</dc:creator>
    </item>
    <item>
      <title>Unfolding brains at FITC Amsterdam</title>
      <link>http://nofluffjuststuff.com/blog/denise_jacobs/2013/05/unfolding_brains_at_fitc_amsterdam?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;There are some experiences that are so good that they set the bar for any other experience past or future to try to match or emulate. Facilitating my first &lt;a href="http://fitc.ca/presentation/workshop-the-unfolded-brain-skyrocketing-creative-productivity/"&gt;full day workshop on creativity at FITC Amsterdam&lt;/a&gt; goes on record as being one of the best days of my life. Yes, it was &lt;em&gt;that&lt;/em&gt; good. Seriously.&lt;/p&gt;
&lt;p&gt;For starters, I was bolstered by the fact that I had been in contact with a few of the attendees beforehand. One woman emailed me in advance to tell me how excited she was about the workshop. Another gentleman flew in to Amsterdam for the day in from Madrid, Spain expressly to take the workshop (he further interviewed me afterwards to get &lt;a href="http://ieschoolofcommunication.blogs.ie.edu/2013/03/12/inside-the-creativity/"&gt;Inside the Creativity&lt;/a&gt;), then left soon after it was over to catch his flight back home. &lt;/p&gt;
&lt;p&gt;I was further encouraged by the number of attendees: 16, which was more than I thought would be there. Because the workshop focused on more &amp;#8220;soft skills&amp;#8221;, I figured that at a technical conference it would be the least well-attended out of all the workshops offered. Much to my surprise and delight, it turns out that The Unfolded Brain had the highest number of attendees of the &lt;a href="http://fitc.ca/event/am13/schedule/?show=10861"&gt;four workshops that day&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There &lt;em&gt;was&lt;/em&gt; minor hiccup to the day: my computer&amp;#8217;s hard drive completely died at 6am, four hours before the workshop was about to start. However, my new method of preparation not only put me in good stead, but totally saved me. Having used the &lt;a href="http://www.post-it.com/wps/portal/3M/en_US/Post_It/Global/Solutions/Big-Pads/"&gt;Post-it Big Pads&lt;/a&gt; to &lt;a href="http://denisejacobs.com/blog/2013/02/12/prepping-for-the-unfolded-brain-workshop-at-fitc-amsterdam/"&gt;organize my ideas and work out the course flow&lt;/a&gt;, I was able to use them as my workshop notes with all of the reminders of the content that I wanted to cover, the exercises to do in class, and the practices for the attendees to work on at home.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://denisejacobs.com/wp-content/uploads/2013/04/IMG_3631.jpg"&gt;&lt;img src="http://denisejacobs.com/wp-content/uploads/2013/04/IMG_3631-1024x768.jpg" alt="IMG_3631" width="500" class="aligncenter wp-image-887" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The attendees were ready, eager to do some work, and eager for the content. In order to get an idea of what people were hoping to get out of the day, I had everyone write some of their goals for the workshop on post-it notes and put them at the front of their desks. Everyone had great ideas, and it was great for me to see them and know that my content was in alignment with what folks were looking to get out of the course.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://instagram.com/p/Xs56MMjTVq/"&gt;&lt;img src="http://denisejacobs.com/wp-content/uploads/2013/04/33a73cd69d8111e2b4bf22000aa80174_7.jpg" alt="workshop wants" width="500" class="aligncenter wp-image-892" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After that, I intro-ed the content, and dove in with the first exercise. Despite not having any slides and doing the whole day &amp;#8220;analog&amp;#8221;, the information flowed and everyone delved into the assignments with gusto. Some of the exercises were individual, some required a partner, a few required small groups, and one exercise included everyone in the class at once.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://denisejacobs.com/wp-content/uploads/2013/04/IMG_3778.jpg"&gt;&lt;img src="http://denisejacobs.com/wp-content/uploads/2013/04/IMG_3778-1024x1024.jpg" alt="IMG_3778" width="500" class="aligncenter  wp-image-900" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://denisejacobs.com/wp-content/uploads/2013/04/IMG_3779.jpg"&gt;&lt;img src="http://denisejacobs.com/wp-content/uploads/2013/04/IMG_3779-1024x1024.jpg" alt="IMG_3779" width="500" class="aligncenter wp-image-901" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://denisejacobs.com/wp-content/uploads/2013/04/IMG_3780.jpg"&gt;&lt;img src="http://denisejacobs.com/wp-content/uploads/2013/04/IMG_3780-1024x1024.jpg" alt="IMG_3780" width="500" class="aligncenter wp-image-902" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For me, the experience was amazing. I felt very honored to be able to share my process for enhancing and expanding creative productivity. Workshops are truly my element, as it was through teaching a hands-on &lt;a href="http://denisejacobs.com/botani/"&gt;handmade herbal soapmaking&lt;/a&gt; workshop back in 1998 that showed me my gift for teaching and love for sharing practical information. And from the feedback, no slides was no problem:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&amp;#8220;Nice job presenting ad-hoc (broken computer)&amp;#8221;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;
&amp;#8220;Great work solving the session without your computer.&amp;#8221;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;
&amp;#8220;Laptop was broke, so no slides could be shown, but I didnt miss them.&amp;#8221;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;At the end of the workshop, the students seemed buzzing with positivity and possibility, and many lingered past the end of the course to chat with each other and stay in the zone of the day. The blogger for the conference was one of the workshop participants, and he wrote up &lt;a href="http://fitc.ca/article/fitc-amsterdam-2013-denise-jacobs-knows-a-thing-or-two-about-hacking-the-creative-brain/"&gt;a really nice recap of the day&lt;/a&gt; for the conference site.&lt;/p&gt;
&lt;p&gt;But that only partially explains why the day was so poignant for me. You know those moments when you have a vision of how your life could be better in the future than it is at the moment? Well, doing this work was part of a vision that came to me at the end of February 2010, when it became clear to me that I wanted to help people feel that incredible surge of energy that you get when you&amp;#8217;ve created something amazing and have been in &amp;#8220;the zone&amp;#8221; creatively. This day and this workshop represented the culmination of three years of work in creating this experience, not just for myself, but for the people in the workshop as well. And seeing that I have the power to create something like this was phenomenal.&lt;/p&gt;
&lt;p&gt;If you are wondering what happened to my computer, it turns out that &lt;a href="https://twitter.com/denisejacobs/status/303565874013536256"&gt;had to spend all of the next day at the Apple Store working to get it fixed&lt;/a&gt;. But that did not impede on the great feelings that I had from the workshop the day before, which carried me through the rest of the week, right up to the next amazing experience that I had in Frankfurt, Germany the last week of February. That, however, is an entirely separate blog post.&lt;/p&gt;
&lt;p&gt;Full disclaimer: This blog post is sponsored by &lt;a href="www.post-it.com/bigpad"&gt;Post-it Brand Big Pads&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Thu, 16 May 2013 16:00:02 CDT</pubDate>
      <guid isPermaLink="true">http://denisejacobs.com/?p=882</guid>
      <dc:creator>Denise Jacobs</dc:creator>
    </item>
    <item>
      <title>ISC StormCast for Thursday, May 16th 2013 http://isc.sans.edu/podcastdetail.html?id=3311, (Thu, May 16th)</title>
      <link>http://nofluffjuststuff.com/blog/johannes_ullrich/2013/05/isc_stormcast_for_thursday_may_16th_2013_http__isc_sans_edu_podcastdetail_html_id_3311__thu_may_16th_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>...(more)...</description>
      <pubDate>Thu, 16 May 2013 13:00:05 CDT</pubDate>
      <guid isPermaLink="true">http://isc.sans.edu/podcastdetail.html?id=3311</guid>
      <dc:creator>Johannes Ullrich</dc:creator>
    </item>
    <item>
      <title>Day 14 of 100 There is more than customer value</title>
      <link>http://nofluffjuststuff.com/blog/alan_shalloway/2013/05/day_14_of_100_there_is_more_than_customer_value?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even"&gt; &lt;p&gt;&lt;span style="margin: 0px; padding: 0px; color: rgb(77, 85, 96); font-family: Arial, Helvetica, sans-serif; line-height: 19.2px;"&gt;Continuing with the &lt;/span&gt;&lt;a href="http://www.netobjectives.com/100-things-you-must-know-be-effective-software-development" style="margin: 0px; padding: 0px; color: rgb(2, 122, 198); text-decoration: none; font-family: Arial, Helvetica, sans-serif; line-height: 19.2px;"&gt;100 Things You Must Know to Be Effective In Software Development&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While adding value to the customer is the ultimate goal, there is more than customer value. There are actually at least five different types of business value:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;knowing what will be of value to the customer&lt;/li&gt;
&lt;li&gt;knowing how to build this&lt;/li&gt;
&lt;li&gt;building this&lt;/li&gt;
&lt;li&gt;deploying this value so it is consumed by the customer&lt;/li&gt;
&lt;li&gt;being able to do any of the above faster&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;All of these are of business value.  The last one is valuable to the customer and can provide a unique selling proposition to them.  For example, a company may not have the most features, but if they are in a position to add new features faster when requested, they may be more attractive to customers than businesses with lots of features (many likely not used) that can't add new ones quickly enough.&lt;/p&gt;
&lt;p&gt;If you are doing Scrum and you realize that the team should be about delivering &lt;em&gt;business&lt;/em&gt; value every sprint, many insights present themselves.  &lt;span style="line-height: 1.538em;"&gt;When one is not able to deliver quickly, one still wants to discover and buidl thin, vertical slices of funcationality quickly.  If one is doing Kanban and there is no timebox, the need to deliver business value quickly requires you to slice stories up into smaller chunks.  One should not build what one is not sure of.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;A customer centric focus is a good thing since it keeps the customer in mind when we are building our software instead of looking at the systems we are building.  Software, in itself, is useless.  It becomes useful only if it assists the customer.  But that does not mean we don't have value in learning how to achieve customer value.  &lt;/p&gt;
&lt;p&gt;&lt;span style="color: rgb(77, 85, 96); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 19.2px;"&gt;Enjoy, and, of course, ask questions on our &lt;/span&gt;&lt;a href="http://www.netobjectives.com/resources/user-groups" style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 19.2px; color: rgb(2, 122, 198);"&gt;user groups&lt;/a&gt;&lt;span style="color: rgb(77, 85, 96); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 19.2px;"&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="color: rgb(77, 85, 96); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 19.2px;"&gt; &lt;/div&gt;
&lt;div style="color: rgb(77, 85, 96); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 19.2px;"&gt;&lt;span style="line-height: 19.2px;"&gt;Al Shalloway&lt;/span&gt;&lt;br style="margin: 0px; padding: 0px;" /&gt;&lt;span style="line-height: 19.2px;"&gt;CEO, Net Objectives&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: rgb(77, 85, 96); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 19.2px;"&gt; &lt;/div&gt;
&lt;div style="color: rgb(77, 85, 96); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 19.2px;"&gt;
&lt;p style="margin-top: 0px; margin-bottom: 1.4em; line-height: 19.2px; font-size: 1em;"&gt;&lt;strong&gt;&lt;em&gt;Take the 100 in 100 Challenge. &lt;/em&gt;&lt;/strong&gt;I'm committing to add one entry each day.  I'm asking people to accept the challenge of reading them.  If you accept this challenge, please enter a comment on the &lt;a href="http://www.netobjectives.com/blogs/day-0-100-100-project" style="color: rgb(2, 122, 198);"&gt;blog that started it all &lt;/a&gt;and tell me why you are taking up the challenge - that is, what you'd like to learn&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
 &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NetObjectivesThoughtsBlog/~4/Mb3hfrCUwzc" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 16 May 2013 11:00:05 CDT</pubDate>
      <guid isPermaLink="true">1086 at http://www.netobjectives.com</guid>
      <dc:creator>Alan Shalloway</dc:creator>
    </item>
    <item>
      <title>Cisco TelePresence Supervisor MSE 8050 Denial of Service Vulnerability, (Thu, May 16th)</title>
      <link>http://nofluffjuststuff.com/blog/johannes_ullrich/2013/05/cisco_telepresence_supervisor_mse_8050_denial_of_service_vulnerability__thu_may_16th_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;
	Cisco TelePresence Supervisor MSE 8050 contains a vulnerability that may allow an unauthentica ...(more)...</description>
      <pubDate>Thu, 16 May 2013 08:00:01 CDT</pubDate>
      <guid isPermaLink="true">http://isc.sans.edu/diary.html?storyid=15815&amp;rss</guid>
      <dc:creator>Johannes Ullrich</dc:creator>
    </item>
    <item>
      <title>Microsoft Security Advisory overview, (Tue, May 14th)</title>
      <link>http://nofluffjuststuff.com/blog/johannes_ullrich/2013/05/microsoft_security_advisory_2846338__tue_may_14th_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;h4&gt;
	Malware Protection Engine&lt;/h4&gt;
&lt;p&gt;
	Microsoft released&amp;nbsp;&lt;a href="http://technet.microso ...(more)...</description>
      <pubDate>Wed, 15 May 2013 16:00:01 CDT</pubDate>
      <guid isPermaLink="true">http://isc.sans.edu/diary.html?storyid=15800&amp;rss</guid>
      <dc:creator>Johannes Ullrich</dc:creator>
    </item>
    <item>
      <title>Microsoft May 2013 Black Tuesday Overview, (Tue, May 14th)</title>
      <link>http://nofluffjuststuff.com/blog/johannes_ullrich/2013/05/microsoft_may_2013_black_tuesday_overview__tue_may_14th_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;
	Overview of the &lt;a href="http://technet.microsoft ...(more)...</description>
      <pubDate>Wed, 15 May 2013 13:00:05 CDT</pubDate>
      <guid isPermaLink="true">http://isc.sans.edu/diary.html?storyid=15791&amp;rss</guid>
      <dc:creator>Johannes Ullrich</dc:creator>
    </item>
    <item>
      <title>The Case Against Synchronous Worker APIs</title>
      <link>http://nofluffjuststuff.com/blog/alex_russell/2013/05/the_case_against_synchronous_worker_apis?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Several times in the past few months I&amp;#8217;ve been presented with this question: is it good or useful to provide synchronous APIs to &lt;a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html"&gt;web workers&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;Having considered the question at some length, it seems to me the answer must now be &amp;#8220;&lt;em&gt;no&lt;/em&gt;&amp;#8220;.&lt;/p&gt;
&lt;p&gt;Consider IndexedDB. Despite being un-implemented in any browser, somebody did the arduous work to &lt;a href="http://www.w3.org/TR/IndexedDB/#sync-database"&gt;specify a second synchronous version of its API&lt;/a&gt; which is meant to be only available inside of Workers. That&amp;#8217;s in addition to the still-available asynchronous API, of course. I came across this while attempting to &lt;a href="https://github.com/slightlyoff/DOMFuture/tree/master/reworked_APIs/IndexedDB"&gt;rework the async IDB API to use Futures&lt;/a&gt;, an attempt to fix the hideous usability of the current async API in a backwards-compatible way.&lt;/p&gt;
&lt;p&gt;So why not the sync version? At least 2 reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The async version doesn&amp;#8217;t have to be as nasty as the current API would lead you to believe. Yes, IDB is hideously deformed: it abuses events for one-time operations and in order to do so creates non-obvious control flow contracts in order to give users time to set up listeners. It makes you dig delivered values out of event objects. It misses obvious API conveniences and makes things implicit that shouldn&amp;#8217;t be (transaction closure, etc.).&lt;/li&gt;
&lt;li&gt;There&amp;#8217;s very little you want to do that is really long running and &lt;em&gt;truly&lt;/em&gt; synchronous. Even things that look like they&amp;#8217;re a good fit at first blush break down quickly. Just think of the user experience: who wants their laptop fan spinning up, their lap getting warm, and their precious battery indicator slipping towards a powerless coma without being able to either find what is causing it or, better, some UI that communicates what work is being done on their behalf and a way to cancel it if necessary. Getting work off the main thread is what allows apps to do work for users without locking up those UI indicators, but to provide any ability to interrupt the task or broadcast progress, it must yield to the main event loop.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&amp;#8217;s this second concern that I think it truly fatal to the cause of sync worker APIs: assuming they work and are popular, they will create a world in which it&amp;#8217;s necessary to put limits on their overall running time&amp;#8230;limits that will be circumvented by breaking up the work into smaller chunks and dealing with it asynchronously inside the worker. Likewise, anyone building a serious app that&amp;#8217;s trying to do the right thing by the user will factor their worker&amp;#8217;s tasks into small enough chunks that they can both service &amp;#8220;stop&amp;#8221; messages and distribute progress notifications to the UI. There might be scenarios where such messages aren&amp;#8217;t necessary and where users aren&amp;#8217;t coveting CPUs and batteries&amp;#8230;where sending SIGHUP doesn&amp;#8217;t matter. But the intersection of those scenarios and the client-side web seems mostly to be a happy accident: your code might not have encountered enough data to create the problems. Yet.&lt;/p&gt;
&lt;p&gt;This is particularly clear in the IDB cases: upgrading, iterating over, and updating hundreds of thousands of rows of data is the sort of thing that will take a while, and is likely in response to some application semantic the user cares about: synchronizing mail, migrating to a faster schema layout in the process of some upgrade, etc. All of this might work fine in a dev environment with a (small) staging set of data&amp;#8230;but it&amp;#8217;s recipe for disaster when power-users with tons of data encounter it. What then? If the APIs an app depends on are all synchronous, it&amp;#8217;s a huge boulder to roll up a hill to provide notifications, chunk up work, and refactor around async-ish patterns that chunk work up. If the work was async in the first place, the burden is much lower. So even apps that aren&amp;#8217;t Doing It Right (TM) are likely to reap some benefit down the line from thinking in terms of async first.&lt;/p&gt;
&lt;p&gt;There are other arguments that you can field against these sorts of APIs, particularly ones that double-up API surface area, but it doesn&amp;#8217;t seem to me that they&amp;#8217;re necessary. The person attempting to justify synchronous workers to provides a good argument for ergonomics and learnability still has all their work ahead of them: they must show that these APIs are not harmful to the experiences the addition of works Workers to the platform were justified by in the first place. And I fear they cannot do so without violating core JS semantics.&lt;/p&gt;
&lt;p&gt;So let&amp;#8217;s pour one out for our sync API dreams: we&amp;#8217;re gonna miss you, control flow integration. But not for too long. &lt;a href="http://wiki.ecmascript.org/doku.php?id=harmony:proposals"&gt;&lt;code&gt;Generators&lt;/code&gt;, &lt;code&gt;iterators&lt;/code&gt;, and &lt;code&gt;yield&lt;/code&gt; will see you avenged&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Wed, 15 May 2013 11:00:09 CDT</pubDate>
      <guid isPermaLink="true">http://infrequently.org/?p=2047</guid>
      <dc:creator>Alex Russell</dc:creator>
    </item>
    <item>
      <title>ISC StormCast for Wednesday, May 15th 2013 http://isc.sans.edu/podcastdetail.html?id=3308, (Wed, May 15th)</title>
      <link>http://nofluffjuststuff.com/blog/johannes_ullrich/2013/05/isc_stormcast_for_wednesday_may_15th_2013_http__isc_sans_edu_podcastdetail_html_id_3308__wed_may_15th_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>...(more)...</description>
      <pubDate>Wed, 15 May 2013 08:00:03 CDT</pubDate>
      <guid isPermaLink="true">http://isc.sans.edu/podcastdetail.html?id=3308</guid>
      <dc:creator>Johannes Ullrich</dc:creator>
    </item>
    <item>
      <title>GlassFish 3.1 Is Now Available</title>
      <link>http://nofluffjuststuff.com/blog/jason_lee1/2013/05/glassfish_3_1_is_now_available?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;div class="paragraph"&gt;  
        &lt;p&gt;Merry Christmas!&lt;/p&gt;
      &lt;/div&gt;&lt;div class="paragraph"&gt;  
        &lt;p&gt;“Do not be afraid; for behold, I bring you good news of great joy which will be for all the people; for today in the city of David there has been born for you a Savior, who is Christ the Lord.” — http://www.biblegateway.com/passage/?search=luke%202:1-20&amp;amp;version=NASB[Luke 2:1-20]&lt;/p&gt;
      &lt;/div&gt;&lt;div class="paragraph"&gt;  
        &lt;p&gt;&lt;iframe width="560" height="315" src="http://www.youtube.com/embed/x3oklXe0HUM" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
      &lt;/div&gt;</description>
      <pubDate>Tue, 14 May 2013 16:00:04 CDT</pubDate>
      <guid isPermaLink="true">http://blogs.steeplesoft.com/posts/2011/02/28/glassfish-3-1-is-now-available/</guid>
      <dc:creator>Jason Lee</dc:creator>
    </item>
    <item>
      <title>Day 13 of 100 Systems Thinking From Individual to Organization</title>
      <link>http://nofluffjuststuff.com/blog/alan_shalloway/2013/05/day_13_of_100_systems_thinking_from_individual_to_organization?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even"&gt; &lt;p&gt;Hi everyone.  To pick the pace back up I'm going to write either shorter blogs or, as in today, I will take some previous work and mold it into this work.  I appreciate your patience and will get things going again.&lt;/p&gt;
&lt;p&gt;&lt;span style="line-height: 19.2px;"&gt;Continuing with the &lt;/span&gt;&lt;a href="http://www.netobjectives.com/100-things-you-must-know-be-effective-software-development" style="color: rgb(2, 122, 198); line-height: 19.2px;"&gt;100 Things You Must Know to Be Effective In Software Development&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I blieve that one of the essential components of successful Agile adoption across teams is systems thinking. “Systems thinking” is the process of understanding how things, regarded as systems, influence one another within a whole. In software development, this means looking at: product selection, product prioritization, requirements, architecture, design, code, test, quality assurance, delivery, integration, management, HR, and more. In other words, it means looking at the development workflow as a whole. Optimizing one part of the workflow may have no impact overall and can even be harmful to the whole.&lt;/p&gt;
&lt;p&gt;Lean offers a particular way to look at the system: the value stream. The value stream is the flow of work from when an idea is first conceived through implementation, deployment and eventual use or consumption. The time from start to finish is called “cycle time.” Lean thinking says that actions that lower cycle time are usually good and those that lengthen cycle time are probably not. Lean thinking looks for ways to remove delays which results in eliminating unnecessary work. This leads to improved quality and lowers costs.&lt;/p&gt;
&lt;p&gt;When multiple teams and products are involved, this holistic approach extends to the entire set of projects being worked on. For example, it may be that delaying one project is worthwhile if another project can deliver more value, more than the cost of delaying the first project. This gives us helpful questions for deciding whether to start a new project: “Will this new project add to the value being delivered?” and “Will adding this project slow down or negatively impact the ability of existing projects to deliver value?” &lt;/p&gt;
&lt;p&gt;While systems thinking is essential for scale, it is also useful in the adoption of Agile at the team.  Here's a blog from August of last year that discusses how systems thinking can be useful when difficulties in adopting an Agile method arise:&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;span class="date"&gt;August 31, 2012 — Posted by &lt;a href="http://www.netobjectives.com/blogs/13"&gt;Al Shalloway&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class="content"&gt;
&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;
&lt;div class="field-items"&gt;
&lt;div class="field-item even"&gt;
&lt;p style="margin-left: 40px;"&gt;At Net Objectives we’ve trained tens of thousands in Scrum and Kanban.  We don’t really play sides in which method we use.  Our own experience is that hybrid methods are typically needed in large scale transitions – which is our specialty.  Regardless of which method our clients employ, we always suggest a system-thinking approach within the context of Lean-thinking.&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;Lean-thinking is actually a kind of systems thinking.  It suggests that most of the problems that are encountered are due to faults in the system.  That we should not blame people for errors, but rather look to see how the system they are in is working. &lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;A variant of this would be to look how a systems thinker would approach the problem of Scrum-but and Kanban-but. As an aside, I want to point out the Kanban community discourages the use of the term Kanban-but since it focuses on the people aspect of not doing Kanban. Systems thinkers would also  discourage the use of Scrum-but as a derogatory term for the people not doing Scrum properly.   He wouldn’t suggest that people are doing Scrum-but because they aren’t motivated enough, he would ask “why are they not doing Scrum properly?”  Is it they don’t understand the benefit of the Scrum practice they are not doing?  Is it that it would be too difficult to do it? What is it about Scrum itself that contributes to these challenges? &lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;By focusing on the system, we avoid putting the blame on the people.  Now it may be that the people aren’t motivated enough.  But as soon as you draw that conclusion, you have lost all power in helping them.  It is one reason the &lt;a href="http://en.wikipedia.org/wiki/Fundamental_attribution_error"&gt;Fundamental Attribution Error &lt;/a&gt;is so deadly and being aware of it can be so powerful.  Regardless of whether the judgment is true, once it has been made there is little that can be done.&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;Instead of finding what is wrong with someone that is not doing what they are supposed to, systems thinkers look for what the people experiencing challenges are looking at (or not looking at) that has them make poor choices. We assume they are a good, intelligent, motivated person looking at the wrong things and therefore making bad decisions.  Not that there is something wrong in their character such as a lack of motivation or persistence or courage.&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;In software development, the “system” is often the workflow they find themselves in.  In other words, if we’re talking about a developer, when do they get the opportunity to talk to customers, to testers?  Do they get requirements and the validation for these requirements at the same time via Acceptance Test-Driven Development or not?  These are choices often outside of their control.&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;My suggestion is that if you are using a method that has a common set of challenges, that perhaps one should look at modifying the method to avoid the challenges instead of trying to motivate your people into putting more effort into overcoming them.  I’m not suggesting motivation isn’t important – it is. And sometimes working harder and having more courage is the only route to success available.  But my experience is that people in this field are very motivated.  The question is, how can we best take advantage of that motivation?&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;For more on systems thinking, I highly recommend &lt;a href="http://www.amazon.com/The-Systems-Bible-Beginners-Guide/dp/0961825170/ref=sr_1_1?ie=UTF8&amp;amp;qid=1368535941&amp;amp;sr=8-1&amp;amp;keywords=john+gall"&gt;The Systems Bible&lt;/a&gt; by John Gall.&lt;/p&gt;
 &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NetObjectivesThoughtsBlog/~4/KjxW39zqVjI" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 14 May 2013 13:00:04 CDT</pubDate>
      <guid isPermaLink="true">1085 at http://www.netobjectives.com</guid>
      <dc:creator>Alan Shalloway</dc:creator>
    </item>
    <item>
      <title>Android Panel and Kiosk Apps</title>
      <link>http://nofluffjuststuff.com/blog/james_harmon/2013/05/android_panel_and_kiosk_apps_2?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;span style="font-family: Verdana, sans-serif;"&gt;One advantage of doing business in the Chicago area is getting to see lots of manufacturers. &amp;nbsp;The Midwest still builds stuff.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;As an Android developer who gets to talk with many of the local companies I've recently noticed a pattern in the Android space that I wanted to share.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;High end tools and machines often contain some kind of display that describes the status of the tool or provides a way to configure or operate the tool. &amp;nbsp;And by "tools and machines" I'm covering a huge variety of products.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Look at the control panel for the new LifeFitness exercise machines below.&lt;/span&gt;&lt;br /&gt;  &lt;img alt="" border="0" height="225" src="http://www.lifefitness.com/static/cms_workspace/products/commercial/Cardio/Discover/Entertainment.png" title="Android Panel for Exercise Machine" width="320" /&gt; &lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;It is pretty clear that this could be done using an Android device (and I believe it is).&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I call this kind of application a "Panel" app.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;What 6 qualities differentiate this from a typical app.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;li&gt;Fixed in place (built into the machine or tool)&lt;/li&gt;&lt;li&gt;Custom user interface (doesn't follow the Android UI guidelines)&lt;/li&gt;&lt;li&gt;Other apps are unavailable or hidden (the user can't run their own apps)&lt;/li&gt;&lt;li&gt;Targeted to a very small set of devices (only runs on the tablet built into the machine)&lt;/li&gt;&lt;li&gt;Users engage with it frequently and over a long period of time (so they can learn custom interface)&lt;/li&gt;&lt;li&gt;interface with underlying machine or tool&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: Verdana, sans-serif;"&gt;The other similar, but slightly different, kind of device runs a single purpose app &amp;nbsp;also. I call it a "Koisk" app.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The 4 characteristics of a Kiosk app&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;li&gt;Public (think shopping mall)&lt;/li&gt;&lt;li&gt;Wider audience (user has brief use of it, so must be easy to use which means that it should work like apps the user is familiar with) follow design guidelines&lt;/li&gt;&lt;li&gt;Fixed in place (mounted on a wall)&lt;/li&gt;&lt;li&gt;Locked down (can only run target app)&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt; &lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;These apps never appear in the marketplace but are great opportunities for Android developers. &amp;nbsp;Keep them in mind when you search for your next consulting gig.&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 14 May 2013 11:00:07 CDT</pubDate>
      <guid isPermaLink="true">tag:blogger.com,1999:blog-7249924828832518236.post-7832343074838018591</guid>
      <dc:creator>James Harmon</dc:creator>
    </item>
    <item>
      <title>ISC StormCast for Tuesday, May 14th 2013 http://isc.sans.edu/podcastdetail.html?id=3305, (Tue, May 14th)</title>
      <link>http://nofluffjuststuff.com/blog/johannes_ullrich/2013/05/isc_stormcast_for_tuesday_may_14th_2013_http__isc_sans_edu_podcastdetail_html_id_3305__tue_may_14th_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>...(more)...</description>
      <pubDate>Tue, 14 May 2013 08:00:02 CDT</pubDate>
      <guid isPermaLink="true">http://isc.sans.edu/podcastdetail.html?id=3305</guid>
      <dc:creator>Johannes Ullrich</dc:creator>
    </item>
    <item>
      <title>Central Ohio Software Symposium - Jun 7 - 9, 2013</title>
      <link>http://nofluffjuststuff.com/conference/columbus/2013/06/home?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss</link>
      <description>&lt;div style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 10pt;"&gt;&#xD;
&#xD;
&lt;p&gt;&#xD;
No Fluff Just Stuff is pleased to announce the &lt;a style="color: #336699; text-decoration: none;" href="http://nofluffjuststuff.com/conference/columbus/2013/06/home?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;Central Ohio Software Symposium&lt;/a&gt;, Jun 7 - 9, 2013.&#xD;
&lt;/p&gt;&#xD;
&#xD;
	&lt;div style="background-color: #0860A9; color: #EFCE52; font-weight: bold; padding: 5px 5px 5px 5px;"&gt;&#xD;
		&lt;em&gt;Catch these Featured Sessions&lt;/em&gt;&#xD;
	&lt;/div&gt;&#xD;
&#xD;
	&lt;div style="border: 1px solid #999999; padding: 0 5px 0 5px;"&gt;&#xD;
&#xD;
	&lt;table cellpadding="0" cellspacing="0" style="font-size: 10pt;"&gt;&#xD;
&#xD;
	&#xD;
	&lt;tr&gt;&#xD;
		&lt;td&gt;&#xD;
&#xD;
		&lt;div style="margin: 5px 0 4px 0;"&gt;&#xD;
			&lt;b&gt;&lt;a style="color: #336699; text-decoration: none;" href="http://nofluffjuststuff.com/conference/columbus/2013/06/session?id=28683?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;Introduction to Virtual Machines and Interpreters&lt;/a&gt;&lt;/b&gt;&#xD;
			&lt;br /&gt;&lt;em&gt;by Douglas Hawkins&lt;/em&gt;&#xD;
		&lt;/div&gt;&#xD;
&#xD;
					&lt;a style="color: #336699; text-decoration: none;" href="http://nofluffjuststuff.com/conference/speaker/douglas_hawkins?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;&#xD;
				&lt;img src="http://nofluffjuststuff.com//s/images/bio/30820_Hawkins_20120109_175826_medium.jpg" width="100" border="0" align="left" style="margin: 5 5 5 5;"/&gt;&#xD;
			&lt;/a&gt;&#xD;
				Have you ever wondered what goes on inside the virtual machines and &#xD;
interpreters that we use every day?&#xD;
&#xD;
In this session, you'll see some of the inner workings of Python, PHP, Java, and JavaScript and learn that at the lowest level these languages really are not as different as they may seem.&#xD;
		&#xD;
			&lt;br style="clear: both; font: 1px/1px Arial;"/&gt;&#xD;
&#xD;
		&lt;/td&gt;&#xD;
	&lt;/tr&gt;&#xD;
&#xD;
	&#xD;
	&lt;tr&gt;&#xD;
		&lt;td&gt;&#xD;
&#xD;
		&lt;div style="margin: 5px 0 4px 0;"&gt;&#xD;
			&lt;b&gt;&lt;a style="color: #336699; text-decoration: none;" href="http://nofluffjuststuff.com/conference/columbus/2013/06/session?id=28645?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;Android Fundamentals&lt;/a&gt;&lt;/b&gt;&#xD;
			&lt;br /&gt;&lt;em&gt;by Kenneth Kousen&lt;/em&gt;&#xD;
		&lt;/div&gt;&#xD;
&#xD;
					&lt;a style="color: #336699; text-decoration: none;" href="http://nofluffjuststuff.com/conference/speaker/kenneth_kousen?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;&#xD;
				&lt;img src="http://nofluffjuststuff.com//s/images/bio/848_Kousen_20110408_052155_medium.jpg" width="100" border="0" align="left" style="margin: 5 5 5 5;"/&gt;&#xD;
			&lt;/a&gt;&#xD;
				The basics of developing for the Android platform will be explored, from setting up your development environment to using the SDK to working with activities, intents, and fragments. No previous experience is required, other than a basic knowledge of Java.&#xD;
		&#xD;
			&lt;br style="clear: both; font: 1px/1px Arial;"/&gt;&#xD;
&#xD;
		&lt;/td&gt;&#xD;
	&lt;/tr&gt;&#xD;
&#xD;
	&#xD;
	&lt;tr&gt;&#xD;
		&lt;td&gt;&#xD;
&#xD;
		&lt;div style="margin: 5px 0 4px 0;"&gt;&#xD;
			&lt;b&gt;&lt;a style="color: #336699; text-decoration: none;" href="http://nofluffjuststuff.com/conference/columbus/2013/06/session?id=28630?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;Turtles, Architecture, &amp; Agility&lt;/a&gt;&lt;/b&gt;&#xD;
			&lt;br /&gt;&lt;em&gt;by Kirk Knoernschild&lt;/em&gt;&#xD;
		&lt;/div&gt;&#xD;
&#xD;
					&lt;a style="color: #336699; text-decoration: none;" href="http://nofluffjuststuff.com/conference/speaker/kirk_knoernschild?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;&#xD;
				&lt;img src="http://nofluffjuststuff.com//s/images/bio/893_Knoernschild_20120426_151501_medium.jpg" width="100" border="0" align="left" style="margin: 5 5 5 5;"/&gt;&#xD;
			&lt;/a&gt;&#xD;
				A little old lady once challenged a well-known scientist’s explanation on the structure of the universe, countering that the world is really a flat plate supported on the back of a giant tortoise. The scientist rebutted the little old lady’s challenge with one of his own by asking what the tortoise was standing on. The little old lady’s sly reply was that it’s, “turtles all the way down.” So too is software architecture “turtles all the way down”.&#xD;
		&#xD;
			&lt;br style="clear: both; font: 1px/1px Arial;"/&gt;&#xD;
&#xD;
		&lt;/td&gt;&#xD;
	&lt;/tr&gt;&#xD;
&#xD;
	&#xD;
	&lt;/table&gt;&#xD;
&#xD;
	&lt;/div&gt;&#xD;
&#xD;
&lt;/div&gt;</description>
      <pubDate>Mon, 13 May 2013 15:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://nofluffjuststuff.com/conference/columbus/2013/06/schedule</guid>
    </item>
    <item>
      <title>Securing Single Page Apps and REST Services</title>
      <link>http://nofluffjuststuff.com/blog/james_ward2/2013/05/securing_single_page_apps_and_rest_services?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;The move towards Single Page Apps and RESTful services open the doors to a much better way of securing web applications.  Traditional web applications use browser cookies to identify a user when a request is made to the server.  This approach is fundamentally flawed and causes many applications to be vulnerable to Cross-Site Request Forgery (CSRF) attacks.  When used correctly, RESTful services can avoid this vulnerability altogether.  Before we go into the solution, lets recap the problem.&lt;/p&gt;
&lt;p&gt;HTTP is a stateless protocol.  Make a request and get a response.  Make another request and get another response.  There is no correlation (i.e. &amp;#8220;state&amp;#8221;) between these requests.  This poses a problem when you need to identify a user to the system because one request logs the user in and another request needs to tell the server who is making the request.&lt;/p&gt;
&lt;p&gt;Web browsers have an automatic way to store some information (i.e. &amp;#8220;state&amp;#8221;) on the user&amp;#8217;s machine and then add that information to every request.  This is called &amp;#8220;cookies&amp;#8221; and they provide a convenient way to create a correlation across HTTP requests.  Most web frameworks have a built-in concept called &amp;#8220;session state&amp;#8221; which uses a unique token for each user.  That token is stored in a cookie and automatically sent to the server on each request.  Now the server knows how to identify a user across requests.&lt;/p&gt;
&lt;p&gt;This approach is simple and works great until you realize the dark truth of CSRF.  Usually a user is doing something that tells the browser to make a request to server and because the cookies are sent, everything is good.  But suppose the user gets an email that says &amp;#8220;Check out these funny kittens!&amp;#8221; with a link to a malicious website.  No one can avoid seeing funny kittens, so the user clicks the link.  It turns out that the funny kittens website is a malicious website which now makes some requests to an application that only uses cookies for authentication.  Perhaps the malicious request is to transfer money out of your bank account.  Or perhaps it posts something on a social network.  These requests will be identified AS THE USER because no matter what causes the request, the browser will send the cookies.  This is CSRF and many web apps are vulnerable to it.&lt;/p&gt;
&lt;p&gt;The root of the problem is using cookies as the sole method of identifying a user since no matter how the request is initiated, the cookies which include the authentication token are always sent to the server.  One way to protect against this type of attack is to force each request to contain another token which is not automatically sent.  Most web frameworks provide a way to do this but they are error prone because it often requires developers to explicitly enable it and the approach doesn&amp;#8217;t always work well with Single Page Apps.&lt;/p&gt;
&lt;h2&gt;The Way Forward&lt;/h2&gt;
&lt;p&gt;The easiest way to do authentication without risking CSRF vulnerabilities is to simply avoid using cookies to identify the user.  However each request must still send a token to the server to identify the user.  This requires a token to be somehow &amp;#8220;remembered&amp;#8221; so that each request can manually send it.  Luckily Single Page Apps provide a way to keep a token in memory across requests because the page never reloads.&lt;/p&gt;
&lt;p&gt;But what if the page does reload and the authentication token is lost because that in-memory state has been cleared?  Does the user have to log back in to get a new authentication token?  That would not be a very good user experience.  Browsers have a few ways to store data locally across requests.  The easiest is to simply use cookies.  Wait&amp;#8230;  aren&amp;#8217;t cookies the root of the problem?  Cookies themselves are not the cause of CSRF vulnerabilities.  It&amp;#8217;s using the cookies on the server to validate a user that is the cause of CSRF.  Just putting an authentication token into a cookie doesn&amp;#8217;t mean it must be used as the mechanism to identify the user.&lt;/p&gt;
&lt;p&gt;When a Single Page App loads it can read the cookies (via JavaScript), grab the authentication token, and then manually send that token on each request through a custom HTTP header.  This is safe because that malicious funny kitten site does not have access to the cookies.  If it did, every website would have a severe security issue.&lt;/p&gt;
&lt;p&gt;The flow with this approach may go something like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The user navigates in their browser to the application&lt;/li&gt;
&lt;li&gt;The server returns a basic web page and a JavaScript application&lt;/li&gt;
&lt;li&gt;The JavaScript application can&amp;#8217;t find an authentication token in the web site&amp;#8217;s cookies&lt;/li&gt;
&lt;li&gt;The JavaScript application displays a login form&lt;/li&gt;
&lt;li&gt;The user enters correct login credentials and then submits the form&lt;/li&gt;
&lt;li&gt;The server validates the login information and creates an authentication token for the user&lt;/li&gt;
&lt;li&gt;The server sets the authentication token in a cookie and returns it to the JavaScript application&lt;/li&gt;
&lt;li&gt;The JavaScript application makes a request for some protected data, sending the authentication token in a custom header&lt;/li&gt;
&lt;li&gt;The server validates the token and then returns the data&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At step 3 if the JavaScript application does find an authentication token in a cookie then it can skip ahead to step 8.&lt;/p&gt;
&lt;p&gt;At step 9 the server may not be able to validate the token in which case it should return a 401 (Unauthorized) response which the JavaScript application can handle by going to step 4.&lt;/p&gt;
&lt;p&gt;There are a variety of ways to implement this approach but the real key is that the server doesn&amp;#8217;t validate a user based on a cookie, it instead validates the user with a customer HTTP header.&lt;/p&gt;
&lt;p&gt;This approach can be used over HTTP or HTTPS.  But it is highly recommended that authentication tokens are only passed over encrypted connections which means you should probably only be using this approach over HTTPS connections.  Whenever an application is not being used for local development it should automatically redirect HTTP connections to the corresponding HTTPS connection.  In this setup make sure that the cookie containing the authentication token can&amp;#8217;t be inadvertently transmitted over the HTTP connection by forcing the cookie to only be sent over HTTPS (an option which is typically available in cookie APIs).&lt;/p&gt;
&lt;h2&gt;Sample App&lt;/h2&gt;
&lt;p&gt;To better explain this approach lets walk through an example application.  You can get the full source for the application from: &lt;a href="http://github.com/jamesward/play-rest-security"&gt;http://github.com/jamesward/play-rest-security&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This application is built using Play Framework, Java, jQuery, and CoffeeScript.&lt;/p&gt;
&lt;p&gt;To run the application locally, &lt;a href="http://playframework.com/download"&gt;download Play 2.1.1&lt;/a&gt;, extract the zip and optionally add the extracted directory to your system&amp;#8217;s path.  Then using a command line, navigate into the &lt;code&gt;play-rest-security&lt;/code&gt; directory and run the following (assuming the &lt;code&gt;play&lt;/code&gt; command is in your path):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;play run&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will start the application which you can connect to in your browser at: &lt;a href="http://localhost:9000/"&gt;http://localhost:9000/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You should see a login form which you can test out and once logged in, you will see the protected data and can add new data.&lt;/p&gt;
&lt;p&gt;There are also a number of &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/test"&gt;functional and unit tests&lt;/a&gt; for the application which validate the security of the application.  You can run the tests locally by running:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;play test&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;RESTful JSON Back-End Services&lt;/h3&gt;
&lt;p&gt;Starting with &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/app/models/User.java"&gt;User.java&lt;/a&gt; you will see this is a typical database-backed entity using JPA.  The &lt;code&gt;User&lt;/code&gt; class has a property &lt;code&gt;authToken&lt;/code&gt; which will store a single authentication token.  In a real-world application you will probably want to allow a user to be logged in from multiple clients (e.g. different browsers).  To enable this you could simply turn this into a list.  You may also want to have some tracking on when authentication tokens are used, what IP address used them, and when they were created.  The tokens could also be encrypted in the database.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/app/models/Todo.java"&gt;Todo.java&lt;/a&gt; file contains the &lt;code&gt;Todo&lt;/code&gt; entity which stores a user&amp;#8217;s Todos.  Access to the &lt;code&gt;Todo&lt;/code&gt; objects happen via the &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/app/controllers/TodoController.java"&gt;TodoController.java&lt;/a&gt; class.  In this case the &lt;code&gt;TodoController&lt;/code&gt; only has two methods, &lt;code&gt;getAllTodos()&lt;/code&gt; and &lt;code&gt;createTodo()&lt;/code&gt;.  These methods are exposed via HTTP through the &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/conf/routes"&gt;routes&lt;/a&gt; file.  The &lt;code&gt;TodoController&lt;/code&gt; has the &lt;code&gt;@With(SecurityController.class)&lt;/code&gt; annotation which setups up a request interceptor so that every request made to the controller must go through the &lt;code&gt;call&lt;/code&gt; method in the &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/app/controllers/SecurityController.java"&gt;SecurityController.java&lt;/a&gt; class.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;call&lt;/code&gt; method in the &lt;code&gt;SecurityController&lt;/code&gt; tries to find an authentication token in a custom HTTP header.  If it finds a token then it tries to find a user with that token.  If found the user is added to the HTTP Context (a place to store data for the duration of the request) and then the original controller method is called.  Otherwise a 401 response is returned.&lt;/p&gt;
&lt;p&gt;Both &lt;code&gt;getAllTodos()&lt;/code&gt; and &lt;code&gt;createTodo()&lt;/code&gt; in the &lt;code&gt;TodoController&lt;/code&gt; use the authenticated user that was stored in the HTTP Context to either fetch the user&amp;#8217;s todos or create a new todo.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;SecurityController&lt;/code&gt; class also has &lt;code&gt;login&lt;/code&gt; and &lt;code&gt;logout&lt;/code&gt; request handlers which are mapped to URLs in the &lt;code&gt;routes&lt;/code&gt; file.  The &lt;code&gt;login&lt;/code&gt; method tries to locate a user by the provided username and password.  If it succeeds then it creates a new authentication token for the user, then creates a cookie containing the token, and returns the token in a JSON response.  The &lt;code&gt;logout&lt;/code&gt; method uses the &lt;code&gt;SecurityController&lt;/code&gt; interceptor to validate the user and then deletes the cookie that stores the authentication token and set&amp;#8217;s the user&amp;#8217;s &lt;code&gt;authToken&lt;/code&gt; to null.&lt;/p&gt;
&lt;p&gt;That is the RESTful back-end of the example app.  Now lets explore the front-end.&lt;/p&gt;
&lt;h3&gt;CoffeeScript + jQuery Front-End UI&lt;/h3&gt;
&lt;p&gt;In the &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/conf/routes"&gt;routes&lt;/a&gt; file you will see that requests to &lt;code&gt;/&lt;/code&gt; are handled by returning &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/public/index.html"&gt;public/index.html&lt;/a&gt;.  This file doesn&amp;#8217;t do much other than load jQuery and also load the &lt;code&gt;index.min.js&lt;/code&gt; file which is compiled and minified by Play&amp;#8217;s asset compiler.  The source for that file is &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/app/assets/javascripts/index.coffee"&gt;index.coffee&lt;/a&gt; and it provides the whole UI for the application.  This example uses CoffeeScript because it provides a more concise and readable syntax for writing JavaScript applications.&lt;/p&gt;
&lt;p&gt;When the page is ready the &lt;code&gt;init&lt;/code&gt; function is called and the application attempts to find the authentication token in a cookie.  If it can&amp;#8217;t be found then a login form is displayed.  If the cookie can be found then the &lt;code&gt;displayTodos&lt;/code&gt; function is called.  This function tries to fetch the user&amp;#8217;s list of &lt;code&gt;Todo&lt;/code&gt; objects and then display them.  The request to fetch the &lt;code&gt;Todo&lt;/code&gt; objects is a normal Ajax JSON request except that the user&amp;#8217;s authentication token is sent in a custom HTTP header.  If the server responds with a 401 error then the application calls &lt;code&gt;displayLoginForm&lt;/code&gt; otherwise the user&amp;#8217;s &lt;code&gt;Todo&lt;/code&gt; objects are displayed.  The &lt;code&gt;createTodo&lt;/code&gt; function also sends the authentication token in custom HTTP header and the JSON data for the &lt;code&gt;Todo&lt;/code&gt; within an Ajax request.&lt;/p&gt;
&lt;p&gt;That is really all there is to the front-end UI.  Most of the code in the CoffeeScript is displaying data and forms in the HTML through jQuery DOM manipulation.  This DOM manipulation could also be done through one of the many client-side templating libraries.&lt;/p&gt;
&lt;h2&gt;Further Learning&lt;/h2&gt;
&lt;p&gt;The important point to remember is that using cookies for authentication opens up the possibility of CSRF attacks.  Custom HTTP headers provide a more secure method of identifying users than cookies alone do.  The combination of Single Page Apps and REST services provide the perfect opportunity to move away from cookie based authentication.  This simple application illustrates how to implement this approach.&lt;/p&gt;
&lt;p&gt;Learn more:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/XSRF"&gt;CSRF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://playframework.com"&gt;Play Framework&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Mon, 13 May 2013 13:00:05 CDT</pubDate>
      <guid isPermaLink="true">http://www.jamesward.com/?p=3715</guid>
      <dc:creator>James Ward</dc:creator>
    </item>
    <item>
      <title>Individuals and Interactions With Gil Broza</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/05/individuals_and_interactions_with_gil_broza?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;My friend and colleague, Gil Broza, is interviewing me for his &lt;a href="http://www.mcssl.com/app/?af=1528296" target="_blank"&gt;Individuals and Interactions&lt;/a&gt; virtual training event. My topic? &amp;#8220;Focus Keeps You Going.&amp;#8221;&lt;/p&gt;
&lt;p&gt;If you read my &lt;a title="Personal Kanban and Iterations, Day 5" href="http://www.jrothman.com/blog/mpd/2013/05/personal-kanban-and-iterations-day-5.html" target="_blank"&gt;personal kanban series&lt;/a&gt; a couple of weeks ago, you saw how my focus kept me going. Even with a big interruption last week, due to a death in the family, I was able to maintain my focus, because I knew exactly what I had to do, to finish my work, to get ready for my trip today.&lt;/p&gt;
&lt;p&gt;Gil has other great people in his event: Doc List, Ellen Gottesdiener, Mary Gorman, David Spann, Christopher Avery and Bob Schatz might be names you recognize. How about Rick Ross? David Spann? Caren DesBrisay? You might not recognize these names, and you should listen to what they have to say, too.&lt;/p&gt;
&lt;p&gt;Check out Gil&amp;#8217;s &lt;a href="http://www.mcssl.com/app/?af=1528296" target="_blank"&gt;Individuals and Interactions&lt;/a&gt; training. Sign up. It&amp;#8217;s a steal.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=Bwv5oCdpfHg:pgfMZ33B7ZU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=Bwv5oCdpfHg:pgfMZ33B7ZU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=Bwv5oCdpfHg:pgfMZ33B7ZU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=Bwv5oCdpfHg:pgfMZ33B7ZU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=Bwv5oCdpfHg:pgfMZ33B7ZU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=Bwv5oCdpfHg:pgfMZ33B7ZU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=Bwv5oCdpfHg:pgfMZ33B7ZU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=Bwv5oCdpfHg:pgfMZ33B7ZU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/Bwv5oCdpfHg" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 13 May 2013 11:00:03 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12288</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
  </channel>
</rss>

