<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>Centare</title> <atom:link href="http://www.centare.com/feed/" rel="self" type="application/rss+xml" /><link>http://www.centare.com</link> <description>Transforming Business Through Agile Software Development</description> <lastBuildDate>Wed, 15 May 2013 15:24:07 +0000</lastBuildDate> <language>en-US</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.5.1</generator> <item><title>Centare Planning Poker App</title><link>http://www.centare.com/centare-planning-poker-app/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=centare-planning-poker-app</link> <comments>http://www.centare.com/centare-planning-poker-app/#comments</comments> <pubDate>Tue, 14 May 2013 20:56:30 +0000</pubDate> <dc:creator>William Welbes</dc:creator> <category><![CDATA[Case Studies]]></category> <category><![CDATA[Mobile App Development]]></category><guid isPermaLink="false">http://www.centare.com/?p=10586</guid> <description><![CDATA[Centare Planning Poker App Are you still using cards for your planning poker sessions? Go mobile with the Centare Planning Poker app. Create a virtual table for your planning poker session and invite other team members to connect with a]]></description> <content:encoded><![CDATA[<p><a href="http://itunes.apple.com/us/app/centare-planning-poker/id490139619?mt=8"><img class="size-full wp-image-1621 alignleft" style="margin-left: 25px; margin-right: 25px;" title="Centare Planning Poker" alt="Centare Planning Poker" src="http://50.56.216.207/wp-content/uploads/2012/01/iPhone_4S_Vert_small.png" width="280" height="584" /></a></p><h1>Centare Planning Poker App</h1><p>Are you still using cards for your planning poker sessions? Go mobile with the Centare Planning Poker app. Create a virtual table for your planning poker session and invite other team members to connect with a simple table code. Host a table and email the code to other team members. If you&#8217;re joining as a participant, just enter the table code and join the session.</p><div><p>Once you&#8217;ve established a planning session, the host controls the rounds of voting. As team members cast votes, their cards are played on the table. Once all team members have voted, all cards are flipped over to reveal the results. Cards are arranged from low to high for a quick view of where everyone stands.</p><p>Whether your team is located in the same room or across the globe, the Centare Planning Poker app will keep everyone on the same page. Start planning together today.</p><p>The Centare Planning Poker app is available for free in the <a href="http://itunes.apple.com/us/app/centare-planning-poker/id490139619?mt=8">iOS App Store</a> , the <a href="https://market.android.com/details?id=com.centare.PlanningPoker">Android Market</a>, and the <a href="http://www.windowsphone.com/en-US/apps/ecdbaf36-ab3c-465c-9e76-7e7bf39b9de9">Windows Phone Marketplace</a>.</p></div><p style="text-align: center;"><a href="http://itunes.apple.com/us/app/centare-planning-poker/id490139619?mt=8"><img class="size-full wp-image-1629 aligncenter" style="border-style: initial; border-color: initial;" title="Available on the App Store" alt="Available on the App Store" src="http://50.56.216.207/wp-content/uploads/2012/01/App_Store_Badge.png" width="179" height="64" /></a></p><p style="text-align: center;"><a href="https://market.android.com/details?id=com.centare.PlanningPoker"><img class="size-full wp-image-1630 aligncenter" style="border-style: initial; border-color: initial;" title="Available in the Android Market" alt="Available in the Android Market" src="http://50.56.216.207/wp-content/uploads/2012/01/android_market_logo.png" width="136" height="56" /></a></p><p style="text-align: center;"><a href="http://www.windowsphone.com/en-US/apps/ecdbaf36-ab3c-465c-9e76-7e7bf39b9de9"><img class="size-full wp-image-1818 aligncenter" title="Download for Windows Phone" alt="Download for Windows Phone" src="http://50.56.216.207/wp-content/uploads/2012/01/Download-EN-Med.png" width="165" height="54" /></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p style="text-align: center;"> ]]></content:encoded> <wfw:commentRss>http://www.centare.com/centare-planning-poker-app/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Case Study: gapNsnap App</title><link>http://www.centare.com/case-study-gapnsnap-app/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=case-study-gapnsnap-app</link> <comments>http://www.centare.com/case-study-gapnsnap-app/#comments</comments> <pubDate>Fri, 10 May 2013 16:25:43 +0000</pubDate> <dc:creator>William Welbes</dc:creator> <category><![CDATA[Case Studies]]></category> <category><![CDATA[Mobile App Development]]></category> <category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">http://www.centare.com/?p=10574</guid> <description><![CDATA[The Client gapNsnap gapNsnap is a fresh start up founded by retail veterans on a mission: eliminate the dreaded out of stock condition in retail. Nearly one in ten of the products that consumers go shopping for are not on]]></description> <content:encoded><![CDATA[<p><a href="https://itunes.apple.com/app/gapnsnap/id635324222?ign-mpt=uo%3D5" target="_blank"><img class="size-medium wp-image-9225 alignright" style="padding-top: 0px; padding-bottom: 0px;" title="Explore Pewaukee" alt="Explore Pewaukee" src="http://www.centare.com/uploads/10579/iPhone_5_screenshot.png" width="350" height="673" /></a></p><h1>The Client</h1><p><strong>gapNsnap</strong></p><div title="Page 1"><div><div><div><p>gapNsnap is a fresh start up founded by retail veterans on a mission: eliminate the dreaded out of stock condition in retail. Nearly one in ten of the products that consumers go shopping for are not on the shelf when they want them. The idea? Arm consumers with a simple tool on their smartphone to enable incentivized crowd­sourced reporting of out of stock shelves that becomes instantly actionable for retailers, suppliers, marketers and more.</p></div></div></div></div><h1>The App</h1><div title="Page 1"><div><div><div><p>Armed with the gapNsnap app on their device, consumers can snap images when a product is out of stock and earn cash for completed campaigns. It’s as simple as shop ­ snap ­ cash ­ repeat. Cash is distributed to user’s via integrated Paypal payments. A new user can register in the app and begin earning cash while shopping in minutes. The app automatically manages synchronizing the out of stock data to the back end, racking up scans for the user. The back end services provide customizable campaigns that can be tailored to regions and user groups. The back end administration interface allows the gapNsnap staff to review scans and process and report on the data.</p></div></div></div></div><h1>Our Solution</h1><div title="Page 1"><div><div><div><p>gapNsnap demonstrates Centare’s ability to deliver an end to end solution; from app design, implementation, back end data, services and administration. Centare created an extensible platform that provides gapNsnap with the ability to easily extract and manage their data. The app design provides a consumer friendly look and feel and an experience that’s very easy to use. Centare’s breadth of expertise and experience enables us to deliver mobile solutions that span more than just front end app development.</p></div></div></div></div> ]]></content:encoded> <wfw:commentRss>http://www.centare.com/case-study-gapnsnap-app/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Centare&#8217;s Tim Eiring recognized as IB Madison&#8217;s Professional of the Week</title><link>http://www.centare.com/centares-tim-eiring-recognized-as-ib-madisons-professional-of-the-week/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=centares-tim-eiring-recognized-as-ib-madisons-professional-of-the-week</link> <comments>http://www.centare.com/centares-tim-eiring-recognized-as-ib-madisons-professional-of-the-week/#comments</comments> <pubDate>Thu, 25 Apr 2013 13:00:00 +0000</pubDate> <dc:creator>Chad Albrecht</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[Recognition]]></category> <category><![CDATA[eiring]]></category> <category><![CDATA[madison]]></category> <category><![CDATA[recognition]]></category><guid isPermaLink="false">http://www.centare.com/?p=10566</guid> <description><![CDATA[Tim Eiring, Centare’s vice president of operations for the Madison region, is featured in the online edition of In Business Madison, Madison’s leading business-oriented publication. Eiring is the Professional of the Week for April 22 – 26, 2013.&#160; Each week,]]></description> <content:encoded><![CDATA[<p>Tim Eiring, Centare’s vice president of operations for the Madison region, is featured in the online edition of <i>In Business Madison,</i> Madison’s leading business-oriented publication. Eiring is the <i>Professional of the Week</i> for April 22 – 26, 2013.&nbsp; Each week, the magazine’s website offers an in-depth profile on a leading business executive from the area.<p>Be sure to learn more about the man heading up Centare’s Madison-based efforts.&nbsp; <a href="http://www.ibmadison.com/In-Business-Madison/April-2013/Tim-Eiring-Centare/index.php?cparticle=1&amp;siarticle=0#artanc">Eiring’s profile</a> provides insight into his role at Centare, his passions outside the office, the iconic Milwaukee Brewer he strives to emulate and several other interesting tidbits<i>.&nbsp; </i></p> ]]></content:encoded> <wfw:commentRss>http://www.centare.com/centares-tim-eiring-recognized-as-ib-madisons-professional-of-the-week/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Centare&#8217;s Mike Weinand guides winning robotics team now headed to world championships</title><link>http://www.centare.com/centares-mike-weinand-guides-winning-robotics-team-now-headed-to-world-championships/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=centares-mike-weinand-guides-winning-robotics-team-now-headed-to-world-championships</link> <comments>http://www.centare.com/centares-mike-weinand-guides-winning-robotics-team-now-headed-to-world-championships/#comments</comments> <pubDate>Mon, 22 Apr 2013 20:02:31 +0000</pubDate> <dc:creator>Chad Albrecht</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[Recognition]]></category> <category><![CDATA[community]]></category> <category><![CDATA[FIRST]]></category> <category><![CDATA[robotics]]></category><guid isPermaLink="false">http://www.centare.com/?p=10535</guid> <description><![CDATA[After a successful first few months of 2013 in regional competitions, The Charger Robotics Team 537 from Sussex Hamilton High School is now looking ahead to the FIRST World Championships later this month. Among those mentoring the team is Mike]]></description> <content:encoded><![CDATA[<p>After a successful first few months of 2013 in regional competitions, <a href="http://team537.org">The Charger Robotics Team 537</a> from Sussex Hamilton High School is now looking ahead to the <a href="http://www.usfirst.org/roboticsprograms/first-championship">FIRST World Championships</a> later this month. Among those mentoring the team is Mike Weinand, a software consultant at Centare.</p><p>Weinand, who was a member of the Charger team in 2006-07, enjoyed the robotics program so much that he now volunteers his time as a video and web adviser.</p><p>“I was involved with this program my junior and senior years at Sussex Hamilton,” says Weinand. “Being a part of Team 537 was such a wonderful experience. It truly shaped the person that I am today.”</p><p>For Inspiration and Recognition of Science and Technology (FIRST) is the mission behind the annual robotics competition. It draws teams from the U.S. and all over the world to solve engineering design problems under intense deadlines. The FIRST World Championships are considered a high-tech spectator sport that involves real-world teamwork and mentoring from industry experts.</p><p>Weinand was at the U.S. Cellular Arena in Milwaukee on March 23<sup>rd</sup> when the Chargers placed 12<sup>th</sup> out of 57 robotics teams at the Wisconsin Regional event. The team also won the “Gracious Professionalism Award.” In early March, the Chargers earned the “Regional Chairman’s Award” for a third time at the Lake Superior Regionals in Duluth, Minn. These recognitions led to an invitation for the Chargers to compete in the FIRST World Championship in St. Louis, April 25 – 27.</p> ]]></content:encoded> <wfw:commentRss>http://www.centare.com/centares-mike-weinand-guides-winning-robotics-team-now-headed-to-world-championships/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Behavior Driven Development: Extremely Simplified!</title><link>http://www.centare.com/behavior-driven-development-extremely-simplified/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=behavior-driven-development-extremely-simplified</link> <comments>http://www.centare.com/behavior-driven-development-extremely-simplified/#comments</comments> <pubDate>Fri, 19 Apr 2013 16:19:00 +0000</pubDate> <dc:creator>Pradeepa Narayanaswamy</dc:creator> <category><![CDATA[Centare Blogs]]></category> <category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">http://www.centare.com/?p=10550</guid> <description><![CDATA[There has been a lot of discussion about the What’s and Whys of Behavior Driven Development and I would like to offer my take on this subject. Why Behavior Driven Development? The term “Behavior Driven Development” aka BDD was first]]></description> <content:encoded><![CDATA[<p>There has been a lot of discussion about the What’s and Whys of Behavior Driven Development and I would like to offer my take on this subject.</p><p><b>Why Behavior Driven Development? </b></p><p>The term “Behavior Driven Development” aka BDD was first coined by <a href="http://dannorth.net/">Dan North</a>. The <a href="http://dannorth.net/introducing-bdd/">initial reason</a> for the idea behind this development practice was to support <a href="http://www.agiledata.org/essays/tdd.html">Test Driven Development</a>.</p><p>In recent years, the discussion on Behavior Driven Development is about the fact that it helps define system behavior at a little bit higher level (starting with business goal) when compared to Test Driven Development where the system behaviors are typically defined at a lot more granular level (classes or functions).</p><p>BDD encourages team collaboration when defining the behaviors. BDD helps the teams (especially when they are agile) to be focused on the business value of the feature being developed.</p><p><b>How is Behavior Driven Development done?</b></p><p>Typically the business reason will be defined by the Product Management in this format.</p><p align="center"><strong>As</strong> a “user”</p><p align="center"><strong>I</strong> want a “feature”</p><p align="center"><strong>So</strong> that” I get some value”</p><p>Now all the team members who will be working on the business reason will get together and come up with all the behaviors that will be defined in a “Given.., When.., Then..” format. <strong></strong></p><p align="center"><strong>Given</strong> some initial context,</p><p align="center"><strong>When</strong> an event occurs,</p><p align="center"><strong>Then</strong> ensure some outcomes.</p><p>This activity when done as team will enable the team members (both technical and non-technical) to collaborate and discuss many possible scenarios from various angles and expertise levels. This will in turn help the team to come up a good set of behavior definitions (acceptance criteria) and flesh out the details.</p><p><b>A made-up team in action with BDD:</b></p><p>Let’s assume that <b>Paul ProductManager</b> gives this requirement in the business reason format to a team that comprises the following specialties &#8211; <b>(Arthur Architect, Brenda BA, Dave DBA, Dylan Developer, Tabitha Tester, and Ursula UX)</b>. This team is practicing Behavior Driven Development.</p><p><em><b><span style="text-decoration: underline;">Business Reason</span></b></em><em><span style="text-decoration: underline;">:</span></em>As a new user to this application, I should be able to “Create Password” so that I can login to my account using that password.</p><p>The team looked at the business reason and plan to flesh out scenarios in the Given, When, Then format. Here is the conversation. They also request Paul ProductManager to be present in case of clarifications.</p><p><b>Ursula UX- </b>Before going into defining the acceptance tests, what do you guys/gals think about this business value (so that I can login to my account using that password) in the business reason? I believe the value should be a bit more substantial than just allowing the user to login.</p><p><b>Arthur Architect – </b>I agree with you on the business value.<b> </b>Why does some one create a password in the first place?</p><p><b>Dave DBA- </b>If I am a user, I will create a password for my account so that no one will be able to access my information except me.</p><p><b>Arthur Architect – </b>That seems like “the user is concerned about the security of their information”.</p><p><b>Tabitha Tester- </b>What do you guys think about this revised business reason?<b></b></p><p><em><b><span style="text-decoration: underline;">Business Reason:</span></b></em><b></b>As a new user to this application, I should be able to “Create Password” so that I can feel secure about accessing my account information in the website.</p><p><b>Brenda BA</b>- This is great, but still this requirement seems incomplete to me. Let’s start by writing an acceptance criteria and see where we can fill in the gaps.</p><p align="center"><strong>Given</strong> the user tries to create password</p><p align="center"><strong>When</strong> the user enters password information</p><p align="center"><strong>Then</strong> the user will be able to log in to the account with the newly created password.</p><p><b>Dylan Developer-</b> The information for “When” is not clear, what should the user enter here?</p><p><b>Paul ProductManager-</b> Oh, yeah, the user can enter letters, digits and special characters.</p><p><b>Arthur Architect</b>- What set of special characters are we going to allow? How about spaces?</p><p><b>Paul ProductManager- </b>Hmmm, let me think! Why don’t we include just the special characters that appear in our keyboards above the digits?</p><p><b>Ursula UX</b>- I will get that information for you. So that will be !@#$%^&amp;*()</p><p><b>Brenda BA</b>- That’s great information. Let’s have a second attempt.</p><p align="center"><b>Given </b>the user tries to create password</p><p align="center"><b>When </b>the user enters letters, digits and the following special characters!@#$%^&amp;*()</p><p align="center"><b>Then </b>the user will be able to log in to the account with the newly created password.</p><p><b>Tabitha Tester –</b> Are we going to allow both upper and lower case for alphabets?</p><p><b>Paul ProductManager-</b> Yes, I think we should allow that.</p><p><b>Brenda BA- </b>What should be the length of the password?</p><p><b>Paul ProductManager-</b> The user should enter at least 8 characters.</p><p><b>Brenda BA</b>- Should we restrict the maximum length?</p><p><b>Dave DBA</b> – Whatever we define for maximum will be the field length for Password in the database table. Right now, the password field length is set to 20.</p><p><b>Arthur Architect – </b>I think that is more than enough for a Password field. We don’t want people entering ridiculously long passwords.</p><p><b>Tabitha Tester</b>- Do you care about the character order in which the user should enter the password? For example, the user should enter alphabets followed by digits followed by special characters.</p><p><b>Paul ProductManager – </b>Good point. I haven’t thought about it.<b> </b>Do you guys/gals have any suggestion on best practices?</p><p><b>Arthur Architect – </b>There is no best practice, but more and more organizations enforce users to have a “strong” password.</p><p><b>Dylan Developer – </b>I have seen organizations require users to have at least one uppercase letter, one or more lowercase letters, at least one digit and at least one special character.</p><p><b>Brenda BA- </b>Let us try this again.</p><p align="center"><b>Given</b> the user tries to create password</p><p align="center"><b>When</b> the user enters letters (A-Z, a-z) and a digit (0-9) and a special character ~!@#$%^&amp;*()</p><p align="center">And the password length is at least 8</p><p align="center">And the password comprises of at least one upper case letter, at least one lower case letter, at least one digit, at least one special character</p><p align="center"><b>Then</b> the user will be able to successfully create the password</p><p><b>Ursula UX- </b>Paul, you don’t care about the order of the character entry, right?</p><p><b>Paul ProductManager- </b>I think we should make the user enter a strong password but the order can be of their choice.</p><p><b>Brenda BA – </b>Great, I think we have the next version.</p><p align="center"><b>Given</b> the user tries to create password</p><p align="center"><b>When</b> the user enters letters (A-Z, a-z) and a digit (0-9) and a special character ~!@#$%^&amp;*()</p><p align="center">And the password length is at least 8</p><p align="center">And the password comprises of at least one upper case letter, at least one lower case letter, at least one digit, at least one special character in any order</p><p align="center"><b>Then</b> the user will be able to successfully create the password</p><p>This conversation can go on, but you get the gist of the collaboration, right?</p><p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p><p>Now the same requirement is more defined and clear. The collaboration among all the team members with their product manager helped them define comprehensive behavior.</p><p>This way of defining the requirement can be done by any non-technical team members- especially the product owners, business analysts, non-technical test specialists, SME’s etc.</p><p><b>Tools to consider: </b></p><p>This behavior-driven, domain-specific language (Given, When, Then) in which the requirement is defined is sometimes referred to as “<a href="https://github.com/cucumber/cucumber/wiki/Gherkin">Gherkin</a>” (Gherkin is initially coined to represent the language used in Cucumber tool).</p><p>There are a variety of open source tools that are available to support this development. Some of the popular ones worth noting are <a href="http://www.specflow.org/specflownew/">SpecFlow</a>, <a href="http://cukes.info/">Cucumber</a> and <a href="http://jbehave.org/">JBehave</a>. ‘SpecFlow’ supports BDD for teams that do .Net development and can be very well integrated with Visual Studio. ‘JBehave’ supports BDD for teams that do Java development. There are multiple open source tools available apart from what I have listed above that support BDD.</p><p>All these tools will allow the user to define the business reason and the corresponding behaviors in the “Given, When, Then” format and that can be converted to test structures easily.</p><p>Here is the screen shot of how the feature is represented in SpecFlow.</p><p><a href="http://www.centare.com/wp-content/uploads/2013/04/clip_image002.jpg"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image002" alt="clip_image002" src="http://www.centare.com/wp-content/uploads/2013/04/clip_image002_thumb.jpg" width="244" height="85" border="0" /></a></p><p>Here is the list of test methods created in SpecFlow by the “Given”, “When”, “Then” lines in the behavior definition.</p><p><a href="http://www.centare.com/wp-content/uploads/2013/04/clip_image004.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image004" alt="clip_image004" src="http://www.centare.com/wp-content/uploads/2013/04/clip_image004_thumb.jpg" width="244" height="146" border="0" /></a></p><p><b>Impact on Programming:</b></p><p>This is a great starting point and helps the programmers to outline some clearly defined unit tests around the behavior. Programmers will be able to effectively design code by writing tests based on the behaviors. BDD enables the programmers to write tests first easily and thus support Test Driven Development (TDD).</p><p><b>Impact on Testing:</b></p><p>Teams can start writing automated tests based on the defined specifications almost immediately with the help of tools. This helps in growing the team’s automation suite almost immediately. Early automation realizes the value much sooner than tests that are automated after feature completion. This will also aid testers in spending more time on exploring the application rather than spending time on manually testing expected behaviors.</p><p><b>Benefits of BDD:</b></p><p>1. Writing behaviors in the “As a.., I want.., So that..” and “Given, When, Then..” format is simple and is a natural language. This enables the collaboration among technical and non-technical members within the core team and outside team members.</p><p>2. It helps the team understand and focus on the business value of the features that are being developed.</p><p>3. Using some of these tools will ease the teams into automation by creating shells for steps of the defined behaviors. The shells can then be expanded to develop tests. They encourage small, easily maintainable chunks of automation.</p><p>4. It enables the programmers to perform Test Driven Development, which is widely considered a best practice.</p><p>5. Living and up-to date documentation for the software is a certain advantage if tools are used to write tests. The business reason and behavior will be included as part of the code structure.</p><p><b>Having conversations among the team members about the behaviors is more important than capturing the behaviors which is more important than automating the behaviors. – Liz Keogh, ALM Chicago 2013</b></p><p><span style="text-decoration: underline;">Looking ahead in to the future:</span> Jeff Goethelf in his recent book “<a href="http://www.amazon.com/Lean-UX-Applying-Principles-Experience/dp/1449311652">Lean UX</a>”, talks about getting the market feedback as part of behavior definitions/assumptions. It seems like a powerful technique that will help validate the business assumptions and that appears to be a great next level in defining behaviors.</p> ]]></content:encoded> <wfw:commentRss>http://www.centare.com/behavior-driven-development-extremely-simplified/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Milwaukee BizTimes Highlights Centare&#8217;s ASE Program</title><link>http://www.centare.com/milwaukee-biztimes-highlights-centares-ase-program/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=milwaukee-biztimes-highlights-centares-ase-program</link> <comments>http://www.centare.com/milwaukee-biztimes-highlights-centares-ase-program/#comments</comments> <pubDate>Thu, 18 Apr 2013 20:11:08 +0000</pubDate> <dc:creator>Chad Albrecht</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[Recognition]]></category> <category><![CDATA[Training]]></category> <category><![CDATA[ase]]></category> <category><![CDATA[biztimes]]></category> <category><![CDATA[training]]></category><guid isPermaLink="false">http://www.centare.com/?p=10538</guid> <description><![CDATA[In a recent article, BizTimes reporter Dan Shafer looks at Centare’s new Associate Software Engineer (ASE) Program.  Read more here…]]></description> <content:encoded><![CDATA[<p>In a recent article, BizTimes reporter <a href="mailto:dan.shafer@biztimes.com">Dan Shafer</a> looks at Centare’s new Associate Software Engineer (ASE) Program.  <a href="http://www.biztimes.com/article/20130415/MAGAZINE03/304129979/0/SEARCH">Read more here…</a></p> ]]></content:encoded> <wfw:commentRss>http://www.centare.com/milwaukee-biztimes-highlights-centares-ase-program/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>100% Code Coverage</title><link>http://www.centare.com/100-code-coverage/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=100-code-coverage</link> <comments>http://www.centare.com/100-code-coverage/#comments</comments> <pubDate>Thu, 18 Apr 2013 17:24:18 +0000</pubDate> <dc:creator>Robert Pieper</dc:creator> <category><![CDATA[Centare Blogs]]></category> <category><![CDATA[General .NET Development]]></category> <category><![CDATA[Quality]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[100% code coverage]]></category> <category><![CDATA[code coverage]]></category> <category><![CDATA[software development best practices]]></category> <category><![CDATA[software engineering]]></category> <category><![CDATA[software engineering best practices]]></category><guid isPermaLink="false">http://www.centare.com/?p=10488</guid> <description><![CDATA[Introduction The focus of this writing is on the appropriate amount of unit test coverage in legacy code.  As a definition of legacy code, I defer to Michael Feathers’ description: code without tests. Common questions about code coverage are how much is]]></description> <content:encoded><![CDATA[<p><b><i>Introduction</i></b></p><p>The focus of this writing is on the appropriate amount of unit test coverage in legacy code.  As a definition of legacy code, I defer to Michael Feathers’ description: code without tests.</p><p>Common questions about code coverage are <i>how much is enough? Is it worth adding tests to legacy code already in production? How do you prevent gaming of the system to meet arbitrary coverage requirements?</i> <i>How do I get started</i>? I take the stance that a development team should aim for 100% and no less. I will address all of the above questions in what follows.</p><p><b><i>How much is enough?</i></b></p><p>Legacy code is often difficult to maintain for many reasons. The code may be tightly coupled to external dependencies (file system, web services, etc.), hard to read due to cryptic or poorly thought out method and variable names, and often without a set of automated regression tests. This software needs care and feeding until the end of its useful life. Brittle, hard-to-read code becomes more difficult to manage with each new developer making changes.  As professional developers we are tasked to go in to the code like surgeons, cut cancer off the heart of a dying patient, and leave no scar. This is scary work without proper tools and a good safety net.</p><p>For the reasons above I am on the side that 100% coverage of code you maintain is necessary.  Only a rare few of us get to work on projects that will be thrown away in two months (such as a one-time rock concert promotion website) so for those few developers, ignore the rest. For the rest of us, what I mean by 100% code coverage is 100% of the logical paths through your application that your team maintains should be covered by a suite of automated tests.</p><p>If you feel you can have maintainable software with less than 100% coverage I ask you this: which logic is important enough to put in production, but not important enough to be under test? In a 1 million-line application, which 200k are not worth testing if only 80% coverage is okay?</p><p><b><i>Is it worth the costs?</i></b></p><p>Let’s look at how we spend our time, without test coverage, by accounting for the time spent on the following activities of a feature addition without well-written, unit-tested code:</p><p><span style="text-decoration: underline">Reading and understanding the code to find the affected code</span></p><ul><li><i>If you had good tests fully covering the logical paths you would have real examples of how the code is used. Good test names give you documentation of the code on which it tests </i><i>(ex: DividerMethodThrowsDivideByZeroExceptionWhenZeroIsInDenominator(). )</i></li></ul><p><i></i><span style="text-decoration: underline">Modifying the code</span></p><ul><li><i>If you had full coverage you could make safe, small, and incremental changes letting you check your work as you go.</i></li></ul><p><i></i><span style="text-decoration: underline">Manually testing</span></p><ul><li><i>If you had full coverage it would greatly reduce the time spent manually regression testing</i></li></ul><p><i></i><span style="text-decoration: underline">Dealing with bugs found in production from the unintended downstream effects of the change. Include the time spent by your support staff.</span></p><ul><li><em>If you had good tests you would find bugs while developing reducing the bug’s cost and impact. </em></li></ul><p><em></em>Multiply the number of hours you calculated above by every change to the application and double the hours for less domain-experienced developers. This will start to look like a lot of time.</p><p>If there were good tests in place covering 100% of your application, you can be more confident your changes will not have unintended consequences because you have a safety net (the tests).</p><p><b><i>100% coverage requirements cause system gaming</i></b></p><p>Common arguments here are:</p><p><span style="text-decoration: underline">100% coverage will just cause developers to write tests that meet this requirement and game the system.</span></p><ul><li><i>100% coverage is an aim for quality, not something on which a developer’s bonus should be tied</i></li></ul><p><span style="text-decoration: underline">You can achieve full code coverage without checking the output in your tests.</span></p><ul><li><i>True, but there is some value in having tests that don’t check output and just exercise the code. Tests are more valuable if they actually test.</i></li></ul><p><span style="text-decoration: underline">100% coverage does not mean you have good quality tests.</span></p><ul><li><i>While this is true, not having good tests is usually a result of developers lacking skill. Developers lacking skills also write bad production code</i></li></ul><p><span style="text-decoration: underline">100% coverage does not mean all cases are covered.</span></p><ul><li><em id="__mceDel"><em id="__mceDel"><em id="__mceDel"><i>Again, true. Having all of the happy paths covered would give you 100% coverage, but this still has incredible value in that you know if a happy path is broken if a test fails.</i></em></em></em></li></ul><p>My baseline assumption is that your developers write good tests when they write tests and have the skills and tools to do so. A few attributes of a good test: they are well-written, self-documenting, small, test one thing, and check for one result per test. For a good reference on writing good code and good tests, <i>Clean Code</i> by Robert Martin is a great start.</p><p>Another argument is that there is little return on investment to build tests for software where tests did not exist before. Assuming you are now a test-driven development shop, (which you are, aren’t you?) then every line of code you write is first covered by a failing test. As you maintain your existing code base, you build tests, which eventually will approach 100% coverage. I am not advocating for sending a team of developers off for a month to write tests for existing and functioning production code. Write tests as you go. Add new tests while you are adding new features and fixing bugs.</p><p>The goal of 100% coverage is to cover all logical paths and functionality in your software with a test. The number by itself is meaningless. 100% coverage should be a team goal and a challenge to the developers to build highly maintainable code. The business pays quality, fit-for-purpose software and aiming for 100% coverage is a way to deliver that.</p><p><b><i>How do I get started?</i></b></p><p>To eat an elephant you must do it one bite at a time. To get your code base to 100% coverage, you need to do it one test at a time. By aiming for and maintaining this high standard you can get to 100%.</p><p>Start with the feature or bug fix you are working on now. Wrap the code you intend to change with a test to verify its output in the current state. For example, if you have an adder method accepting two integers as parameters, wrap it in a test to call the adder method and check that the output is truly the addition of what you passed in. After the new, automated test passes, refactor the code to be simpler and more readable. Next, write a test for the new feature or bug fix you have not yet written and verify it fails (remember, test first). Finally, write just enough production code to pass the test. Refactor the code, as needed, ensuring your tests still pass. Start with happy path testing and add edge case testing as needed. Perhaps you find an edge case that the current code cannot handle. Take the opportunity to discuss the edge case with your team and decide what to do.</p><p>Another technique to try: use the code coverage tools (either baked in to your IDE or a plugin) to see what methods and logical paths are not covered by unit or integration tests and create new tests to bring up the number. Using this technique I have found unreachable production code so I safely deleted it.</p><p>There will be cases where it does not make sense to cover the code with a unit test such as generated code or third-party libraries and frameworks. As a team, agree what these cases are and exclude them from code coverage. Again, the point is to get 100% of your logic covered and functionality tested. Work with the tool to define full coverage to keep the 100% mark meaningful.</p><p><b><i>In closing</i></b></p><p>I challenge you to follow the Boy Scout rule: leave every line of code you touch in better shape than you found it. Write tests for your changes and code you affected and leave them as a gift for the next developer. By continually taking steps to make your code better you can achieve 100% logic coverage in your legacy applications.</p><p><span style="text-decoration: underline">Literature</span>:</p><ul><li><i><a href="http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052">Working Effectively with Legacy Code</a></i></li><li><i><a href="http://www.amazon.com/dp/B008SLHBA0">Brownfield Application Development in .NET</a></i></li><li><i><a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882">Clean Code</a></i></li></ul><p><span style="text-decoration: underline">Tools</span>:</p><ul><li>Code coverage tools either built in to the IDE or as a plug-in</li><li><a href="http://www.jetbrains.com/resharper/">Resharper</a> – Visual Studio refactoring plugin</li><li><a href="http://www.ncrunch.net/">Ncrunch</a> – Visual Studio real-time unit test runner plugin</li><li><a href="http://www.typemock.com/isolator-product-page">Typemock Isolater</a> – unit testing framework specializing in legacy code mocking</li><li><a href="http://msdn.microsoft.com/en-us/library/hh549175.aspx">Microsoft Fakes</a>– another unit testing framework specializing in legacy code mocking</li></ul> ]]></content:encoded> <wfw:commentRss>http://www.centare.com/100-code-coverage/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Elastic Beanstalk and Visual Studio in Action</title><link>http://www.centare.com/elastic-beanstalk-and-visual-studio-in-action/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=elastic-beanstalk-and-visual-studio-in-action</link> <comments>http://www.centare.com/elastic-beanstalk-and-visual-studio-in-action/#comments</comments> <pubDate>Wed, 17 Apr 2013 06:43:21 +0000</pubDate> <dc:creator>Alex Hardin</dc:creator> <category><![CDATA[Centare Blogs]]></category><guid isPermaLink="false">http://alexchardin.com/?p=36</guid> <description><![CDATA[Elastic Beanstalk is AWS&#8217;s simplified application deployment and management platform. It allows developers to focus on building applications instead of some of the tedium associated with deploying it to a robust production environment and much of the care and feeding once they are deployed.  When working with Elastic Beanstalk, you can limit your scope of&#8230; <a href="http://alexchardin.com/index.php/elastic-beanstalk-and-visual-studio-in-action/">Continue reading <span>&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Elastic Beanstalk is AWS’s simplified application deployment and management platform. It allows developers to focus on building applications instead of some of the tedium associated with deploying it to a robust production environment and much of the care and feeding once they are deployed.  When working with Elastic Beanstalk, you can limit your scope of concern to what AWS calls an “application” instead of the nuts and bolts of virtual machines, operating systems, load balancing or other pieces of the puzzle that are often secondary to application development.</p><p>In this post I am going to demonstrate the process of deploying a simple ASP.NET MVC 4 application to an Elastic Beanstalk application. Note that while this example uses .NET, Elastic Beanstalk supports PHP, Java, Ruby, Python and more.</p><h2>More on the Value-Prop</h2><p>Skip this section if you are already familiar with the value of Elastic Beanstalk.</p><p>Some of the key values/promises of deploying web applications to the cloud are seemingly unlimited scaling, robust high availability configurations, the ability to stop caring about infrastructure, and other things along those lines. These are all great ideas and definitely feasible, but not always as easy as they may seem. Using AWS as the example, if you wanted to deploy a web app with pretty solid reliability, you would need to create and manage 2-4+ EC2 instances across multiple Availability Zones, multiple load balancers to tie them together, have the intelligence to scale your number of instances based on load, and then manage all those <em>things</em> long term. Security updates, backups, deployments, credentials, etc. It gets messy. Elastic Beanstalk is an attempt to alleviate some of that complexity by automating a majority of the plumbing. the highest level object in Elastic Beanstalk is an application. You send versions of your code to the Beanstalk application which then takes care of creating the EC2 instances necessary to run your code and deploys it to those instances for you. In addition to creating the instances, you can configure it to monitor various metrics such as CPU load, and automatically create new EC2 instances on the fly and add them into the cluster. Thus the load balancing, server creation, deployment and scaling are all handled in an automated fashion. Pretty cool.</p><h2>Climbing the Beanstalk</h2><p>There are several ways to configure Elastic Beanstalk. AWS has a solid web interface, a powerful API, and numerous 1st and 3rd party tools that use that API. My examples leverage Amazon’s own <a href="http://aws.amazon.com/visualstudio/">AWS Toolkit for Visual Studio</a> in order to illustrate how seamless the process can be for .NET developers – but know that you can achieve all of the same results by using the web interface. The concept is what’s really cool here, not necessarily the specific implementation. Before reading further, I suggest taking 2 minutes to read through <a title="AWS Beanstalk Documentation" href="http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.components.html">this brief AWS doc page</a> for some terminology explanations.</p><p>I’m just using a little dummy application int he examples below, but I would also suggest giving this a shot with any old web application you have laying around.</p><h3>Creating the Beanstalk Application</h3><p>The first step after installing the AWS Toolkit and getting your ASP.NET project ready to deploy is to initiate the AWS Publish process.  The process for this is comparable to using the Web Deploy functionality that has been around Visual Studio for a couple of years. Right-clicking on the web project will reveal a nice new menu item right under the old Publish option.</p><p><a class="thumbnail" href="http://alexchardin.com/wp-content/uploads/2013/02/publish-menu2.png"><img class="alignnone size-full wp-image-51" alt="publish-menu" src="http://alexchardin.com/wp-content/uploads/2013/02/publish-menu2.png" width="760" height="563" /></a></p><p>&nbsp;</p><p>Once into this process you will be prompted for your AWS security keys (which you can view via the AWS web interface under [Your Name] -&gt; Security Credentials). Now that the AWS Toolkit knows which account it needs to be connected to it will start going through the process to actually create the Beanstalk application and get the deployment going. The first thing it needs to know is what type of deployment we are doing. In this case it’s a Beanstalk application (but remember that the AWS Toolkit provides access to much more than just Beanstalk).</p><p><a class="thumbnail" href="http://alexchardin.com/wp-content/uploads/2013/02/step-1.png"><img class="alignnone size-full wp-image-45" alt="step-1" src="http://alexchardin.com/wp-content/uploads/2013/02/step-1.png" width="791" height="547" /></a></p><p>&nbsp;</p><p>After indicating that we’re looking to create a new Beanstalk application it will ask for some other basic information such as the Name of the app and a default URL to use. Those are self-explanatory. A couple steps in the wizard later we specify some of the more important details like what technology stack should be used and what type of EC2 instances Beanstalk should be creating behind the scenes. Beanstalk will start be creating one instance (a Micro instance in this case), and then will create additional instances of that same type as needed per the auto-scaling configuration.</p><p>&nbsp;</p><p><a class="thumbnail" href="http://alexchardin.com/wp-content/uploads/2013/02/instance-details.png"><img class="alignnone  wp-image-44" alt="instance-details" src="http://alexchardin.com/wp-content/uploads/2013/02/instance-details.png" width="751" height="460" /></a></p><p>&nbsp;</p><p>After all the required settings are filled in the “Deploy” button will become available. Clicking that will build a deployment package (in the same format as a traditional Web Deploy) and begin the process of actually setting up the Beanstalk application up in the cloud.</p><p><a class="thumbnail" href="http://alexchardin.com/wp-content/uploads/2013/02/step-61.png"><img class="alignnone size-full wp-image-54" alt="step-6" src="http://alexchardin.com/wp-content/uploads/2013/02/step-61.png" width="791" height="547" /></a></p><p>&nbsp;</p><p>So within just a few minutes we’ve instructed AWS to do a number of very powerful things. With the settings we configured right within Visual Studio, AWS has now:</p><ul><li><span style="line-height: 13px;">Instantiated a Windows Server 2012 EC2 instance ready to roll with IIS 8.0 and MVC 4</span></li><li>Created and configured a load balancer</li><li>Deployed a custom ASP.NET MVC application</li><li>Created an HTTP-friendly “security group” (~firewall)</li><li>Created DNS entries in the Route 53 system</li><li>Prepped an auto-scaling group (more later)</li></ul><p>Those are all tasks that would need to be done manually (for the most part) if standard virtual machines were being used instead of Beanstalk. They all done automatically without ever logging into the AWS web interface or remoting into a server somewhere.</p><h3>Then What?</h3><p>I don’t know, take a break maybe? Do some pushups? I glossed over a number of details, but a lot happened there with very little effort; and all other things being equal, getting good with this approach has the potential to save valuable time throughout a development project and even more time during the ongoing maintenance period of an application.</p><h2>Additional Topics</h2><p>I skipped a couple of important points while going through that example in order to illustrate how simple a basic case is. These topics below don’t add a ton of extra effort, but there is a slight learning curve.</p><h3>Databases</h3><p>Short story: <a href="http://aws.amazon.com/rds/">Amazon RDS</a> (Relational Database Service) makes it very easy to incorporate a relational database into a Beanstalk architecture.</p><p>RDS can take the form of MySQL, SQL Server or Oracle, so chances are you should not have to modify your application’s code in order to interact with it. You just treat it like a another database server. I don’t know why, but when using a Windows/.NET Beanstalk application, you need to manage your RDS instance separately from the Beanstalk application. That doesn’t entail that much more effort but it is a minor inconvenience. With non-Windows Beanstalk applications, RDS configuration is included within Beanstalk itself when using the web interface. So it saves a few steps, but the net result is essentially the same.</p><p><a class="thumbnail" href="http://alexchardin.com/wp-content/uploads/2013/02/rds-web.png"><img class="alignnone  wp-image-65" alt="rds-web" src="http://alexchardin.com/wp-content/uploads/2013/02/rds-web.png" width="817" height="551" /></a></p><p>&nbsp;</p><h3>Monitoring and Auto-Scaling</h3><p>Exactly what it sounds like. Since Beanstalk dictates the AMIs of the EC2 instances that it creates, it can do some cool monitoring and even take automated action based on that monitoring. Going back to the AWS Toolkit for Visual Studio again, views and configuration screens for this part of Beanstalk are also readily available.</p><p><a class="thumbnail" href="http://alexchardin.com/wp-content/uploads/2013/02/monitoring.png"><img class="alignnone  wp-image-67" alt="monitoring" src="http://alexchardin.com/wp-content/uploads/2013/02/monitoring.png" width="872" height="557" /></a></p><p>Auto-scaling of course goes a step further and manages the number of instances running in the application based on various load-influencing metrics.</p><p><a class="thumbnail" href="http://alexchardin.com/wp-content/uploads/2013/02/auto-scaling.png"><img class="alignnone size-full wp-image-68" alt="auto-scaling" src="http://alexchardin.com/wp-content/uploads/2013/02/auto-scaling.png" width="865" height="616" /></a></p><h3>Cost</h3><p>The Elastic Beanstalk service is actually free to use. All costs are incurred by the underlying EC2 and RDS instances, storage, DNS, and bandwidth. The <a href="http://aws.amazon.com/pricing/elasticbeanstalk/">Elastic Beanstalk pricing page</a> has a couple of useful tables for what various example scenarios would cost per hour/month.</p><h2>Conclusion</h2><p>Elastic Beanstalk is a powerful technology and the fact that it can be tightly integrated into the standard development environment and process for .NET developers is a big plus. It doesn’t solve every problem though. For instance Beanstalk applications cannot be scaled across geographical regions, only Availability Zones. So you would need to go beyond this basic configuration for a maximally robust HA architecture.</p><p>My main takeaway and incentive to continuing looking into Elastic Beanstalk is simply that it seems substantially more efficient to walk through the exact deployment process described above than it does to spin up a Windows Server, install IIS, configure ASP.NET, configure a load balancer, setup permissions, and XCopy deploy packages for every project that I work on.</p><p>&nbsp;</p> ]]></content:encoded> <wfw:commentRss>http://www.centare.com/elastic-beanstalk-and-visual-studio-in-action/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Centare&#8217;s Dan Piessens earns international honor from Microsoft</title><link>http://www.centare.com/centares-dan-piessens-earns-international-honor-from-microsoft/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=centares-dan-piessens-earns-international-honor-from-microsoft</link> <comments>http://www.centare.com/centares-dan-piessens-earns-international-honor-from-microsoft/#comments</comments> <pubDate>Mon, 15 Apr 2013 19:59:10 +0000</pubDate> <dc:creator>Chad Albrecht</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[Recognition]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[azure]]></category> <category><![CDATA[microsoft]]></category> <category><![CDATA[P&P]]></category><guid isPermaLink="false">http://www.centare.com/?p=10531</guid> <description><![CDATA[Microsoft has named Dan Piessens, a software consultant with Centare, a Patterns &#38; Practices (P&#38;P) Champion for 2013. A prestigious recognition, Piessens is the only P&#38;P Champion from the Midwestern U.S. According to Microsoft, champions are chosen for advising Microsoft]]></description> <content:encoded><![CDATA[<p>Microsoft has named Dan Piessens, a software consultant with Centare, <a href="http://pnp.azurewebsites.net/en-us/people.htm#grigori_melnik">a Patterns &amp; Practices (P&amp;P) Champion</a> for 2013. A prestigious recognition, Piessens is the only P&amp;P Champion from the Midwestern U.S.</p><p>According to Microsoft, champions are chosen for advising Microsoft users and for sharing practical industry experience on how to improve software projects.</p><p>“Dan has constantly delivered quality feedback and diligent reviews in his work and interaction with the members of the Microsoft advisory board and our development teams,” says Grigori Melnik, principal program manager for Microsoft patterns &amp; practices. “Dan’s broad industrial knowledge and deep technical expertise make him one of the best advisors I’ve ever worked with.”</p><p>This is the second P&amp;P recognition for Piessens since he began working closely with the software giant in 2005. Just this year, Piessens worked as an advisor for several Microsoft projects including the <a href="http://msdn.microsoft.com/en-us/library/jj554200.aspx">CQRS Journey</a> and <a href="http://msdn.microsoft.com/en-us/library/hh680918(v=pandp.50).aspx">Enterprise Library Integration Pack for Windows Azure</a>.</p><p>“One of the goals of the P&amp;P team is to take the never-ending stream of new technology from Microsoft and translate that into workable solutions in different industries,” says Piessens. “I offer perspective on real world situations and relay user feedback on their approach. My intention is to improve and work until we get results.”</p><p>Piessens joined Centare in the fall of 2012 and has been in the software industry for 12 years. He is a graduate of Marquette University High School, UW- Milwaukee and Marquette University.</p><p>“Dan has been instrumental in guiding our clients through multi-layered technical issues,” says Andrew Hall, director of consulting at Centare. “In fact, Dan accepted a job with Centare over Microsoft, so it’s tremendous to have him engage with us.”</p> ]]></content:encoded> <wfw:commentRss>http://www.centare.com/centares-dan-piessens-earns-international-honor-from-microsoft/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Case Study: Explore Pewaukee App</title><link>http://www.centare.com/case-study-explore-pewaukee-app/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=case-study-explore-pewaukee-app</link> <comments>http://www.centare.com/case-study-explore-pewaukee-app/#comments</comments> <pubDate>Mon, 15 Apr 2013 18:33:57 +0000</pubDate> <dc:creator>William Welbes</dc:creator> <category><![CDATA[Case Studies]]></category> <category><![CDATA[Mobile App Development]]></category><guid isPermaLink="false">http://www.centare.com/?p=10505</guid> <description><![CDATA[The Client Positively Pewaukee Positively Pewaukee is an award winning non-profit organization dedicated to making Pewaukee, Wisconsin a premiere destination and a place people love to call home. A member of the Wisconsin Main Street Program, Positively Pewaukee fosters business]]></description> <content:encoded><![CDATA[<p><a href="https://itunes.apple.com/us/app/explore-pewaukee/id616311488?mt=8" target="_blank"><img class="size-medium wp-image-9225 alignright" style="padding-top: 0px; padding-bottom: 0px;" title="Explore Pewaukee" alt="Explore Pewaukee" src="http://www.centare.com/uploads/10510/iphone5_screen1_small.png" width="350" height="673" /></a></p><h1>The Client</h1><p><strong>Positively Pewaukee</strong></p><p>Positively Pewaukee is an award winning non-profit organization dedicated to making Pewaukee, Wisconsin a premiere destination and a place people love to call home. A member of the Wisconsin Main Street Program, Positively Pewaukee fosters business growth and partnerships in the community, produces events, establishes community connections and helps beautify the downtown. Comprised of both staff and volunteers, Positively Pewaukee has a great impact on the Pewaukee community.</p><h1>The App</h1><p>Explore Pewaukee is your mobile guide to all of the places and events that make Pewaukee great!</p><p>Get plugged in with the latest information about Pewaukee events and happenings. Find out about the next festival, water ski show, or community event. Be notified of current and upcoming events right on your device. Looking for a place to eat? View restaurants on a map or in a list and filter by type of cuisine. Simply tap to call or view the website for more details. Searching for a place to stay or shop in Pewaukee? View a list of the locations and drill down for more information. Discover new spots each time you use the app.</p><p>Looking for more information about Pewaukee? Tap the “more” section to view information about our community, government entities, and community groups. Check out the latest photos from around town in the photo albums.</p><h1>Our Solution</h1><p>Explore Pewaukee demonstrates Centare’s ability to deliver an end to end solution; from app design, implementation, back end data, services and administration.  Centare created an extensible platform that provides the client with the ability to easily maintain and update app data.  The app design provides a very polished and professional look and feel and an experience that draws the user in.  Centare’s breadth of expertise and experience enables us to deliver complex mobile solutions that are well designed and fit for purpose.</p> ]]></content:encoded> <wfw:commentRss>http://www.centare.com/case-study-explore-pewaukee-app/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using apc
Page Caching using apc
Database Caching 2/29 queries in 0.101 seconds using apc
Object Caching 1859/2002 objects using apc

 Served from: www.centare.com @ 2013-05-21 04:41:05 by W3 Total Cache -->