<?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>SRT Solutions</title>
	<atom:link href="http://www.srtsolutions.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.srtsolutions.com</link>
	<description>Software. Research. Teamwork. Building custom software in a collaborative way.</description>
	<lastBuildDate>Fri, 10 May 2013 04:34:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Scala User Group to meet May 15 at 6 pm</title>
		<link>http://www.srtsolutions.com/scala-user-group-meet-15-6-pm</link>
		<comments>http://www.srtsolutions.com/scala-user-group-meet-15-6-pm#comments</comments>
		<pubDate>Thu, 09 May 2013 05:55:59 +0000</pubDate>
		<dc:creator>Dianne Marsh</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[meetup]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.srtsolutions.com/?p=5032</guid>
		<description><![CDATA[<p>I will be out of town, but Nathan Dotz of Detroit Labs has graciously offered to help manage the Ann Arbor Scala Enthusiasts Group. The <p>Read more >> <a href="http://www.srtsolutions.com/scala-user-group-meet-15-6-pm">Scala User Group to meet May 15 at 6 pm</a></p>]]></description>
			<content:encoded><![CDATA[<p>I will be out of town, but Nathan Dotz of Detroit Labs has graciously offered to help manage the Ann Arbor Scala Enthusiasts Group. The meeting scheduled for May 15 will continue as planned, with the Scala Koans. The koans are a way to learn Scala in a self-paced way, either in a group or individually.</p>
<p>The meeting will be held at 6 pm on Wednesday, May 15, at SRT Solutions, 206 S. Fifth Ave., Suite 200, Ann Arbor, MI 48104.</p>
<p>RSVP at <a href="http://www.meetup.com/Ann-Arbor-Scala-Enthusiasts-User-Group-Meeting/events/114864142/">http://www.meetup.com/Ann-Arbor-Scala-Enthusiasts-User-Group-Meeting/events/114864142/</a></p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.srtsolutions.com/scala-user-group-meet-15-6-pm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Adventures: Managing (my) career &#8230;</title>
		<link>http://www.srtsolutions.com/adventures-managing-my-career</link>
		<comments>http://www.srtsolutions.com/adventures-managing-my-career#comments</comments>
		<pubDate>Fri, 03 May 2013 04:00:48 +0000</pubDate>
		<dc:creator>Dianne Marsh</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Ann Arbor]]></category>

		<guid isPermaLink="false">http://www.srtsolutions.com/?p=5030</guid>
		<description><![CDATA[<p dir="ltr">One of my favorite topics is career management. I like to remind those that I mentor that they need to be in charge of <p>Read more >> <a href="http://www.srtsolutions.com/adventures-managing-my-career">New Adventures: Managing (my) career &#8230;</a></p>]]></description>
			<content:encoded><![CDATA[<p dir="ltr">One of my favorite topics is career management. I like to remind those that I mentor that they need to be in charge of their careers. I’ve said that while your employer may manage your job, the responsibility for making sure that The Next Big Thing is in line with what YOU want to do is solely yours. At my keynote at 1DevDay in 2011, I described how to manage your career path, and gave examples of I have been actively managing mine through speaking, continual learning, and community participation. My book, <a href="http://atomicscala.com/">Atomic Scala</a>, co-authored with Bruce Eckel and recently published, satisfied my technical leanings, and participation in local and national conferences (OSCON, CodeMash, and the Java Posse Roundup) was a further demonstration of my commitment to both learning and to professional networking. Guiding your career along a path consistent with your lifelong goals, particularly as they evolve, is a big responsibility and requires active participation.</p>
<p dir="ltr">No one, at any level, should ignore this responsibility. You owe it to yourself and to your organization. If your current position isn’t working for you, either adapt it to work, or find something that does. In Open Spaces conferences, we call this the Law of Two Feet, and it’s quite liberating to apply this thinking broadly.</p>
<p dir="ltr">SRT Solutions recognizes that employees are most effective when fully engaged. This translates to better software, better communication with customers, and to being a better co-worker. And, to being a better boss. Even business owners are not exempt from needing to follow their passions.</p>
<p dir="ltr">So what’s my passion? I like bringing people together and building great software to match what they need. I’ve had a lot of opportunity to do that in my 13 years at SRT, but I’ve decided that I need a new adventure. I could have stayed at the company that Bill Wagner and I built until retirement, but I decided to use the Law of Two Feet to find my next adventure.</p>
<p>I’m excited to say that I will be joining Netflix in Los Gatos, CA, next week as Director of Engineering for Cloud Tools. I will be working with an amazing team as they build software to support cloud deployment and management, used both internally and <a href="http://netflix.github.io/#repo">often released as open source tools to the broad community</a>. I’ll be working with the other teams to ensure that they know what our team builds, and to help ensure that what we build is useful for them. This is an amazing opportunity for me, but not one that I made lightly. It required not only asking Bill to take on full managerial responsibility for SRT but also moving my family across the country. I remain committed to SRT’s success, and to watching the personal and professional growth of the SRT staff.</p>
<p>My nine year old daughter is wise. She said, “Sometimes change is good”. Indeed, indeed it is.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.srtsolutions.com/adventures-managing-my-career/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>There and Back Again — Thoughts on SPAs</title>
		<link>http://feedproxy.google.com/~r/genisio/~3/LCHJNPFkpEc/</link>
		<comments>http://feedproxy.google.com/~r/genisio/~3/LCHJNPFkpEc/#comments</comments>
		<pubDate>Wed, 17 Apr 2013 14:27:50 +0000</pubDate>
		<dc:creator>SRT Solutions</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://houseofbilz.com/?p=438</guid>
		<description><![CDATA[I&#8217;ve been doing this software thing for quite a while now. My first software job was in web development back in 1998. Since then, I&#8217;ve traveled through Simulation Systems, Embedded Systems, Tooling, Desktop Applications, Rich Internet Applications (RIA), some mobile and today I am back where I started, developing Web Applications. Productivity Highs with RIA [...] <p>Read more >> <a href="http://feedproxy.google.com/~r/genisio/~3/LCHJNPFkpEc/">There and Back Again — Thoughts on SPAs</a></p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing this software thing for quite a while now.  My first software job was in web development back in 1998.  Since then, I&#8217;ve traveled through Simulation Systems, Embedded Systems, Tooling, Desktop Applications, Rich Internet Applications (RIA), some mobile and today I am back where I started, developing Web Applications.</p>
<h3>Productivity Highs with RIA Frameworks</h3>
<p>After traveling out and back, I see everything from a different perspective.  Web applications, today, are incredibly different from the way they were in the 90s.  The biggest difference, from my perspective, is the way we develop them.  Coming from the RIA perspective, using Silverlight and Flex, I am accustomed to a certain productivity that I pine for now that I am developing for the web again.</p>
<p>If you know me, you know that I was a big fan of Silverlight and Flex.  They were frameworks which let me develop amazing desktop experiences in the browser.  I was doing things in 2007 that to this day is still impossible to do with HTML5 today.  Those frameworks had one flaw, however.  They required plug-ins to run.</p>
<h3>Death to the Plug-In</h3>
<p>I&#8217;ve never been much of an apologist for plug-ins. I saw them as a necessary evil.  An evil that became unsustainable in this brave new world of mobile computing.  When Apple, Microsoft and Adobe killed Silverlight and Flex, I wasn&#8217;t sad because I loved those platforms.  I was sad because I knew I couldn&#8217;t be as productive writing the same kinds of applications in HTML/JavaScript/CSS.</p>
<h3>First Generation SPA Frameworks</h3>
<p>This is where the Single-Paged Application (SPA) frameworks came to my aid.  There are too many to count, but from my vantage point, it has felt like Backbone.js and Knockout.js have been the primary options in the SPA market.    I landed on Backbone.js as my go-to choice because it was a more complete solution than Knockout.js with its client-side route handling and model synchronization.  I found myself at home with building SPAs because they were so similar to RIAs.</p>
<p>Unfortunately, my productivity never came close to that of the plug-in frameworks.  Backbone.js and Knockout.js simply aren&#8217;t high enough of an abstraction for them to provide the same abilities to me.  They are the first generation of SPA tools and with that brings the pains of a first-generation technology.</p>
<h3>Filling in the Gaps</h3>
<p>We&#8217;re starting to see some pretty nice add-ons to our first-generation tools.  These add-ons fill the gaps that the frameworks leave by attempting to make you more productive.  Specifically, Backbone.js has a poor view abstraction, making things like collection views and deeply nested views difficult.  Marionette.js builds upon Backbone.js to provide more structure, guidance and capabilities.  Using Marionette.js boosted my productivity significantly by taking care of much of the boiler-plate code that I found myself writing with Backbone.js alone.  It is still not ideal, mostly because the abstractions are not extremely strong.  They are strongER, but nothing compared to the capabilities I pine for.  Knockout.js has a similar packaging called Hot Towel.  Hot Towel fills in the holes that Knockout.js left by providing model synchronization, route handling and child view handling.</p>
<p>Unfortunately, these approaches only take us as far as the base technologies allow us to.  Without a strong abstraction to begin with, these add-ons can only ever takes us to generation 1.5.</p>
<h3>Second Generation SPA Frameworks</h3>
<p>At the same time, the second generation of the SPA frameworks are coming forward.  They come from a higher level of abstraction and the code you write demonstrates it by being significantly less (half or less).  These frameworks (Angular.js and Ember.js) provide everything we wanted from our first generation tools but they also bring more capabilities like convention-based development paradigms and dependency injection.  What&#8217;s more, we are starting to see tooling (such as Batarang) built around these abstractions which let our development lifecycle be that much smoother.</p>
<p>I am focusing my efforts on these second-generation tool sets for now.  I am not abandoning my Backbone.js/Marionette.js tools completely, but I am not planning to invest much more time in them.  Instead of patching the holes that the first generation tools created, I am choosing to spend my time using (and recommending) the next generation of tools.  Specifically, I am focusing my efforts on Angular.js.  It fits my development style better and I feel like the abstractions make more sense to me.  I&#8217;m not knocking on Ember.js in any way.  It is a fine choice, in my opinion.</p>
<h3>The Future of SPA Development</h3>
<p>But this isn&#8217;t where we are settling.  I think it will require a third generation of tools before the SPA space really takes off.  I have no idea what these frameworks will be, but I expect they will approach the productivity that I grew accustomed to with Silverlight and Flex.  The levels of abstractions will be higher and the tooling will be richer.  I expect that we will start to approach similar developer/designer workflows that were so amazing in the SPA days.  I expect we will see multiple language integration, including debugging and profiling tools built around these frameworks.  They will feel much less like a web framework and more like a desktop development framework.  The user experiences we create will be comparable to the experiences we created with Flex and Silverlight.</p>
<h3>Paying Back the Debt</h3>
<p>The funny thing is that we will have taken 5 years to get there.  It will be 5 years of stepping out of the plug-ins and into the browser so that we can achieve the same quality of application that we were already producing.  In some ways, it feels like a regression, but we have to realize that the plug-ins were really just a disguised form of technical debt.  They provided a one-off environment so that we were able to do things that weren&#8217;t possible in the browser, but they did so by not investing in the browser.  Ultimately, the browser is the platform we were headed towards so we incurred debt.  We just have to pay it off before we can really innovate again.</p>
<h3>Conclusion</h3>
<p>I&#8217;m excited to see where the future of front-end development goes.  I&#8217;m excited to see that great strides are being made and I am happy to be at the front of the wave.  The community is starting to get excited too.  Here in Ann Arbor, we will be kicking off a JavaScript user group very soon which will give us a place to discuss these technologies and approaches.  I look forward to chatting it up!</p>
<h3>On a personal note</h3>
<p>This is my last blog post written for SRT Solutions.  I am moving on to something new.  More on that soon.</p>
<img src="http://feeds.feedburner.com/~r/genisio/~4/LCHJNPFkpEc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://houseofbilz.com/archives/2013/04/17/there-and-back-again-thoughts-on-spas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Humanitarian Toolbox:  Day 2</title>
		<link>http://www.srtsolutions.com/humanitarian-toolbox-day-2</link>
		<comments>http://www.srtsolutions.com/humanitarian-toolbox-day-2#comments</comments>
		<pubDate>Thu, 11 Apr 2013 20:51:52 +0000</pubDate>
		<dc:creator>Bill Wagner</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[humanitarianToolbox]]></category>

		<guid isPermaLink="false">http://www.srtsolutions.com/?p=5015</guid>
		<description><![CDATA[<p>Awesome. There&#8217;s no other word. This was positively awesome.</p> <p>On the 10th, we built on the foundation we created on Tuesday. We spent the entire <p>Read more >> <a href="http://www.srtsolutions.com/humanitarian-toolbox-day-2">Humanitarian Toolbox:  Day 2</a></p>]]></description>
			<content:encoded><![CDATA[<p>Awesome. There&#8217;s no other word. This was positively awesome.</p>
<p>On the 10th, we built on the foundation we created on Tuesday. We spent the entire evening coding. The event was supposed to end at 10:00. Everyone asked for &#8220;15 more minutes to finish a couple cards&#8221;. Two hours later, at 12:30 am, we finally left. The best part was that we had finished the key features we came to build. Tony Surma, Microsoft&#8217;s CTO for disaster relief response said, &#8220;if a disaster hit tomorrow and I deployed this, it would get used already. It&#8217;s better than what&#8217;s in the field today.&#8221; A lot of credit goes to some very dedicated people.</p>
<p>First and foremost, credit goes to the conference attendees that were part of the hack a thon both nights. We didn&#8217;t know what to expect, and as a result, we&#8217;ll plan better in future. The folks were patient, and helped us drive the forward. We got great ideas, lots of energy, and most of all: Working Software.</p>
<p><a href="http://www.srtsolutions.com/wbcntnt/wp-content/uploads/WP_20130410_009.jpg"><img style="display: inline; border: 0px;" title="WP_20130410_009" src="http://www.srtsolutions.com/wbcntnt/wp-content/uploads/WP_20130410_009_thumb.jpg" alt="WP_20130410_009" width="679" height="384" border="0" /></a></p>
<p>Also, a quick tip of the hat to Aaron Skonnard and Pluralsight. Everyone that participated by making at least one checkin got a free month subscription to the entire Pluralsight library. Selfishly, I hope they learn more, and help us build more software for Humanitarian Toolbox. (Disclosure: I&#8217;m working on my first Pluralsight course.)</p>
<p>Brian Randell did a lot of behind the scenes work to setup web hosted TFS for us. He also helped us test and work with the Git TF bridge so attendees could use whatever they felt most comfortable with. (And, he helped me get more familiar with TFS and it’s features.  He was a great help.)</p>
<p>Three people deserve extra thanks: <a href="http://twitter.com/wardbell">Ward Bell</a>, <a href="http://twitter.com/julielerman">Julie Lerman</a>, and <a href="http://twitter.com/john_papa">John Papa</a>. The team wanted to apply what they were learning at the conference, and selected breeze, HotTowel, and Entity Framework Code First for this project. John, Ward, and Julie all gave up quite a bit of time to help. They paired with attendees, explaining as they coded, or guiding their pair (sometimes me) around the code and libraries involved. Pure bliss: Learning and building super useful software at the same time.</p>
<p><a href="http://www.srtsolutions.com/wbcntnt/wp-content/uploads/WP_20130410_003.jpg"><img style="display: inline; border: 0px;" title="WP_20130410_003" src="http://www.srtsolutions.com/wbcntnt/wp-content/uploads/WP_20130410_003_thumb.jpg" alt="WP_20130410_003" width="711" height="402" border="0" /></a></p>
<p>For examples of what they did, John told me he and Ward would &#8220;try to stop by for about 10 or 15 minutes&#8221; to help a bit. They were both helping for at least two hours. Julie stayed until she was in jeopardy of missing her flight. (She did make it).</p>
<p><a href="http://www.srtsolutions.com/wbcntnt/wp-content/uploads/756607639.jpg"><img style="display: inline; border: 0px;" title="756607639" src="http://www.srtsolutions.com/wbcntnt/wp-content/uploads/756607639_thumb.jpg" alt="756607639" width="718" height="406" border="0" /></a></p>
<p>&nbsp;</p>
<p>We had quite the cast of characters show up and ask how they can get involved as this continues over time. At future events, you may see Phil Haack, Scott Hanselman, Damien Edwards and other familiar names helping out. All of those said they would have helped this time, had they known more about it earlier in the process.</p>
<p>I can&#8217;t close this &#8220;thank you&#8221; section without mentioning three other very important people. Mari Sessions took on every task that doesn&#8217;t involve code (she&#8217;s got a business background, not a developer background). I have no idea where she gets that much energy. She organized the room, promoted the event, walked up and down the halls asking random conference attendees if they wanted to participate. Arranged refreshments, made everyone feel welcome, and made the event happen.</p>
<p><a href="http://twitter.com/tonysurma">Tony Surma</a>, Microsoft&#8217;s CTO for Disaster Relief, kept us focused on the problem at hand. He&#8217;s gone to disaster sites and written code while in the field. His experience and knowledge of disaster zones and the problems relief workers encounter in the field was invaluable. I&#8217;d be remiss if I didn&#8217;t mention that he&#8217;s also a super smart tech guy, and can just pitch in and make things work.</p>
<p>Also, an extra hat tip to Microsoft.  They are providing free TFS hosting, Azure hosting, and other help supporting the effort. Furthermore, they are not mandating any technology decisions that we make. They are being a great partner to help us build software to solve real problems.</p>
<p>And finally, without Richard Campbell, this doesn&#8217;t get off the ground. I&#8217;m thrilled to be working with Richard on this. The reason is simple: when Richard gets behind an idea, things happen. Ideas turn into action. Tony started using the phrase &#8220;turn innovation into impact.&#8221; That sums up Richard&#8217;s contributions well. What we started only has meaning when it gets in the hands of real relief organizations during a (sadly) real disaster. When that happens, real lives are saved because those relief workers can do more. Richard brings energy, drive, and makes it happen. I&#8217;m glad he invited me to join.</p>
<p>Finally, this last week can&#8217;t be a one time event. It&#8217;s got to be the start of long term commitments to create software that helps relief organizations respond to disaster events. Richard, Tony, Mari and I will be meeting in the coming weeks to go over what we learned. We&#8217;re going to push code into release cycles. We&#8217;re going to plan more events. We&#8217;re going to create a plan to involve more people.</p>
<p>Join us:</p>
<p>When disaster strikes, code saves lives. If you&#8217;re interested, signup at <a href="http://humanitariantoolbox.net/">humanitariantoolbox.net</a> and well keep you informed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.srtsolutions.com/humanitarian-toolbox-day-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Humanitarian Toolbox Hack a thon, Day 1</title>
		<link>http://www.srtsolutions.com/humanitarian-toolbox-hack-a-thon-day-1</link>
		<comments>http://www.srtsolutions.com/humanitarian-toolbox-hack-a-thon-day-1#comments</comments>
		<pubDate>Wed, 10 Apr 2013 16:23:43 +0000</pubDate>
		<dc:creator>Bill Wagner</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[humanitarianToolbox]]></category>

		<guid isPermaLink="false">http://www.srtsolutions.com/?p=5004</guid>
		<description><![CDATA[<p>I’m really happy with the response we got from the first night of the Humanitarian Toolbox hackathon at DevIntersections. We’re creating innovations that have a <p>Read more >> <a href="http://www.srtsolutions.com/humanitarian-toolbox-hack-a-thon-day-1">Humanitarian Toolbox Hack a thon, Day 1</a></p>]]></description>
			<content:encoded><![CDATA[<p>I’m really happy with the response we got from the first night of the <a href="http://humanitariantoolbox.net/">Humanitarian Toolbox</a> hackathon at <a href="http://devintersection.com/">DevIntersections</a>. We’re creating innovations that have a real human impact.</p>
<p><a href="http://www.srtsolutions.com/wbcntnt/wp-content/uploads/WP_20130409_001.jpg"><img style="display: inline; border: 0px;" title="WP_20130409_001" src="http://www.srtsolutions.com/wbcntnt/wp-content/uploads/WP_20130409_001_thumb.jpg" alt="WP_20130409_001" width="532" height="301" border="0" /></a></p>
<p>We didn’t really know what to expect.  Would conference attendees give up a free night after a day of learning new technologies to build more software?  Thankfully, the answer was yes.  We had a great team of developers helping us start building a crisis checkin system for disaster relief workers.  I’m confident that if we get some of the right people to attend tonight, we have a chance to make significant progress on the user stories for our first sprint. It was great to see developers that hadn’t even met each other sit down, discuss designs, create code, and help us build software to make disaster response more effective.</p>
<p>There were three key events that make me very excited about where this can go:</p>
<ol>
<li>We were starting from nothing, and this morning we have working software.</li>
<li>The folks that came wanted to apply what they’ve learned at DevIntersections to this project (more below).</li>
<li>We continued to get commits after we all left at 10:00 pm.</li>
</ol>
<p>One of the main sessions yesterday was JavaScript Jumpstart, where he explained his HotTowel template to attendees.  Our first app is using the <a href="http://johnpapa.net/hottowel">HotTowel</a> template. Thanks to <a href="http://www.johnpapa.net">John Papa</a> for creating a great framework, and inspiring the team.</p>
<p>The big goal is that this is the start of something.  It’s not a one time event.  We need to continue building software, creating real applications that real relief workers have asked for.  We’re using innovation to create real impact in real disaster situations.</p>
<p>We’ve got another session tonight at DevIntersections, where we plan to finish the user stories that are in progress. If you’re at DevIntersections, please come by and help.  If not, don’t worry.  After this hack-a-thon, we’re going to open the source control system and the task board to everyone. We’ve got a few tasks to get done to make that happen, but we’ll get it done.</p>
<p>Overall, I’m really impressed with the beginning we made.  I’m constantly impressed by the commitment, dedication, and contribution the software development community will make.  We are asking developers to give up their free time to build software that aids relief workers. We are getting great response.  I’m excited to see what we’ll build next.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.srtsolutions.com/humanitarian-toolbox-hack-a-thon-day-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Write Some Code, Change the World</title>
		<link>http://www.srtsolutions.com/write-some-code-change-the-world</link>
		<comments>http://www.srtsolutions.com/write-some-code-change-the-world#comments</comments>
		<pubDate>Thu, 28 Mar 2013 19:50:04 +0000</pubDate>
		<dc:creator>Bill Wagner</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Buzz]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[SRT in the News]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Trending at SRT]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[humanitarianToolbox]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.srtsolutions.com/?p=5002</guid>
		<description><![CDATA[<p>I&#8217;ve always found that developers are very interested in contributing their skills and their time to help others.</p> <p>I&#8217;m excited to be part of a <p>Read more >> <a href="http://www.srtsolutions.com/write-some-code-change-the-world">Write Some Code, Change the World</a></p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always found that developers are very interested in contributing their skills and their time to help others.</p>
<p>I&#8217;m excited to be part of a new opportunity for developers to help others: The Humanitarian Toolbox.</p>
<p><a href="http://humanitariantoolbox.net/">The Humanitarian Toolbox</a>&#160; is the brain child of Richard Campbell, of <a href="http://dotnetrocks.com">.NET Rocks</a> fame. The concept is to have developers create Open Source software projects that solve real problems for disaster relief organizations. A group of people, including Richard and I, have been working with global relief organizations to determine what they need most. We&#8217;ve already got a list of more than a dozen application ideas.</p>
<p>It&#8217;s time to start building. We&#8217;ve picked the first project: a relief worker check-in system. This system would enable relief workers and volunteers to check-in and check-out at a disaster site. The field coordinators would have better information about the skills and the availability of relief workers, enabling them to better deploy the people that have volunteered their time to help. Relief workers and volunteers would get assignments and locations directly on their smartphone. The end result will be that relief workers are more efficient while on site, and more lives are saved.</p>
<p>We need developers that want to build this app.</p>
<p>Humanitarian Toolbox is hosting a hack-a-thon at <a href="http://devintersection.com/shows/april13/sessions.aspx?s=2" class="broken_link">DevIntersections</a>. I&#8217;m working to organize the event, and help organize developers (like you) interested in participating. We plan to create a small proof of concept for the relief worker check-in system during the hack-a-thon. After the initial hack-a-thon, we want to enlist the broader community to continue building the app. </p>
<p>What&#8217;s our deadline? We&#8217;d like it in place before the next natural disaster happens. We don&#8217;t know when that will be, so we&#8217;d like to keep building and have it ready as soon as we can.</p>
<p>If you&#8217;re going to be a DevIntersections, join us. Contribute your talent and help relief workers save lives. If you&#8217;re not going to DevIntersections, there&#8217;s still plenty to do to help. Follow us on twitter: <a href="http://twitter.com/htbox">@htbox</a> or the hash tag for the event: #HtBox. We&#8217;ll have plenty more software to build after the hack-a-thon. For us to be successful, we&#8217;ll need to keep building and enhancing software for relief workers to battle the next crisis.</p>
<p>Write some code, help the world. Contribute to <a href="http://humanitariantoolbox.net/">Humanitarian Toolbox</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.srtsolutions.com/write-some-code-change-the-world/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ann Arbor Scala Enthusiasts March 20 &#8212; Scala 101: Come for the Collections, Stay for the Functions</title>
		<link>http://www.srtsolutions.com/ann-arbor-scala-enthusiasts-march-20-scala-101-collections-stay-functions</link>
		<comments>http://www.srtsolutions.com/ann-arbor-scala-enthusiasts-march-20-scala-101-collections-stay-functions#comments</comments>
		<pubDate>Sun, 17 Mar 2013 02:20:12 +0000</pubDate>
		<dc:creator>Dianne Marsh</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.srtsolutions.com/?p=4999</guid>
		<description><![CDATA[<p>Interested in learning more about Scala? Please join us on Wednesday night at 6 pm. We&#8217;ll have an introduction to Scala, demonstrate how sanity can <p>Read more >> <a href="http://www.srtsolutions.com/ann-arbor-scala-enthusiasts-march-20-scala-101-collections-stay-functions">Ann Arbor Scala Enthusiasts March 20 &#8212; Scala 101: Come for the Collections, Stay for the Functions</a></p>]]></description>
			<content:encoded><![CDATA[<p>Interested in learning more about Scala? Please join us on Wednesday night at 6 pm. We&#8217;ll have an introduction to Scala, demonstrate how sanity can be achieved by having consistent collections (who would have thought of that?!) and include some cool stuff that you can do with functions too.</p>
<p>In other words, we hope to lure you in!</p>
<p>The meeting will be held at SRT Solutions, 206 S. Fifth Ave., Suite 200, Ann Arbor, MI. It&#8217;s free and open to the public, but please<a href="http://www.meetup.com/Ann-Arbor-Scala-Enthusiasts-User-Group-Meeting/events/105732432/"> RSVP on the meetup site</a> so we will know how many folks are coming. You never know. I might bake cookies. Or not.</p>
<p>The speaker:</p>
<p>Dianne Marsh (yes, that&#8217;s me) will be speaking on Wednesday night. I  will be actively recruiting additional speakers for upcoming meetings, so please volunteer!  We already have a speaker for our April 17 meeting, but will be recruiting for meetings after that!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.srtsolutions.com/ann-arbor-scala-enthusiasts-march-20-scala-101-collections-stay-functions/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ann Arbor Scala Enthusiasts March 20 meeting</title>
		<link>http://www.srtsolutions.com/ann-arbor-scala-enthusiasts-march-20-meeting</link>
		<comments>http://www.srtsolutions.com/ann-arbor-scala-enthusiasts-march-20-meeting#comments</comments>
		<pubDate>Thu, 07 Mar 2013 20:47:02 +0000</pubDate>
		<dc:creator>Dianne Marsh</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Ann Arbor]]></category>
		<category><![CDATA[meetup]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.srtsolutions.com/?p=4997</guid>
		<description><![CDATA[<p>The Ann Arbor Scala Enthusiasts are on meetup and that allows me to post a poll regarding what folks would like for the March 20 <p>Read more >> <a href="http://www.srtsolutions.com/ann-arbor-scala-enthusiasts-march-20-meeting">Ann Arbor Scala Enthusiasts March 20 meeting</a></p>]]></description>
			<content:encoded><![CDATA[<p>The Ann Arbor Scala Enthusiasts are on meetup and that allows me to <a href="http://www.meetup.com/Ann-Arbor-Scala-Enthusiasts-User-Group-Meeting/polls/">post a poll</a> regarding what folks would like for the  March 20 meeting. Please vote! If you don&#8217;t like any of the topics, please comment here with suggestions.</p>
<p>The Ann Arbor Scala Enthusiasts will meet at 6 pm on March 20, 2013, at SRT Solutions, 206 S. Fifth Ave., Suite 200, Ann Arbor, MI 48104. The meeting is free and open to the public. Please join the meetup group and RSVP if you are planning to attend so that we can gauge interest and tailor content.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.srtsolutions.com/ann-arbor-scala-enthusiasts-march-20-meeting/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Async, Exceptions and Library Design</title>
		<link>http://www.srtsolutions.com/async-exceptions-and-library-design</link>
		<comments>http://www.srtsolutions.com/async-exceptions-and-library-design#comments</comments>
		<pubDate>Tue, 05 Mar 2013 16:49:13 +0000</pubDate>
		<dc:creator>Bill Wagner</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Tech Feature]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[async]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[DevCenterPosts]]></category>

		<guid isPermaLink="false">http://www.srtsolutions.com/?p=4984</guid>
		<description><![CDATA[<p>Hat tip to Stephen Toub for discussing this with me and helping to describe the solution.</p> <p>At my CodeMash precompiler, I mentioned how the C# <p>Read more >> <a href="http://www.srtsolutions.com/async-exceptions-and-library-design">Async, Exceptions and Library Design</a></p>]]></description>
			<content:encoded><![CDATA[<p>Hat tip to <a href="http://blogs.msdn.com/b/pfxteam/">Stephen Toub</a> for discussing this with me and helping to describe the solution.</p>
<p>At my CodeMash precompiler, I mentioned how the C# compiler ensures that methods marked with the &#8216;async&#8217; keyword that contain &#8216;await&#8217; expressions never throw synchronous exceptions. Instead, those methods will return a Task (or Task&lt;T&gt;) that will be placed in the faulted state if the method throws an exception. The compiler does the work to add the appropriate try/catch clauses to your methods, and translates any exceptions thrown during your method&#8217;s execution into returned faulted task.</p>
<p><a href="http://msmvps.com/blogs/jon_skeet/Default.aspx">Jon Skeet</a> was concerned by this strategy. He felt that API designers would prefer throwing synchronous exceptions for obvious programmer errors (things like ArgumentNullException and so on). I mentioned that the language specification defines that async methods will returned faulted tasks; they will not throw synchronous exceptions.</p>
<p>Of course, there is a way around this. You have to separate your public async APIs into two pieces: A public synchronous API that does parameter validation and state validation. This synchronous method then calls an internal async method that does the asynchronous work.</p>
<p>As an example, consider this (rather contrived) async method:</p>
<p>&#160;</p>
<pre style="font-family: ; background: white; color: "><font face="Consolas"><span style="color: "><font color="#0000ff"><font style="font-size: 9.8pt">
public</font></font></span><font style="font-size: 9.8pt">&nbsp;<span style="color: "><font color="#0000ff">async</font></span>&nbsp;<span style="color: "><font color="#2b91af">Task</font></span>&lt;<span style="color: "><font color="#0000ff">string</font></span>&gt; FizzBuzzAsync(<span style="color: "><font color="#0000ff">int</font></span> val)
{
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">if</font></span> (val &lt;= 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">throw</font></span>&#160;<span style="color: "><font color="#0000ff">new</font></span>&#160;<span style="color: "><font color="#2b91af">ArgumentException</font></span>(<span style="color: "><font color="#a31515">&quot;We can't fizzbuzz negative numbers, or 0&quot;</font></span>);

&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">await</font></span>&nbsp;<span style="color: "><font color="#2b91af">Task</font></span>.Delay(250);
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">var</font></span> rVal = <span style="color: "><font color="#0000ff">string</font></span>.Empty;
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">if</font></span> (val % 3 == 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rVal += <span style="color: "><font color="#a31515">&quot;Fizz&quot;</font></span>;
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">if</font></span> (val % 5 == 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rVal += <span style="color: "><font color="#a31515">&quot;Buzz&quot;</font></span>;
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">if</font></span> (<span style="color: "><font color="#0000ff">string</font></span>.IsNullOrWhiteSpace(rVal))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rVal = val.ToString();
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">return</font></span> rVal;
}</font></font>
</pre>
<p>&#160;</p>
<p>Calling this method with a negative number is a programming error. We&#8217;d like to have that condition throw a synchronous exception. We can achieve this by separating the method into two parts. The first part is a synchronous method that performs the parameter validation and state validation. The second part is an internal method that performs the asynchronous work.&#160; The first method will throw exceptions synchronously. The second will report errors using a faulted task.</p>
<p>&#160;</p>
<pre style="font-family: ; background: white; color: "><font face="Consolas"><span style="color: "><font color="#0000ff"><font style="font-size: 9.8pt">public</font></font></span><font style="font-size: 9.8pt">&nbsp;<span style="color: "><font color="#2b91af">Task</font></span>&lt;<span style="color: "><font color="#0000ff">string</font></span>&gt; FizzBuzzAsync(<span style="color: "><font color="#0000ff">int</font></span> val)
{
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">if</font></span> (val &lt;= 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">throw</font></span>&#160;<span style="color: "><font color="#0000ff">new</font></span>&#160;<span style="color: "><font color="#2b91af">ArgumentException</font></span>(<span style="color: "><font color="#a31515">&quot;We can't fizzbuzz negative numbers, or 0&quot;</font></span>);
&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">return</font></span> FizzBuzzAsyncImpl(val);
}
&nbsp;
<span style="color: "><font color="#0000ff">private</font></span>&#160;<span style="color: "><font color="#0000ff">static</font></span>&#160;<span style="color: "><font color="#0000ff">async</font></span>&#160;<span style="color: "><font color="#2b91af">Task</font></span>&lt;<span style="color: "><font color="#0000ff">string</font></span>&gt; FizzBuzzAsyncImpl(<span style="color: "><font color="#0000ff">int</font></span> val)
{
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">await</font></span>&#160;<span style="color: "><font color="#2b91af">Task</font></span>.Delay(250);
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">var</font></span> rVal = <span style="color: "><font color="#0000ff">string</font></span>.Empty;
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">if</font></span> (val % 3 == 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rVal += <span style="color: "><font color="#a31515">&quot;Fizz&quot;</font></span>;
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">if</font></span> (val % 5 == 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rVal += <span style="color: "><font color="#a31515">&quot;Buzz&quot;</font></span>;
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">if</font></span> (<span style="color: "><font color="#0000ff">string</font></span>.IsNullOrWhiteSpace(rVal))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rVal = val.ToString();
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: "><font color="#0000ff">return</font></span> rVal;
}</font></font>
</pre>
<p>That ensures that your public async methods conform to both important rules.</p>
<p>First, TAP (Task Asynchronous Pattern) methods do not allow synchronous runtime exceptions. They must return errors by returning a faulted task.</p>
<p>Second, to make it easier for callers to detect and correct programming errors, simple programming errors will throw synchronous exceptions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.srtsolutions.com/async-exceptions-and-library-design/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Annual trek to Java Posse Roundup</title>
		<link>http://www.srtsolutions.com/annual-trek-java-posse-roundup</link>
		<comments>http://www.srtsolutions.com/annual-trek-java-posse-roundup#comments</comments>
		<pubDate>Sun, 24 Feb 2013 18:10:17 +0000</pubDate>
		<dc:creator>Dianne Marsh</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.srtsolutions.com/?p=4979</guid>
		<description><![CDATA[<p>I&#8217;m here in Crested Butte, Colorado, for the annual Java Posse Roundup. Of course, the Java Posse delivers the podcast that keeps programmers on the <p>Read more >> <a href="http://www.srtsolutions.com/annual-trek-java-posse-roundup">Annual trek to Java Posse Roundup</a></p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m here in Crested Butte, Colorado, for the annual <a href="http://www.mindviewinc.com/Conferences/JavaPosseRoundup/" class="broken_link">Java Posse Roundup</a>. Of course, the <a href="http://javaposse.com/">Java Posse delivers the podcast</a> that keeps programmers on the JVM up to date, and this conference brings together a group of those listeners every year so that we can say, in person, what we&#8217;ve been screaming at our mobile devices 51 weeks out of the year. And, given the open spaces format, we choose topics for discussion all week. We also hack on special projects and generally enjoy the intellectual experience.</p>
<p>I&#8217;ll report throughout the week, but for those who might be curious what we do here, I&#8217;m posting the &#8220;Master Schedule&#8221; below.</p>
<h1 dir="ltr">Sunday</h1>
<p><strong><strong>6pm: Welcome Barbeque.</strong></strong></p>
<p>&nbsp;</p>
<h1 dir="ltr">Monday</h1>
<p><strong><strong>Hackathon Day workshops </strong></strong></p>
<p><strong><strong>9:30 pm at the Majestic Theatre: “Possibilities”: A selection of TED Talks Designed to Inspire New Thinking, presented by the Java Posse Roundup. Free admission, all are welcome.<br />
</strong></strong></p>
<h1 dir="ltr">Tuesday</h1>
<p><strong><strong>8:30am:<br />
Conference Overview<br />
Introduction to Open Spaces<br />
Initial talk topics and organization<br />
Session 1<br />
10:30am-12:00pm: Session 2<br />
Afternoon: lunch/hackathons/free time<br />
Evening: Groups go to dinner or informal barbeque &amp; discussion<br />
Lightning Talks 8pm &#8211; 9:30 pm<br />
End the evening with private gathering at Princess Wine Bar.<br />
</strong></strong></p>
<h1 dir="ltr">Wednesday</h1>
<p><strong><strong>8:30-9:30 am: Session 3<br />
10:00-11:00am: Session 4<br />
11:30-12:30pm: Session 5<br />
Afternoon: lunch/hackathons/free time<br />
Evening: Groups go to dinner or informal barbeque &amp; discussion<br />
Lightning Talks 8pm &#8211; 9:30 pm<br />
End the evening at the Dogwood Cocktail Cabin.<br />
</strong></strong></p>
<h1 dir="ltr">Thursday</h1>
<p><strong><strong>8:30-9:30 am: Session 6<br />
10:00-11:00am: Session 7<br />
11:30-12:30pm: Session 8<br />
Afternoon: lunch/hackathons/free time<br />
Progressive Dinner (5 pm?).</strong></strong></p>
<p>End the evening at the Lobar with Karaoke.</p>
<h1 dir="ltr">Friday</h1>
<p><strong id="internal-source-marker_0.30797030217945576">8:30-9:30 am: Session 9<br />
10:00-11:00am: Session 10<br />
11:30-12:30pm: Session 11<br />
Afternoon: lunch/hackathons/free time<br />
Dinner at either Django’s or the Yurt (x-c ski or snowshoe to get to the Yurt, rentals at Nordic Center)</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.srtsolutions.com/annual-trek-java-posse-roundup/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
