<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>This End Up</title><link>http://codersforchrist.com/cs/blogs/nick/default.aspx</link><description>handling technology in the church with care</description><dc:language>en</dc:language><generator>CommunityServer 2.1 (Build: 60809.935)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ThisEndUp" /><feedburner:info uri="thisendup" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>ThisEndUp</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site.</feedburner:browserFriendly><item><title>Can Your ChMS Do This?</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/Vc2ObfRIl78/Can-Your-ChMS-Do-This_3F00_.aspx</link><pubDate>Tue, 24 Apr 2012 17:13:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5240</guid><dc:creator>nairdo</dc:creator><slash:comments>0</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5240.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5240</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;WARNING: This is probably going to be my yearly rant blog posting for 2012.&amp;nbsp; Feel free to just walk away.&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Ok, I&amp;#39;m pretty mad right now.&amp;nbsp; I don&amp;#39;t want to write this blog post, but I just can&amp;#39;t believe what&amp;#39;s going on and what I&amp;#39;m being told to do.&amp;nbsp; This should not be happening and I want to do all that I can to make sure this sort of thing does not happen again. I&amp;#39;m reminded of the &lt;a href="http://airdo.org/blog/index.php?entry=entry050812-010916"&gt;Holy Discontent talk at 2005 Leadership Summit that started me on the path I&amp;#39;m now&lt;/a&gt; on.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Let&amp;#39;s back up a few months.&amp;nbsp; We were told we had to upgrade from our mostly stable Arena 2010.1.x to 2011.1.500 because the background check service provider that we use with Arena was changing on 3/1. Up against the wall, we reluctantly upgraded.&amp;nbsp; A month later (3/29) I got an email from Arena saying a known bug (in their new code; the code that was supposed to be the fix for the &amp;quot;problem&amp;quot;) would be fixed in an upcoming 2011.2.400.&amp;nbsp; Herein starts the real topic of this post.&amp;nbsp; Why was I being told a bug fix would be put into a new release of the product and not a .600 patch fix?&amp;nbsp; &lt;a href="http://semver.org/"&gt;Semver&lt;/a&gt; (Semantic Versioning) is all but the standard way of doing things now, and even if you don&amp;#39;t version using the X.Y.Z form, every software vendor knows you issue patches to fix bugs.&amp;nbsp; You don&amp;#39;t ask your customers to upgrade to a newer version (which in almost certainty) has it&amp;#39;s own set of bugs and changes to deal with. Me and others complained, and today I was told the vendor is now going to create a .600 patch -- it should be &lt;strong&gt;ready in another month or so&lt;/strong&gt; (around the end of May?).&lt;/p&gt;&lt;p&gt;What?&amp;nbsp; Two+ months to issue a patch?  Are you kidding me?&amp;nbsp; What is this &lt;a href="http://codersforchrist.com/cs/blogs/nick/archive/2011/06/15/Patchy-Philosophy-and-the-Bug-Free-Software.aspx"&gt;patchy philosophy&lt;/a&gt;?&lt;/p&gt;&lt;p&gt;A patch from a paid vendor need not take this long to issue.&amp;nbsp; I understand QA testing for a &lt;em&gt;full &lt;/em&gt;release takes time, but a full QA/test cycle is not needed for a patch because you should be changing only one piece of code and testing that one piece of code.&lt;/p&gt;&lt;p&gt;In the meantime, several times a week (we&amp;#39;ve had 10 failures out of approximately 30 requests in the past month) I was asked by the vendor to have our ministry assistant using the following steps to work around the problem:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="center" class="MsoNormal" style="text-align: center"&gt;&lt;strong&gt;Steps for identifying and retrieving outstanding background checks
containing Alerts&lt;/strong&gt;&lt;/p&gt;



&lt;p class="MsoListParagraph" style="margin-left: 45pt; text-indent: -0.25in"&gt;&lt;span style="color: black"&gt;&lt;span&gt;1)&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Run the agent configuration utility on the Arena
webserver and click on the background check agent. Go to the notifications tab
and identify the email address that alerts are set to go to.&lt;/p&gt;&lt;p class="MsoListParagraph"&gt;&lt;span&gt;&lt;img height="191" src="file:///C:/Users/NickA/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg" width="371" /&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoListParagraph" style="margin-left: 45pt; text-indent: -0.25in"&gt;&lt;span style="color: black"&gt;&lt;span&gt;2)&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Access the noted account and look for
an alert email containing the information shown below.&lt;br /&gt;&amp;lt;IMAGE REMOVED&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="margin-left: 45pt"&gt;&lt;span&gt;&lt;img height="56" src="file:///C:/Users/NickA/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg" width="608" /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph" style="margin-left: 45pt; text-indent: -0.25in"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="color: black; text-decoration: none"&gt;&lt;span&gt;3)&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;If
such an email is found, they will need to contact Melissa ****** at ABC @ 800-***-****
ext. *** or &lt;a href="mailto:***@protectmyministry.com"&gt;***@serviceprovidervendor.com&lt;/a&gt;.
Request that she email them the Name and URL of all individuals with an Alert on
their record. They should receive a url for each person that looks something
like: &lt;a href="https://blahblahblah/foo/bar?ReportID=**********"&gt;https://blahblahblah/foo/bar?ReportID=**********&lt;/a&gt;&lt;span class="MsoHyperlink"&gt;. &lt;/span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="color: windowtext; text-decoration: none"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoListParagraph" style="margin-left: 45pt; text-indent: -0.25in"&gt;&lt;span style="color: black"&gt;&amp;nbsp;&lt;span&gt;4)&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Once they receive the info from ABC,
they would then do the following (access to Arena and SQL required):&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoListParagraph" style="margin-left: 63pt; text-indent: -0.25in"&gt;&lt;span style="color: black"&gt;&lt;span&gt;1.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;In Arena, go to the affected background
check and click on it. In the url it will provide you with the check id, take
note as that&amp;rsquo;s the id in the arena database. Repeat for each check in the list
that ABC provided. &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoListParagraph" style="margin-left: 63pt; text-indent: -0.25in"&gt;&lt;span style="color: black"&gt;&lt;span&gt;2.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Go to SQL and run:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoListParagraph" style="margin-left: 1.25in"&gt;&lt;span style="color: blue"&gt;select&lt;/span&gt;&lt;span&gt;
background_check_id&lt;span style="color: gray"&gt;,&lt;/span&gt;&lt;span style="color: blue"&gt;status&lt;/span&gt;&lt;span style="color: gray"&gt;,&lt;/span&gt;result&lt;span style="color: gray"&gt;,&lt;/span&gt;results_link &lt;span style="color: blue"&gt;from&lt;/span&gt; you_have_got_to_be_kidding_me &lt;span style="color: blue"&gt;where&lt;/span&gt; background_check_id &lt;span style="color: gray"&gt;=&lt;/span&gt;
x &lt;em&gt;(where x is the id number of the
check).&lt;/em&gt; Only the id and status should have a value, result and result link
should be blank.&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoListParagraph" style="margin-left: 63pt; text-indent: -0.25in"&gt;&lt;span style="color: black"&gt;&lt;span&gt;3.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Run:&lt;span style="color: red"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoListParagraph" style="margin-left: 1.25in"&gt;&lt;span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;update&lt;/span&gt;
foo_bar_blah_check &lt;span style="color: blue"&gt;set&lt;/span&gt; &lt;span style="color: blue"&gt;status&lt;/span&gt;
&lt;span style="color: gray"&gt;=&lt;/span&gt; 4&lt;span style="color: gray"&gt;,&lt;/span&gt; result &lt;span style="color: gray"&gt;=&lt;/span&gt; &lt;span style="color: red"&gt;&amp;#39;Complete - Record&amp;#39;&lt;/span&gt;&lt;span style="color: gray"&gt;,&lt;/span&gt;results_link &lt;span style="color: gray"&gt;=&lt;/span&gt; &lt;span style="color: red"&gt;&amp;#39;URL that ABC provided&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoListParagraph" style="margin-left: 1.25in"&gt;&lt;span style="color: blue"&gt;where&lt;/span&gt;&lt;span&gt;
background_check_id &lt;span style="color: gray"&gt;= x&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoListParagraph" style="margin-left: 45pt; text-indent: -0.25in"&gt;&lt;span style="color: black"&gt;&lt;span&gt;5)&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;After they have completed step 4, they
can either manually stop and restart their agents to pull the background checks
now, or they can wait for the agent to cycle and pull down the background
checks.&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoListParagraph" style="margin-left: 45pt; text-indent: -0.25in"&gt;&lt;span style="color: black"&gt;&lt;span&gt;6)&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;To determine if the background check record
has been successfully retrieved, run: &lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoListParagraph" style="margin-left: 1in"&gt;&lt;span style="color: blue"&gt;select&lt;/span&gt;&lt;span&gt; background_check_id&lt;span style="color: gray"&gt;,&lt;/span&gt;&lt;span style="color: blue"&gt;status&lt;/span&gt;&lt;span style="color: gray"&gt;,&lt;/span&gt;result&lt;span style="color: gray"&gt;,&lt;/span&gt;results_link&lt;span style="color: gray"&gt;,&lt;/span&gt; results_blob_id &lt;span style="color: blue"&gt;from&lt;/span&gt;
more_fun_with_sql_tables &lt;span style="color: blue"&gt;where&lt;/span&gt; background_check_id &lt;span style="color: gray"&gt;=&lt;/span&gt; x &lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoListParagraph" style="margin-left: 45pt"&gt;&lt;span&gt;The check has been successfully retrieved if there is a value in
the results_blob_id field, note the value and proceed to step 7.&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoListParagraph" style="margin-left: 45pt; text-indent: -0.25in"&gt;&lt;span style="color: black"&gt;&lt;span&gt;7)&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;To
confirm the existence of the background check document, run:&lt;span style="color: red"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoListParagraph" style="margin-left: 1in"&gt;&lt;span style="color: blue"&gt;select&lt;/span&gt;&lt;span&gt; created_by&lt;span style="color: gray"&gt;,&lt;/span&gt;modified_by&lt;span style="color: gray"&gt;,&lt;/span&gt;file_ext&lt;span style="color: gray"&gt;,&lt;/span&gt;mime_type&lt;span style="color: gray"&gt;,&lt;/span&gt;original_file_name &lt;span style="color: blue"&gt;from&lt;/span&gt;
big_blobby_table &lt;span style="color: blue"&gt;where&lt;/span&gt; blob_id &lt;span style="color: gray"&gt;=&lt;/span&gt; x &amp;nbsp;&lt;em&gt;(x
being the value noted in step 6)&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoListParagraph" style="margin-left: 45pt"&gt;&lt;span&gt;And to complete the process, updating
the document so that it can be viewed, run:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoListParagraph" style="margin-left: 1in"&gt;&lt;span style="color: blue"&gt;Update&lt;/span&gt;&lt;span&gt; that_big_blobby_table_again&amp;nbsp; &lt;span style="color: blue"&gt;Set&lt;/span&gt; file_ext &lt;span style="color: gray"&gt;=&lt;/span&gt; &lt;span style="color: red"&gt;&amp;#39;pdf&amp;#39;&lt;/span&gt;&lt;span style="color: gray"&gt;, &lt;/span&gt;Original_file_name
&lt;span style="color: gray"&gt;=&lt;/span&gt; &lt;span style="color: red"&gt;&amp;#39;BackgroundCheckReport.pdf&amp;#39;
&lt;/span&gt;&lt;span style="color: blue"&gt;Where&lt;/span&gt; file_ext &lt;span style="color: gray"&gt;like&lt;/span&gt;
&lt;span style="color: red"&gt;&amp;#39;cfm?reportid=%&amp;#39;. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;em&gt;* I&amp;#39;ve changed certain tables/URLs/names for obvious security reasons and to protect the mostly innocent.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;If I had the source code, I would probably just fix this myself instead of writing this stupid blog post. I realize I&amp;#39;m setting the &lt;a href="http://www.RockChMS.com"&gt;Rock ChMS&lt;/a&gt; &lt;a href="http://www.sparkdevelopmentnetwork.com/"&gt;initiative&lt;/a&gt; which I&amp;#39;ve joined to meet these same expectations -- even though it&amp;#39;s is a free and open source product.&amp;nbsp; I just don&amp;#39;t think it&amp;#39;s reasonable to have to run broken in a broken state for two months while a patch is being assembled.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5240" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/Arena+ChMS/default.aspx">Arena ChMS</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/project/default.aspx">project</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/angry+coder/default.aspx">angry coder</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2012/04/24/Can-Your-ChMS-Do-This_3F00_.aspx</feedburner:origLink></item><item><title>CrowdSync - All Your Phones Are Belong To Us</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/PnII_PSBwh8/Control-Mobile-Phones-During-Worship-Experience.aspx</link><pubDate>Sat, 24 Dec 2011 16:22:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5198</guid><dc:creator>nairdo</dc:creator><slash:comments>0</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5198.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5198</wfw:commentRss><description>&lt;h3&gt;An Idea&lt;/h3&gt;

&lt;p&gt;A few months ago Kim
Vehon, from our Worship team came, into our office to share &lt;a href="http://vimeo.com/m/8118831"&gt;a video showing a
bunch of phones hanging from wires flashing on and off&lt;/a&gt;.&lt;span&gt; It&amp;#39;s pretty cool. &lt;/span&gt;She wondered if we could do something like
that during our Christmas services at &lt;a href="http://codersforchrist.com/cs/controlpanel/blogs/www.centralaz.com" title="Central Christian Church AZ"&gt;Central&lt;/a&gt;. Building a &amp;quot;fat-app&amp;quot; to control a
bunch of phones wired together did not seem like a challenge nor interesting
enough to be worth pursuing.&lt;/p&gt;

&lt;h3&gt;A Better Idea&lt;/h3&gt;

&lt;p&gt;But then we started thinking. What if we tried to
control the congregation&amp;#39;s phones and what if we used only their existing 3G
network connection?&lt;span&gt;&amp;nbsp; &lt;/span&gt;And, since hardly
anyone would want to install an app from the market/store, what if it only used
their phone&amp;#39;s web browser?&lt;span&gt;&amp;nbsp; &lt;/span&gt;We also thought it
should be built in such a way as to reduce the dependency on the network -- in
other words the phone should get what it needs from the server and then be able
to loose network connection without impact to the performance.&lt;span&gt; &lt;/span&gt;Game on. &lt;a href="http://twitter.com/#!/JasonOffutt/status/150070481922428929"&gt;I agree with Jason&lt;/a&gt; (&lt;a href="http://twitter.com/#!/JasonOffutt/status/150070481922428929"&gt;tweet&lt;/a&gt;),
this might be one of the funnest things I&amp;#39;ve worked on in a long time. &lt;a href="http://codersforchrist.com/cs/controlpanel/blogs/jsondata.tumblr.com" title="Jason Offutt"&gt;Jason&lt;/a&gt; and I call our software CrowdSync...&lt;/p&gt;&lt;p&gt;&lt;img alt="Pre-event countdown on CrowdSync" height="235" src="http://codersforchrist.com/images/20121224_CrowdSyncFourIPhones.png" title="Pre-event countdown on CrowdSync" width="500" /&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Ultimately we also needed to
generate a lights time coded &amp;quot;track&amp;quot; from a Christmas song (midi
file) with each note being assigned to 1-4 colors.&lt;span&gt;&amp;nbsp; &lt;/span&gt;A person&amp;#39;s phone would receive the track, be
randomly assigned one of the four colors, and start playing the track in sync
with the band.&amp;nbsp; Sounded simple
enough. Thankfully I found &lt;a href="http://www.codeproject.com/KB/audio-video/MIDIToolkit.aspx"&gt;the C# MIDI
Toolkit code from Leslie Sanford&lt;/a&gt; that reads midi files (thank you Leslie!)
which I was able to modify in order to extract and generate our time coded
light track as JSON data which looks roughly like this:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; text-align: left; padding: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',Courier,Monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text"&gt;
&lt;pre id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',Courier,Monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible"&gt;{ &lt;br /&gt;    startTime: 123578916,&lt;br /&gt;    endTime: 12345667,&lt;br /&gt;    ticks: [&lt;br /&gt;                { notes: [&amp;quot;a&amp;quot;], &lt;span style="color: #0000ff"&gt;time&lt;/span&gt;: 27, duration: 900 },&lt;br /&gt;                { notes: [&amp;quot;b&amp;quot;], &lt;span style="color: #0000ff"&gt;time&lt;/span&gt;: 982, duration: 900 },&lt;br /&gt;                { notes: [&amp;quot;c&amp;quot;], &lt;span style="color: #0000ff"&gt;time&lt;/span&gt;: 1940, duration: 900 },&lt;br /&gt;                { notes: [&amp;quot;d&amp;quot;], &lt;span style="color: #0000ff"&gt;time&lt;/span&gt;: 2908, duration: 900 },&lt;br /&gt;                ...&lt;br /&gt;           ]&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;h3&gt;The Time Problem&lt;/h3&gt;

&lt;p&gt;Pretty quickly
we eliminated web sockets and other client-server signaling technology for a
variety of reasons including lack of consistent device support, chattiness,
lag, and timing control.&lt;span&gt;&amp;nbsp; &lt;/span&gt;We wanted to
constrain ourselves in order to force us to think differently about certain
problems -- such as the &amp;quot;&lt;span style="font-style: italic"&gt;how do we get all
of these devices/clients to start at exactly the same time?&lt;/span&gt;&amp;quot;
problem. &lt;/p&gt;

&lt;p&gt;Initially we were
thinking we could rely on the time from the phone&amp;#39;s operating system.&lt;span&gt;&amp;nbsp; &lt;/span&gt;You might think two 3G Verizon phones would
have the same time, right?&lt;span&gt;&amp;nbsp; &lt;/span&gt;Wrong. Very
wrong. We saw phones that were off anywhere from several seconds to a few
minutes. (&lt;span style="font-style: italic"&gt;Who knows how or where each phone is
getting its time from? It doesn&amp;#39;t appear they&amp;#39;re using a common Network Time
Protocol (NTP) server.&lt;/span&gt;)&lt;/p&gt;


&lt;p&gt;After some medium
scale client tests and experimentation, we came up with the following
approach:&lt;span&gt;&amp;nbsp; &lt;/span&gt;Each client asks our server
for the current time, calculates the delta (from it&amp;#39;s local time), and repeats
this about 20 times over the&lt;span&gt; &lt;/span&gt;course of
about 20 seconds.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The error introduced
because of network latency is reduced to a minimum because we use only the
&amp;#39;smallest&amp;#39; delta from our samples. &lt;/p&gt;


&lt;p&gt;&lt;img alt="CrowdSync Time Sync Diagram" height="288" src="http://codersforchrist.com/images/20111224_CrowdSyncDiagram.png" title="CrowdSync Time Sync Diagram" width="433" /&gt;&lt;br /&gt;
&lt;/p&gt;


&lt;p&gt;Once we&amp;#39;ve got the
correct delta we calculate and shift the entire track&amp;#39;s note times to represent
the exact localized time each particular note should play (light up) on that
device.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Then we basically wait until the
note&amp;#39;s time occurs and set some CSS to play that particular note&amp;#39;s light.&lt;/p&gt;

&lt;h3&gt;Other Stuff&lt;/h3&gt;

&lt;p&gt;Since not all
browsers can handle HTML5, we had to keep things simple and used basic HTML,
CSS and JavaScript (&lt;a href="http://coffeescript.org/"&gt;CoffeeScript&lt;/a&gt;).&lt;span&gt;&amp;nbsp; &lt;/span&gt;Other problems worth mentioning are: cell
phone auto dimming, screen locking, and mysterious time lost as a result of
certain mobile phone browser interruptions - such as screen lock and wake up.&lt;span&gt;&amp;nbsp; &lt;/span&gt;(On my Android phone, a screen lock and
re-open would cause a simple JavaScript clock to become out of sync with
correct time.&lt;span&gt;&amp;nbsp; &lt;/span&gt;It smells like a timing
bug with the OS - but what do I know.)&lt;/p&gt;

&lt;p&gt;Forward to November
when it was decided that our system should also power the worship center&amp;#39;s IMAG
side screens with something cool, show an event count down timer, and the drive
the band&amp;#39;s click track.&lt;span&gt;&amp;nbsp; &lt;/span&gt;That ended up
being a real blessing because we got to work on some really fun stuff.&lt;span&gt;&amp;nbsp; &lt;/span&gt;After more experimentation for the
&amp;quot;something cool&amp;quot; part, and more ramping-it-up &amp;trade; with statements like
&amp;quot;what if we could ...&amp;quot;, we ended up programmatically building a
Christmas Tree as colored circles on the HTML5 canvas to match our church&amp;#39;s
Luminous graphic.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Central Christian Church&amp;#39;s Christmas Luminous Graphic" height="298" src="http://codersforchrist.com/images/20111224_Luminous.png" title="Central Christian Church&amp;#39;s Christmas Luminous Graphic" width="365" /&gt;&lt;/p&gt;



&lt;p&gt;We &lt;span style="font-style: italic"&gt;somewhat&lt;/span&gt; randomly plot circles in the shape of
a Christmas tree using a little Math.sin() trick to get the curve we
wanted.&lt;span&gt;&amp;nbsp; &lt;/span&gt;(Remember that stuff you learned
in high school -- it really does come in handy!)&lt;span&gt;&amp;nbsp; &lt;/span&gt;The same JSON encoded light track data would
be used to control the four sets of lights on the tree.&lt;span&gt;&amp;nbsp; &lt;/span&gt;We kept the same code base and ended up with
some configuration settings to control whether the simple HTML/CSS (cell
phones) or HTML5 canvas w/tree was being used (side screens).&lt;/p&gt;


&lt;p&gt;Ultimately, the midi
file click track turned into a full blown amazing score and arrangement of
Carol of the Bells by &lt;a href="http://twitter.com/#!/adriandarsee"&gt;Adrian
Darsee&lt;/a&gt; in mp3 format.&lt;span&gt;&amp;nbsp; &lt;/span&gt;There was more
fun getting the audio track to play which perhaps &lt;a href="http://jsondata.tumblr.com/"&gt;Jason will cover in his blog&lt;/a&gt;.&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;We also created a small admin panel as an Arena module so that the A/V tech guys at each campus could store the event start time for that service once they knew exactly when they wanted it to start.&lt;/p&gt;
&lt;p&gt;&lt;img alt="CrowdSync Admin Panel" height="224" src="http://codersforchrist.com/images/20111224_CrowdSyncAdminPage.png" title="CrowdSync Admin Panel" width="500" /&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Time Shifting Gotchas&lt;/h3&gt;

&lt;p&gt;Late in the game we
discovered something unfortunate when we put it all together with all
the other equipment (&lt;a href="http://figure53.com/qlab/"&gt;QLab&lt;/a&gt;, the worship
center&amp;#39;s A/V systems and side screens, a full 30 minute pre-service countdown,
etc.).&lt;span&gt;&amp;nbsp; &lt;/span&gt;Not all seconds are created
equal. I should have realized this, but somehow it failed to register.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Due to NTP being used on the various systems,
the QLab mac, the mac running Chrome for the IMAG, and our server would slowly
drift by a 1 to .5 seconds during the 40 minute countdown.&lt;span&gt;&amp;nbsp; &lt;/span&gt;That&amp;#39;s a big problem if you&amp;#39;re trying to
achieve millisecond synchronization.&lt;span&gt;&amp;nbsp; &lt;/span&gt;We
turned off NTP as a work-around but realize it&amp;#39;s something we want to address
in future versions of CrowdSync.&amp;nbsp; We&amp;#39;re also going to implement all the server side stuff in &lt;a href="http://nodejs.org/" title="Node is a server side JavaScript application framework"&gt;Node.js&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;The goal was for
each person to &amp;quot;be the light&amp;quot; and &amp;quot;let your light shine&amp;quot; as a literal
and symbolic expression during the worship to our King. Overall it was a
success for the whole opening worship experience but when the congregation
erupted into loud applause&lt;span&gt; at the end &lt;/span&gt;I knew they
enjoyed the experience too.&lt;span&gt;&amp;nbsp; &lt;/span&gt;I hope we
have some of it captured on video.&lt;/p&gt;&lt;p&gt;&lt;a href="http://codersforchrist.com/images/20111224_CrowdSyncLive.jpg" title="click to enlarge"&gt;&lt;img alt="click for large image" height="337" src="http://codersforchrist.com/images/20111224_CrowdSyncLive_sm.png" title="click for large image" width="500" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;We&amp;#39;ll post the latest alpha &lt;a href="https://github.com/CentralAZ/CrowdSync" title="CrowdSync source code"&gt;CrowdSync source up on Github&lt;/a&gt; shortly. &lt;br /&gt;&lt;/p&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5198" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/code/default.aspx">code</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/ajax/default.aspx">ajax</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/JavaScript/default.aspx">JavaScript</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2011/12/24/Control-Mobile-Phones-During-Worship-Experience.aspx</feedburner:origLink></item><item><title>5th Generation Arena ChMS Website</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/ErnXtb_LhhA/5th-Generation-Arena-ChMS-Website.aspx</link><pubDate>Fri, 18 Nov 2011 15:57:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5156</guid><dc:creator>nairdo</dc:creator><slash:comments>1</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5156.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5156</wfw:commentRss><description>&lt;p&gt;Today marks the launch of &lt;a href="http://codersforchrist.com/cs/controlpanel/blogs/www.centralaz.com" title="CentralAZ -- aka CCCEV"&gt;our 5th Arena ChMS powered website&lt;/a&gt;.&amp;nbsp; This time around it was more of a cosmetic face-lift, and as far as the switch-over was concerned, we used all the tricks we learned last time to make the change very smooth (more on that below).&amp;nbsp; The bulk of the switch took 8 seconds (scripted), about 1 hour of minor 
manual tweaks by &lt;a href="http://jsondata.tumblr.com/"&gt;Jason Offutt&lt;/a&gt; and I, followed by roughly 4 hours of 
additional fine tuning by Jason Ake.&lt;/p&gt;&lt;p&gt;&lt;img alt="5th Generation CentralAZ.com website - aka &amp;quot;007&amp;quot;" height="503" src="http://codersforchrist.com/images/20111118CentralAZ_2.png" title="5th Generation CentralAZ.com website - aka &amp;quot;007&amp;quot;" width="475" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;A few lessons were learned during the 4th generation site (aka Hasselhoff) which were largely based on feedback we received from the congregation and staff.&amp;nbsp; Gone is the campus selection integration that was initially prevalent after the initial launch in the summer 2010.&amp;nbsp; Now the only place a person needs to think about which campus they care about is when they&amp;#39;re exploring the &lt;a href="http://www.centralaz.com/Arena/default.aspx?page=4131"&gt;calendar&lt;/a&gt;, giving online (since one of our campuses has a different giving system - ugh), and when they simply want information about our different campuses.&amp;nbsp; It mostly turns out that people don&amp;#39;t like campus separation/segregation.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Although the new site is based on the &amp;quot;Elegance&amp;quot; theme, props go to Jason Ake (our new web designer) and our graphic artists, &lt;a href="http://wagnerdesign.virb.com/"&gt;Jeremy Wagner&lt;/a&gt; and &lt;a href="http://www.mitcheiler.com/design/recent-work/"&gt;Mitch Eiler&lt;/a&gt;, for their many cool elements and tweaks.&amp;nbsp; Most of the cool code changes including the newly tweaked &lt;a href="http://www.centralaz.com/Arena/default.aspx?page=4131"&gt;event calendar&lt;/a&gt;, our Facebook login integration, and Vimeo &lt;a href="http://www.centralaz.com/Arena/default.aspx?page=4132"&gt;video wall&lt;/a&gt; come from &lt;a href="http://jsondata.tumblr.com/"&gt;Jason Offutt&lt;/a&gt;, who&amp;#39;s continually pushing me to learn the latest techniques and libraries.&amp;nbsp; To that end, this time around we used a little &lt;a href="http://mustache.github.com/"&gt;Mustache.js&lt;/a&gt;, &lt;a href="http://documentcloud.github.com/backbone/"&gt;Backbone.js&lt;/a&gt;, and as we discussed at &lt;a href="http://www.refreshcache.com/Arena/Default.aspx?page=3285"&gt;RefreshCache 2011&lt;/a&gt;, we wrote some of our JavaScript in &lt;a href="http://jashkenas.github.com/coffee-script/"&gt;CoffeeScript&lt;/a&gt;.&amp;nbsp; Our promotion slider (&lt;a href="http://www.centralaz.com/Arena/default.aspx?page=4139"&gt;seen here&lt;/a&gt;) is still based on our &lt;a href="http://redmine.refreshcache.com/projects/cccev-web-collection/wiki/Promotions_via_XSLT"&gt;Promotions via XSLT&lt;/a&gt; module but this time around our XSLT spits-out &lt;a href="http://www.awkwardgroup.com/sandbox/awkward-showcase-a-jquery-plugin/"&gt;Awkward-Showcase&lt;/a&gt; jQuery library goodness to handle the transitions and &lt;em&gt;widgety-thumbnaily&lt;/em&gt; UI.&amp;nbsp; The recent blog entries that are pulled into the the home page is using a slightly customized (I added caching) version of Arena&amp;#39;s standard XML File Transformation module (which I just posted to &lt;a href="http://redmine.refreshcache.com/projects/cccev-web-collection/repository/show/trunk/Arena/UserControls/Custom/Cccev/Core" title="The CCCEV Website Collection on Redmine.RefreshCache.com"&gt;the shared repo here&lt;/a&gt;).&amp;nbsp; Lastly, we also used the &lt;a href="http://www.centralaz.com/Arena/default.aspx?page=5363"&gt;Promotion via XSLT module on a standalone page&lt;/a&gt; to &amp;quot;feed&amp;quot; our Arena based promotions into our &lt;a href="https://www.facebook.com/CentralAZ#!/CentralAZ?sk=app_190322544333196"&gt;&amp;quot;Welcome&amp;quot; Facebook page&lt;/a&gt; as seen here:&lt;/p&gt;&lt;p&gt;&lt;img alt="CentralAZ Welcome Page on Facebook" height="432" src="http://codersforchrist.com/images/20111118_FB_integration.png" title="CentralAZ Welcome Page on Facebook" width="475" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Overall these changes took our code team between 2-4 weeks of execution time while all the rest of the project work took Jason Ake between 2-3 months of planning and execution. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Now, about the planning, staging and cut-over...&lt;/p&gt;&lt;p&gt;First of all we decided to ease our pain by creating four new Arena templates which would roughly match our previous four (home page, child page, single column page, and wide page). In addition to that, whenever possible, we used identical &amp;quot;area&amp;quot; (placeholder) names inside the templates.&amp;nbsp; &lt;strong&gt;These two steps alone&lt;/strong&gt; simplify the cut-over tremendously since our cutover SQL script now &lt;em&gt;basically &lt;/em&gt;only has to change (for example) pages that use template 65 and update them to use template 77, etc.&amp;nbsp; I highly recommend you use this same technique when upgrading/updating your website from generation to generation.&lt;/p&gt;&lt;p&gt;Once the templates were created/beta we also immediately added them to our production Arena install so that we could get their final templateID (for use later when writing the cut-over script).&amp;nbsp; At that point in the process it&amp;#39;s also a good idea to add any new pages that you&amp;#39;re going to want in the new website and just set the &amp;quot;Display in Nav&amp;quot; to false.&amp;nbsp; On the day of the cut-over your script can surgically flip that bit to make it show up.&amp;nbsp; At about t-minus 2 weeks we copied our production Arena database and Arena website folders into a new test instance for testing the cut-over scripts. We added an alias to our internal DNS and set up IIS to serve the test site up as http://testweb/ for general staff &lt;a href="http://codersforchrist.com/cs/blogs/nick/archive/2008/06/05/User-Acceptance-Testing-_2800_UAT_2900_.aspx"&gt;User Acceptance Testing&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Now that this website is behind us, next up will be creating a personal, personalized space on the site and the modules needed for people to access all of &amp;quot;their&amp;quot; stuff (profile, prayer requests, small groups, contribution statements, event registrations, customized news/promotions, etc.).&lt;br /&gt;&lt;/p&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5156" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/news/default.aspx">news</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/Arena+ChMS/default.aspx">Arena ChMS</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/project/default.aspx">project</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2011/11/18/5th-Generation-Arena-ChMS-Website.aspx</feedburner:origLink></item><item><title>Rock ChMS, An Open Source Church Management System and CMS Framework</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/m7YXCu3isEc/Rock-ChMS_2C00_-An-Open-Source-Church-Management-System-and-CMS-Framework.aspx</link><pubDate>Mon, 10 Oct 2011 20:11:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5141</guid><dc:creator>nairdo</dc:creator><slash:comments>1</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5141.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5141</wfw:commentRss><description>&lt;p&gt;&lt;img align="right" alt="Rock ChMS - an Open Source Church Management System" border="0" height="80" hspace="5" src="http://codersforchrist.com/images/RockChMS.png" title="Rock ChMS - an Open Source Church Management System" vspace="5" width="219" /&gt;I&amp;#39;ve joined forces with an initially &lt;a href="http://www.sparkdevelopmentnetwork.com/#who"&gt;small team of developers and artists&lt;/a&gt; to form the &lt;a href="http://codersforchrist.com/cs/controlpanel/blogs/www.sparkdevelopmentnetwork.org"&gt;Spark Development Network&lt;/a&gt; (&lt;a href="http://codersforchrist.com/cs/controlpanel/blogs/www.sparkdevelopmentnetwork.org"&gt;www.sparkdevelopmentnetwork.org&lt;/a&gt;) and we are creating a new, open source Church Management System (&lt;a href="http://twitter.com/search?q=%23ChMS" title="#ChMS on twitter"&gt;ChMS&lt;/a&gt;) called Rock ChMS. You can read the &lt;a href="http://www.sparkdevelopmentnetwork.com/files/SparkAnnouncement.pdf"&gt;press release&lt;/a&gt; if you wish.&lt;/p&gt;&lt;p&gt;This may come as no surprise to some of you after hearing me last year at &lt;a href="http://codersforchrist.com/cs/controlpanel/blogs/www.refreshcache.com"&gt;RefreshCache&lt;/a&gt; (&lt;a href="http://codersforchrist.com/cs/controlpanel/blogs/www.refreshcache.com"&gt;www.refreshcache.com&lt;/a&gt;) and previous rants on why open source is the best option.&amp;nbsp; Last week I reviewed my &amp;quot;State of the Union&amp;quot; presentation from last October.&amp;nbsp; Reading that now, you might think that Rock ChMS was already underway; however our group had not even had a single discussion about anything remotely related.&amp;nbsp; Over the years several groups tried to apply pressure to our vendors to release open source versions of their product and I think we waited as long as we could, but in the spirit of RefreshCache, decided to just make it happen on our own.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Although everyone at Spark Development Network will have slightly different reasons, basically we wanted to &lt;strong&gt;collaborate &lt;/strong&gt;on a framework that was &lt;strong&gt;free &lt;/strong&gt;for the Christian Church and para-church community, that&amp;#39;s &lt;strong&gt;beautiful&lt;/strong&gt;, &lt;strong&gt;easy &lt;/strong&gt;and &lt;strong&gt;simple &lt;/strong&gt;to use, easy to administrate, &lt;strong&gt;open source&lt;/strong&gt; and &lt;strong&gt;easy to develop&lt;/strong&gt; against for the church developer &lt;strong&gt;community&lt;/strong&gt;.&amp;nbsp; For those who want to eventually run their church on Rock ChMS, should they ever encounter a mission critical bug, their developer can jump in and&lt;strong&gt; fix it&lt;/strong&gt; without having to wait for an official patch.&lt;/p&gt;&lt;p&gt;Rock ChMS is only a pre-alpha seed at the moment, but the source is now open and publicly available on Github: &lt;a href="https://github.com/SparkDevNetwork/Rock-ChMS"&gt;https://github.com/SparkDevNetwork/Rock-ChMS&lt;/a&gt;. This was done so that others could collaborate and get involved from the earliest days of the project.&amp;nbsp; Rock ChMS is going to be a full featured &lt;a href="http://www.sparkdevelopmentnetwork.com/#work"&gt;Church Management System&lt;/a&gt; built on top of a custom CMS application framework, so you may find it&amp;#39;s similar to other CMS frameworks you&amp;#39;ve used in the past. It&amp;#39;s an ASP.NET 4.0 Entity Framework application written in C#, so if you&amp;rsquo;re serious about wanting to help The Church, then git on over to GitHub and &lt;a href="http://help.github.com/fork-a-repo/ "&gt;fork the repo&lt;/a&gt;. When you&amp;#39;re ready, submit a pull request and we&amp;#39;ll take a look at your work. If you&amp;#39;re interested in knowing more or want to get involved in other ways, &lt;a href="http://www.sparkdevelopmentnetwork.com/#contact"&gt;sign up on our Stay in Touch&lt;/a&gt; page.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5141" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/news/default.aspx">news</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/.NET+4.0/default.aspx">.NET 4.0</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/ChMS/default.aspx">ChMS</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/Rock+ChMS/default.aspx">Rock ChMS</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2011/10/10/Rock-ChMS_2C00_-An-Open-Source-Church-Management-System-and-CMS-Framework.aspx</feedburner:origLink></item><item><title>Grouping Arena Module Settings</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/DieTamO0sJs/Grouping-Arena-Module-Settings.aspx</link><pubDate>Tue, 27 Sep 2011 23:26:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5135</guid><dc:creator>nairdo</dc:creator><slash:comments>0</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5135.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5135</wfw:commentRss><description>&lt;p&gt;Something I&amp;#39;ve been meaning to have added to the Arena Custom Module Developer (ACMD) guide is this little known feature that was introduced at some point in the past few years.&amp;nbsp; It&amp;#39;s a way to group your custom module&amp;#39;s settings as seen here:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://codersforchrist.com/images/20110927_ModuleSettings_lg.png" title="click to enlarge"&gt;&lt;img alt="Grouping Arena Module Settings" border="0" height="267" src="http://codersforchrist.com/images/20110927_ModuleSettings.png" title="Grouping Arena Module Settings" width="400" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The effect is subtle, but when you have 20 or so settings like we have in &lt;a href="http://redmine.refreshcache.com/projects/cccevcheckin/wiki" title="the CCCEV / HDC custom Arena check-in module"&gt;our check-in module&lt;/a&gt; it starts to become really necessary (of course we haven&amp;#39;t yet added groupings, but we will in the next release).&lt;/p&gt;&lt;p&gt;To create these groupings (aka categories) all you need to do is include the System.ComponentModel in your using section:&lt;/p&gt;&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; text-align: left; padding: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',Courier,Monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text"&gt;&lt;pre id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',Courier,Monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.ComponentModel;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;... and then define a Category attribute with a grouping name argument for each module setting as seen in this example:&lt;br /&gt;&lt;/p&gt;&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; text-align: left; padding: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',Courier,Monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text"&gt;&lt;pre id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',Courier,Monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible"&gt;&lt;span style="color: #008000"&gt;// Styling Group&lt;/span&gt;&lt;br /&gt;[TextSetting( &lt;span style="color: #006080"&gt;&amp;quot;Search Button Image Path&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;Relative path ...&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt; ), Category( &lt;span style="color: #006080"&gt;&amp;quot;Styling&amp;quot;&lt;/span&gt; )]&lt;br /&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; SearchImagePathSetting { get { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Setting( &lt;span style="color: #006080"&gt;&amp;quot;SearchImagePath&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt; ); } }&lt;br /&gt;&lt;br /&gt;[TextSetting( &lt;span style="color: #006080"&gt;&amp;quot;Search Button CSS Class&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;CSS classname...&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt; ), Category( &lt;span style="color: #006080"&gt;&amp;quot;Styling&amp;quot;&lt;/span&gt; )]&lt;br /&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; SearchButtonCSSClassSetting { get { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Setting( &lt;span style="color: #006080"&gt;&amp;quot;SearchButtonCSSClass&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt; ); } }&lt;br /&gt;&lt;br /&gt;[TextSetting( &lt;span style="color: #006080"&gt;&amp;quot;TextBox CSS Class&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;CSS classname ...&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt; ), Category( &lt;span style="color: #006080"&gt;&amp;quot;Styling&amp;quot;&lt;/span&gt; )]&lt;br /&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; TextBoxCSSClassSetting { get { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Setting( &lt;span style="color: #006080"&gt;&amp;quot;TextBoxCSSClass&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt; ); } }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;// No group defined -- these go into a &amp;quot;General Settings&amp;quot; section automatically&lt;/span&gt;&lt;br /&gt;[NumericSetting( &lt;span style="color: #006080"&gt;&amp;quot;Return Results Page Size&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;The number of ...&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt; )]&lt;br /&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; ReturnResultsPageSizeSetting { get { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Setting( &lt;span style="color: #006080"&gt;&amp;quot;ReturnResultsPageSize&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;10&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt; ); } }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5135" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/code/default.aspx">code</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/Arena+ChMS/default.aspx">Arena ChMS</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2011/09/27/Grouping-Arena-Module-Settings.aspx</feedburner:origLink></item><item><title>VBS Check-in Process Improvement</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/L0zBpTKK-kA/VBS-Check_2D00_in-Process-Improvement.aspx</link><pubDate>Tue, 26 Jul 2011 00:15:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5121</guid><dc:creator>nairdo</dc:creator><slash:comments>0</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5121.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5121</wfw:commentRss><description>
&lt;p&gt;This year we had a little more than 1750+ kids use the automated check-in system for VBS across three of our campuses.&lt;/p&gt;
&lt;p&gt;Looking at this graph which shows the number of check-ins per minute, you can see check-in does not ramp up as sharply as we would want on Monday (red).&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://codersforchrist.com/images/20110725_VBS_lg.png" title="click for larger image" target="_blank"&gt;&lt;img alt="VBS check-in comparing two days" border="0" height="251" src="http://codersforchrist.com/images/20110725_VBS.png" title="VBS check-in comparing two days" width="400" /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;em style="color: #888888"&gt;(click for larger image)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;By Tuesday (blue) after some adjustments were made and parents knew 
the routine a bit better, check-in ramps up quicker to about 50-60 kids 
per minute and 28 minutes later the lines were gone and the majority of kids were checked in.&lt;/p&gt;&lt;p&gt;It&amp;#39;s OK, but not great. Ideally, you&amp;#39;d like to check in 1500+ kids per minute and have check in last one minute.&amp;nbsp; Not realistic or necessary since not all parents arrive exactly on time.&amp;nbsp; Perhaps 150 kids per minute is a goal.&amp;nbsp; Then check-in only lasts 10 minutes.&amp;nbsp; What will it take to reach that goal?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;With some analysis, we found that it takes about 15-18 seconds per parent to check in their kids.&amp;nbsp; It turns out, much of the time it takes for someone to check in using &lt;a href="http://redmine.refreshcache.com/projects/cccevcheckin/wiki" title="our Arena ChMS based check-in system"&gt;our system&lt;/a&gt; involves punching in the phone number (&lt;a href="http://youtu.be/zERUzwIrbUI"&gt;see this video&lt;/a&gt;).&amp;nbsp; That&amp;#39;s something I already knew, and it&amp;#39;s one of the reasons why I wanted to keep barcode scanners at all our campuses. (a battle I lost -- for now).&amp;nbsp; If a parent uses a barcode they shave 6-12 seconds off that time (depending on how slowly a person normally types in their phone number) and they can check in their kids in about 4-6 seconds.&lt;/p&gt;&lt;p&gt;So if we don&amp;#39;t start using barcode scanners again, I think the only thing we&amp;#39;ll be able to to is drop in more, cheap, iPad kiosks... unless we start letting people check in using their mobile phone when they arrive on campus...&lt;br /&gt;&lt;/p&gt;
&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5121" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/check-in/default.aspx">check-in</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/IT/default.aspx">IT</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2011/07/25/VBS-Check_2D00_in-Process-Improvement.aspx</feedburner:origLink></item><item><title>Eddy Currents Can Trap You</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/XvWYy6t-mlc/How-to-Make-A-Grown-Man-Cry.aspx</link><pubDate>Fri, 24 Jun 2011 13:48:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5107</guid><dc:creator>nairdo</dc:creator><slash:comments>1</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5107.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5107</wfw:commentRss><description>&lt;p&gt;&lt;img src="http://codersforchrist.com/images/20110624_PropertyPage.png" style="width: 444px" /&gt;&lt;/p&gt;&lt;p&gt;Our current &lt;a href="http://twitter.com/#!/search/%23ChMS"&gt;church management&amp;nbsp;system&lt;/a&gt; has been falling behind.&amp;nbsp; The Visual Studio precompiled website solution we get with&amp;nbsp;the SDK still targets the .NET Framework 3.5 and this morning I ran into my biggest issue to date:&lt;/p&gt;&lt;p&gt;&lt;img alt="Arena on NuGet Core" height="325" src="http://codersforchrist.com/images/20110624_ArenaOnNuGetCore.png" style="width: 328px; height: 325px" title="Arena on NuGet Core" width="328" /&gt;&lt;/p&gt;&lt;p&gt;I can&amp;#39;t use the NuGet.Core library in my new module until our current vendor either updates the solution to target the .40 framework or I figure out a way to get around this hurdle.&amp;nbsp; I don&amp;#39;t think I can safely just change the build target on the solution since it&amp;#39;s precompiled...&amp;nbsp; hmm.&lt;/p&gt;&lt;p&gt;Once I figure that out, I&amp;#39;ll move onto the other problem.&amp;nbsp; The system is still using jQuery 1.3 (circ. 2009).&amp;nbsp; Yes, jQuery 1.4 was released at the beginning of 2010, 1.5 at the beginning of 2011, and 1.6 was just released last month.&amp;nbsp; I&amp;#39;m beginning to understand why President Roosevelt uttered the words &amp;quot;the only thing we have to fear is fear itself.&amp;quot;&lt;/p&gt;&lt;p&gt;Any suggestions?&lt;/p&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5107" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/.NET+3.0/default.aspx">.NET 3.0</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/.NET+4.0/default.aspx">.NET 4.0</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2011/06/24/How-to-Make-A-Grown-Man-Cry.aspx</feedburner:origLink></item><item><title>Custom IE Error Page (DNSERROR.HTM)</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/7PZFuRS0Ugk/Custom-IE-Error-Page-_2800_DNS.aspx</link><pubDate>Mon, 20 Jun 2011 22:22:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5105</guid><dc:creator>nairdo</dc:creator><slash:comments>0</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5105.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5105</wfw:commentRss><description>&lt;p&gt;When you use a &lt;a href="http://codersforchrist.com/cs/blogs/nick/archive/2011/06/15/Remote_2C00_-Mobile_2C00_-3G_2C00_-Check_2D00_in.aspx"&gt;web based kiosk for your attendant-less check-in system&lt;/a&gt;, you should think about what&amp;#39;s going to happen if your network fails you -- especially if you&amp;#39;re using the 3G network.&amp;nbsp; This is what you&amp;#39;ll see if the kiosk cannot reach the server:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="standard error" height="268" src="http://codersforchrist.com/images/20110620_StandardError.png" title="standard error" width="460" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;That page is especially problematic if you don&amp;#39;t have a keyboard because 
there is no way to refresh/reload the page if the network starts working
 again.&lt;/p&gt;&lt;p&gt;Luckily &lt;em&gt;you can customize this&lt;/em&gt; content... it&amp;#39;s just a pain to do it but I&amp;#39;ll show you how.&amp;nbsp; Here&amp;#39;s what our page now looks like:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="Custom DNSERROR" height="316" src="http://codersforchrist.com/images/20110620_CustomDNSERROR.png" title="Custom DNSERROR" width="455" /&gt;&lt;/p&gt;&lt;p&gt;The button is a nice feature because it&amp;#39;s basically just going to load our check-in system page again.&amp;nbsp; Without that, in the past someone would have to reboot the whole system (pressing F5 on an stashed-away emergency keyboard would have also worked).&amp;nbsp; It&amp;#39;s also worth noting that since you can use javascript in there, you should even 
be able to do something more sophisticated such as automatically retry every few seconds, etc.&lt;/p&gt;&lt;p&gt;Here&amp;#39;s how we did it:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Download a Resource editor such as &lt;a href="http://download.cnet.com/Resource-Hacker/3000-2352_4-10178587.html"&gt;Resource Hacker&lt;/a&gt;. I read that it is possible to edit .mui files using VisualStudio, but after about a half hour of fail, I found Resource Hacker and it did it quite easily.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Grab a copy of your kiosk&amp;#39;s ieframe.dll.mui file (found under C:\Windows\system32\en-US\) and stow it away for backup purposes.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use &lt;a href="http://download.cnet.com/Resource-Hacker/3000-2352_4-10178587.html"&gt;Resource Hacker&lt;/a&gt; and edit the ieframe.dll.mui file.&amp;nbsp; Navigate down into the &amp;quot;23&amp;quot; folder (aka HTML folder) and select the DNSERROR.HTM item like so:&lt;br /&gt;&lt;br /&gt;&lt;img alt="Resource Hacker" height="553" src="http://codersforchrist.com/images/20110620_ResHacker.png" title="Resource Hacker" width="456" /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Make your changes.&amp;nbsp; It&amp;#39;s just HTML, so you know what to do...&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Press the &amp;quot;Compile Script&amp;quot; button.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Save the file and quit.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Copy the file over to your kiosk&amp;#39;s C:\Windows\system32\en-US\ folder.&amp;nbsp; If you&amp;#39;re unable to, because the file is in use or similar, just rename the &lt;em&gt;live &lt;/em&gt;file (oddly Windows let&amp;#39;s you do that) and then copy the file down to that folder.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Start IE and kill your network to see the result.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Is this a hack?&amp;nbsp; Of course, but it works. We&amp;#39;re using an old version of IE, so you&amp;#39;re mileage may vary. I&amp;#39;d consider switching to Chrome for our kiosks (since &lt;a href="http://think2loud.com/google-chrome-full-screen-kiosk-mode/"&gt;you can start chrome in -kiosk mode&lt;/a&gt; too) but I can&amp;#39;t seem to find any information on how to customize its equivalent error page.&amp;nbsp; Let me know if you&amp;#39;ve found another way.&lt;br /&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5105" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/check-in/default.aspx">check-in</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/news/default.aspx">news</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/IT/default.aspx">IT</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/utilities/default.aspx">utilities</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2011/06/20/Custom-IE-Error-Page-_2800_DNS.aspx</feedburner:origLink></item><item><title>Patchy Philosophy and the Bug Free Software</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/2cNrCGPm8Ak/Patchy-Philosophy-and-the-Bug-Free-Software.aspx</link><pubDate>Thu, 16 Jun 2011 03:17:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5104</guid><dc:creator>nairdo</dc:creator><slash:comments>2</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5104.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5104</wfw:commentRss><description>&lt;p&gt;&lt;img alt="bugs outnumber humans" height="184" src="http://codersforchrist.com/images/20110615_bugs.jpg" title="bugs outnumber humans" width="444" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;em&gt;[note: This is an especially &amp;#39;angry coder&amp;#39; post -- so I encourage the the faint of heart reader to simply skip this article.]&lt;/em&gt;&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Although I hate to admit it, I know there is no such thing as bug free software releases.&amp;nbsp; With testing and a solid &lt;a href="http://en.wikipedia.org/wiki/Software_quality_assurance" title="Software Quality Assurance, Testing, etc. -- making sure your software does not stink"&gt;QA&lt;/a&gt; process in place, you most definitely can drive software defects in new releases &lt;em&gt;toward &lt;/em&gt;zero. However, the more complex the software is, the less likely it will come close to zero.&amp;nbsp; Some have argued from a business perspective it&amp;#39;s not cost effective to even &lt;em&gt;try &lt;/em&gt;to reach zero bugs.&amp;nbsp; Personally, I think it&amp;#39;s your obligation to do your best to find and kill bugs before your customers do -- if you want to keep your customers and your business.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;What to do?&amp;nbsp; Shall we developers simply pretend bugs don&amp;#39;t exist and keep on creating new releases?&amp;nbsp; Certainly not.&amp;nbsp; Patches to the rescue.&lt;/p&gt;&lt;p&gt;When you haven&amp;#39;t yet proven that you can release software with little to no defects, you are obligated to follow the patch principle.&amp;nbsp; Your customers are counting on it.&amp;nbsp; The idea is simple.&amp;nbsp; After you release a new version of your software (major or minor release -- any version that introduces new or changed functionality) you &lt;strong&gt;promise to quickly and frequently release patches&lt;/strong&gt; for the bugs that are reported by your customers.&amp;nbsp; You &lt;strong&gt;must not&lt;/strong&gt; wait until the &lt;em&gt;next &lt;/em&gt;release because guess what...there &lt;em&gt;will &lt;/em&gt;be more bugs in that release too. (To think that &amp;#39;the next release will not contain bugs&amp;#39; is to misunderstand developers and software development.) You should not wait and batch them up either and you should not endlessly test the patches for weeks or even days. You create and release them -- &lt;em&gt;quickly &lt;/em&gt;-- as your customers are broken until they&amp;#39;ve applied that patch.&amp;nbsp; They are at your mercy.&amp;nbsp; It&amp;#39;s up to you to establish a solid, reliable patch process your customers can count on. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;So, as we move into the future, I intend on pushing this same philosophy with the two open-source software projects that I&amp;#39;m involved with. Both of these new management systems (&lt;a href="https://github.com/JasonOffutt/Grassroots" title="Grassroots will empower non-profits to crowdsource their giving efforts. "&gt;Grassroots&lt;/a&gt; and ****) will not suffer from the patchy philosophy syndrome.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5104" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/CMS/default.aspx">CMS</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/IT/default.aspx">IT</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/project/default.aspx">project</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/angry+coder/default.aspx">angry coder</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2011/06/15/Patchy-Philosophy-and-the-Bug-Free-Software.aspx</feedburner:origLink></item><item><title>Remote, Mobile, 3G, Check-in</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/bhk1t-IiDyw/Remote_2C00_-Mobile_2C00_-3G_2C00_-Check_2D00_in.aspx</link><pubDate>Wed, 15 Jun 2011 14:11:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5102</guid><dc:creator>nairdo</dc:creator><slash:comments>2</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5102.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5102</wfw:commentRss><description>&lt;p&gt;&lt;img alt="the Kiosk Cart" height="184" src="http://codersforchrist.com/images/20110615_QC_kiosk.jpg" title="the Kiosk Cart" width="444" /&gt;&lt;/p&gt;

&lt;p&gt;When we launched our Queen Creek campus at the Queen Creek High School, we decided not to rely on the local network there.&amp;nbsp; Having learned our network reliability lessons when we ran a test church at Campo Verde High School the year before, we instead decided to put some trust into the 3G cellular network. So far it&amp;#39;s been pretty solid.&lt;/p&gt;

&lt;p&gt;Built not for looks but for quick setup, tear-down, and storage, this &amp;#39;kiosk on a cart&amp;#39; solution was somewhat based on &lt;a href="http://www.blueboxmoon.com/wordpress/"&gt;Daniel&amp;#39;s&lt;/a&gt; &amp;quot;network in a box&amp;quot; configuration and our &lt;a href="http://redmine.refreshcache.com/projects/cccevcheckin"&gt;custom check-in Arena module&lt;/a&gt;.&amp;nbsp; The cart includes a self contained network using a used Cisco 800 series router with a 3G card that creates a VPN tunnel to our main campus.&amp;nbsp; If IT and Networking are your gig, you can read &lt;a href="http://grinding-it-out.blogspot.com/2010/09/network-in-box-solution-for-our-new.html" title="Network-In-A-Box"&gt;all the details about those parts over on Derek&amp;#39;s blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you&amp;#39;re wondering if it&amp;#39;s fast or even usable... check out this video of me doing check-in of some test children during a live, normal weekend.&lt;/p&gt;
&lt;iframe frameborder="0" height="277" src="http://www.youtube.com/embed/PlzUvb0uWOA" width="444"&gt;&lt;/iframe&gt;
&lt;p&gt;Every time I see the labels print out with this setup, I&amp;#39;m amazed.&amp;nbsp; The browser on the kiosk is talking over the 3G VPN network, to our web server which is then sending a local print job to a printer called QC1 (or QC2), which in turn is defined to talk to the printer&amp;#39;s print-server on a particular static IP back over the 3G VPN network.&amp;nbsp; Back and fourth over the 3G network without a hitch.&lt;/p&gt;
&lt;p&gt;One more important thing to note. Notice how fast we can punch in a phone number? Unless you&amp;#39;re using iPads or some other non-mouse/keyboard device, you might need to change your registry&amp;#39;s &lt;a href="http://technet.microsoft.com/en-us/library/cc978662.aspx"&gt;DoubleClickSpeed &lt;/a&gt;setting. We&amp;#39;ve set ours to 50. That setting defines how clicks are interpreted by the OS, so if the number is too high the OS won&amp;#39;t interpret two very fast clicks (screen touches) as two single clicks.&lt;br /&gt;
&lt;/p&gt;

&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5102" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/Arena/default.aspx">Arena</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/check-in/default.aspx">check-in</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/Arena+ChMS/default.aspx">Arena ChMS</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/IT/default.aspx">IT</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2011/06/15/Remote_2C00_-Mobile_2C00_-3G_2C00_-Check_2D00_in.aspx</feedburner:origLink></item><item><title>Mind Storm</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/OKjIQ0TaufQ/Mind-Storm.aspx</link><pubDate>Sat, 11 Jun 2011 14:02:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5101</guid><dc:creator>nairdo</dc:creator><slash:comments>0</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5101.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5101</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;&lt;img height="178" src="http://codersforchrist.com/blog/images/nosleep.jpg" width="444" /&gt;&lt;br /&gt;Here are a few of the things swirling around in my head that make it hard to sleep...&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;thinking about new friends I met in North Africa that&amp;nbsp;live in tents 
(refugees) and have lost everything due to the revolution&lt;br /&gt;&lt;/li&gt;&lt;li&gt;having so much side work I have to turn customers away&lt;/li&gt;&lt;li&gt;emails I haven&amp;#39;t responded to&lt;br /&gt;&lt;/li&gt;&lt;li&gt;still top-secret and not secret side projects such as &lt;a href="https://github.com/JasonOffutt/Grassroots" title="our github repo for Grassroots"&gt;Grassroots&lt;/a&gt;&lt;/li&gt;&lt;li&gt;the need to do more &lt;a href="http://www.refreshcache.com" title="RefreshCache 2011"&gt;RefreshCache 2011&lt;/a&gt; prep work&lt;/li&gt;&lt;li&gt;thinking about how to keep up with news, software tech, tweets, feeds, and friends&lt;br /&gt;&lt;/li&gt;&lt;li&gt;trying to figure out when we can upgrade our Arena to a newer version&lt;/li&gt;&lt;li&gt;potential security holes&lt;/li&gt;&lt;li&gt;bugs&lt;/li&gt;&lt;li&gt;bed bugs (not that I have any -- just knowing that they exist somewhere out there)&lt;/li&gt;&lt;li&gt;&lt;a href="http://online.wsj.com/article/BT-CO-20110601-703255.html" title="They said it would not happen again after QE1, so why would I think this will be the end?"&gt;Quantative Easing 3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;thinking about and publishing a list of things that are keeping me awake at 
night&lt;/li&gt;&lt;li&gt;recursion &lt;/li&gt;&lt;/ul&gt;Ok, they say if you just write things down that you&amp;#39;ll feel better and can get back to work. We&amp;#39;ll see if that works.&lt;br /&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5101" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/angry+coder/default.aspx">angry coder</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2011/06/11/Mind-Storm.aspx</feedburner:origLink></item><item><title>I'm Defeated: Community Communications</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/1qNsluSBrGQ/I_2700_m-Defeated_3A00_-Community-Communications.aspx</link><pubDate>Wed, 16 Feb 2011 18:20:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5089</guid><dc:creator>nairdo</dc:creator><slash:comments>0</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5089.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5089</wfw:commentRss><description>&lt;p&gt;&lt;img align="right" alt="Community Subscriptions" border="0" height="269" hspace="3" src="http://codersforchrist.com/images/20110216_CommunitySubs.png" title="Community Subscriptions" vspace="2" width="266" /&gt;I admit defeat. I can&amp;#39;t keep up with all the community posts in &lt;a href="http://community.arenachms.com/forums/default.aspx" title="the.community Forums"&gt;the Arena community forums&lt;/a&gt; anymore.&amp;nbsp; Actually, I would have to say it started at some point during 2010.&amp;nbsp; I just would not admit it until today.&amp;nbsp; I guess this might also mean &lt;a href="http://codersforchrist.com/cs/ControlPanel/Blogs/community.arenachms.com" title="Arena: the.Community"&gt;the.Community&lt;/a&gt; has become a pretty successful tool for certain things &lt;a href="http://www.arenachms.com" title="ArenaChMS Arena ChMS"&gt;ArenaChMS&lt;/a&gt;! &lt;/p&gt;&lt;p&gt;Anyhow as a result, I&amp;#39;m finally changing my forum&amp;#39;s subscriptions -- unsubscribing from about 90% of them.&amp;nbsp; I just need to keep the most essential ones... and I&amp;#39;m lucky I went in there.&amp;nbsp; I also just discovered several new forums for the community developers, namely the &lt;a href="http://community.arenachms.com/forums/90/ShowForum.aspx" title="Arena: Developer Alerts"&gt;Developer Alerts&lt;/a&gt; forum. Perhaps that forum will be used to announce when a Arena deprecates a method from their class library API...&lt;/p&gt;&lt;p&gt;&lt;img alt="my developer forum subscriptions" height="305" src="http://codersforchrist.com/images/20110216_CommDevSubs.png" title="my developer forum subscriptions" width="447" /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5089" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/news/default.aspx">news</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/Arena+ChMS/default.aspx">Arena ChMS</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/angry+coder/default.aspx">angry coder</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2011/02/16/I_2700_m-Defeated_3A00_-Community-Communications.aspx</feedburner:origLink></item><item><title>Using Firebug in IE</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/NO3pMWKe0o8/Using-Firebug-in-IE.aspx</link><pubDate>Tue, 07 Dec 2010 15:39:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5077</guid><dc:creator>nairdo</dc:creator><slash:comments>0</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5077.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5077</wfw:commentRss><description>&lt;div style="width: 450px"&gt;&lt;span style="float: left; margin-right: 8px"&gt;&lt;img src="http://community.arenachms.com/users/avatar.aspx?userid=2108" /&gt;&lt;/span&gt;&lt;span style="float: right"&gt;&lt;img src="http://www.codersforchrist.com/images/blog/firebug-logo.png" /&gt;&lt;/span&gt; &lt;p&gt;If you&amp;#39;re developing complex modules for your Arena website, you&amp;#39;ll probably need a tool such as &lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt; (a plugin for Firefox) to test how your CSS changes will effect layout in the browser.&amp;nbsp; Once you&amp;#39;ve used Firebug you&amp;#39;ll have a hard time trying to manage without it.&lt;/p&gt;&lt;p&gt;That&amp;#39;s great for Firefox, but what about IE?&amp;nbsp; With &lt;a href="http://getfirebug.com/firebuglite" title="Firebug Lite"&gt;Firebug Lite&lt;/a&gt; you can also have much of Firebug&amp;#39;s great functionality inside IE too -- you just need to add a script reference into the &amp;quot;head&amp;quot; section of your webpage...&lt;/p&gt;&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; overflow-x: auto; overflow-y: auto; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', Courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text; border: silver 1px solid; padding: 4px"&gt;&lt;pre id="codeSnippet" style="text-align: left; line-height: 12pt; overflow-x: visible; overflow-y: visible; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', Courier, monospace; direction: ltr; color: black; font-size: 8pt; border-style: none; padding: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;script&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;https://getfirebug.com/firebug-lite.js&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;script&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;If you use &lt;a href="http://www.cccev.com" title="Central Christian Church (Arizona)"&gt;our&lt;/a&gt; custom &lt;strong&gt;&lt;a href="http://community.arenachms.com/files/folders/modules/entry10963.aspx" title="Inject Javascript"&gt;Inject Javascript&lt;/a&gt;&lt;/strong&gt; Arena module, you can have that (or any other javascript reference) put directly into the head of the HTML with a few simple module settings:&lt;/p&gt;&lt;p&gt;&lt;img alt="The module settings" height="127" src="http://www.codersforchrist.com/images/20101201_InjectJS.png" style="width: 644px; height: 127px" title="The module settings" width="644" /&gt;&lt;/p&gt;&lt;p&gt;And if you add it to your site&amp;#39;s Arena template and only allow admins view&amp;nbsp;permission to that module, it will have absolutely&amp;nbsp;no impact to anyone else.&amp;nbsp; Enjoy.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;em&gt;** You also need to add this &amp;quot;bookmarklet&amp;quot; (&lt;/em&gt;&lt;a href="BLOCKED SCRIPT(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+&amp;#39;NS&amp;#39;]&amp;amp;&amp;amp;F.documentElement.namespaceURI;E=E?F[i+&amp;#39;NS&amp;#39;](E,&amp;#39;script&amp;#39;):F[i](&amp;#39;script&amp;#39;);E[r](&amp;#39;id&amp;#39;,b);E[r](&amp;#39;src&amp;#39;,I+g+T);E[r](b,u);(F[e](&amp;#39;head&amp;#39;)[0]||F[e](&amp;#39;body&amp;#39;)[0]).appendChild(E);E=new%20Image;E[r](&amp;#39;src&amp;#39;,I+L);})(document,&amp;#39;createElement&amp;#39;,&amp;#39;setAttribute&amp;#39;,&amp;#39;getElementsByTagName&amp;#39;,&amp;#39;FirebugLite&amp;#39;,&amp;#39;4&amp;#39;,&amp;#39;firebug-lite.js&amp;#39;,&amp;#39;releases/lite/latest/skin/xp/sprite.png&amp;#39;,&amp;#39;https://getfirebug.com/&amp;#39;,&amp;#39;#startOpened&amp;#39;);"&gt;&lt;em&gt;Launch Firebug Lite&lt;/em&gt;&lt;/a&gt;&lt;em&gt;) to your your Favorites in IE which is used to start Firebug Lite.&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5077" width="1" height="1"&gt;</description><enclosure url="http://codersforchrist.com/cs/blogs/nick/attachment/5077.ashx" length="9859" type="image/gif" /><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/code/default.aspx">code</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/Arena+ChMS/default.aspx">Arena ChMS</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/reviews/default.aspx">reviews</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2010/12/07/Using-Firebug-in-IE.aspx</feedburner:origLink></item><item><title>Jason Offutt == JSON Data</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/lfzT8by7sgw/Jason-Offutt-_3D003D00_-JSON-Data.aspx</link><pubDate>Thu, 25 Nov 2010 15:40:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5072</guid><dc:creator>nairdo</dc:creator><slash:comments>0</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5072.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5072</wfw:commentRss><description>&lt;p&gt;&lt;img align="right" alt="JSON Data" src="http://codersforchrist.com/images/JsonData.png" title="JSON Data" /&gt;My good friend and co-worker,&amp;nbsp;&lt;a href="http://twitter.com/jasonoffutt" title="Jason&amp;#39;s tweets"&gt;Jason Offutt&lt;/a&gt;, recently started blogging&amp;nbsp;over at &lt;a href="http://jsondata.tumblr.com/"&gt;JsonData.tumblr.com&lt;/a&gt;.&amp;nbsp; (Yes, not only is he a&amp;nbsp;developer and&amp;nbsp;an&amp;nbsp;artist, he&amp;#39;s also a great&amp;nbsp;writer!)&amp;nbsp; In our spare time, Jason and I have been working on a couple of open source projects.&amp;nbsp;One of them, his baby,&amp;nbsp;is an &lt;a href="http://redmine.refreshcache.com/projects/jrmycampaign" title="MyCampaign"&gt;MVC web application for allowing organizations to start giving campaigns w/sponsors&lt;/a&gt; and the other is still very young and undisclosed. The topic of open source&amp;nbsp;is a frequent&amp;nbsp;discussion among the guys involved in these projects and Jason just wrote &lt;a href="http://jsondata.tumblr.com/day/2010/11/22" title="Regarding Open Source and .NET"&gt;a great article about open source development&lt;/a&gt; in the .NET&amp;nbsp;world&amp;nbsp;--- which is something many non-MS developers may not realize is happening.&lt;/p&gt;&lt;p&gt;As I mentioned at &lt;a href="http://codersforchrist.com/cs/controlpanel/blogs/www.refreshcache.com" title="RefreshCache"&gt;RefreshCache&lt;/a&gt;, it&amp;#39;s a shame when can&amp;#39;t utilize the tools and experience we&amp;#39;ve gained during our regular job when we continue the work of our ministry in the off hours; whether we&amp;#39;re helping&amp;nbsp;build a website for an&amp;nbsp;orphanage in Nepal or writing software for a&amp;nbsp;parachurch ministry.&amp;nbsp; We love &lt;a href="http://www.arenachms.com" title="Arena ChMS"&gt;Arena ChMS&lt;/a&gt;&amp;nbsp;as application development framework, but it&amp;#39;s not open source and we just can&amp;#39;t use it for our other projects.&lt;/p&gt;&lt;p&gt;We can&amp;#39;t control the choices of&amp;nbsp;our vendors, but we can control our own actions. This is part of the reason why Jason and I are involved in these other two projects.&amp;nbsp; I&amp;#39;ll be posting more about all this early next year.&amp;nbsp; Happy Thanksgiving!&lt;/p&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5072" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/news/default.aspx">news</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2010/11/25/Jason-Offutt-_3D003D00_-JSON-Data.aspx</feedburner:origLink></item><item><title>Silence: the moral dilemma on hiding a Facebook friend</title><link>http://feedproxy.google.com/~r/ThisEndUp/~3/jZOXfenhr-g/Silence_3A00_-the-moral-delima-on-when-to-hide-a-FB-friend.aspx</link><pubDate>Thu, 07 Oct 2010 02:31:00 GMT</pubDate><guid isPermaLink="false">3335dbd7-428c-4c14-9321-d5fba297aca8:5059</guid><dc:creator>nairdo</dc:creator><slash:comments>1</slash:comments><comments>http://codersforchrist.com/cs/blogs/nick/comments/5059.aspx</comments><wfw:commentRss>http://codersforchrist.com/cs/blogs/nick/commentrss.aspx?PostID=5059</wfw:commentRss><description>&lt;p&gt;&lt;img align="right" alt="Facebook hiding" border="0" height="100" src="http://codersforchrist.com/images/blog/SilenceTheFBTroll.png" style="width: 239px; height: 100px" title="Facebook hiding" width="239" /&gt;Yesterday I used the &amp;quot;hide&amp;quot; &amp;lt;friend&amp;gt; feature on Facebook and I&amp;#39;m torn over it.&lt;/p&gt;&lt;p&gt;For me, &lt;a href="http://codersforchrist.com/cs/blogs/nick/archive/2007/08/16/Missing-the-Boat_3F00_-Look-at-the-Trend.aspx" title="my thoughts on Facebook from the summer of 2007"&gt;the Facebook trend&lt;/a&gt;&amp;nbsp;had become something I dreaded&amp;nbsp;because of a particular person&amp;nbsp;I know who doesn&amp;#39;t seem to have a day job other than to FB &lt;a href="http://en.wikipedia.org/wiki/Troll_(Internet)" title="someone who posts inflammatory, extraneous, or off-topic messages in an online community"&gt;troll&lt;/a&gt;&amp;nbsp;every day -&amp;nbsp;all day.&amp;nbsp;You know the type of person I&amp;#39;m talking about.&amp;nbsp;Not&amp;nbsp;the regular person who occasionally drops&amp;nbsp;an agenda-based-topic into their socially acceptable narcissistic stream of consciousness.&amp;nbsp;I&amp;#39;m talking about the &lt;em&gt;super activist&lt;/em&gt; whose only job is to dredge up nonsense, pre-spun statistics, so-called facts and bogus &amp;quot;news&amp;quot; which they feel is going to influence the overwhelmingly &lt;em&gt;silent&lt;/em&gt; majority of Americans.&amp;nbsp; In order to see what my other friends were up to, I&amp;#39;d have to wade through 6-12 other daily, inflammatory, repulsing posts from you-know-who, and after a year&amp;nbsp;or so&amp;nbsp;of doing this Facebook simply sickened me.&lt;/p&gt;&lt;p&gt;The act of &lt;em&gt;FB hiding&lt;/em&gt; is something I&amp;#39;ve been struggling with internally for months now.&amp;nbsp; Most the people I&amp;#39;ve talked with say, &amp;#39;yeah, it&amp;#39;s fine to silence your friend, and you need to do it.&amp;#39;&amp;nbsp; But I can&amp;#39;t help but feel: what&amp;#39;s the point in calling someone a friend if you can&amp;#39;t stomach what they have to say.&amp;nbsp; Hiding seems like a&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Cop_out" title="avoid taking responsibility for an action"&gt;cop out&lt;/a&gt; - a lie to yourself.&lt;/p&gt;&lt;p&gt;Coincidentally, my pastor said today, &amp;#39;to outright reject every detail of what someone says without measuring its&amp;nbsp;truthfulness is foolish and you&amp;#39;ll be seen as an idiot.&amp;#39;&amp;nbsp; While this applies to&amp;nbsp;to &lt;em&gt;all&lt;/em&gt;&amp;nbsp;parties&amp;nbsp;in a debate, what if only one side is being intellectually honest and reasonable? &amp;nbsp;I suppose it&amp;#39;s only reasonable to end that debate and walk away from the unhealthy&amp;nbsp;conversation.&lt;/p&gt;&lt;p&gt;I&amp;#39;m going to try it for a while and see how it goes. At least with hiding there is still some ability to participate in each others discussions, but I will definitely be mulling my decision over and may just pull the plug on the &amp;#39;friendship&amp;#39;.&lt;/p&gt;&lt;p&gt;I knew something like this could happen.&amp;nbsp; It&amp;#39;s one of the reasons why I&amp;#39;ve always been overly thoughtful about who I accept friend requests from.&amp;nbsp;I don&amp;#39;t generally think of my FB friends as simply co-workers or acquaintances.&amp;nbsp; I consider them &lt;em&gt;real friends&lt;/em&gt; (someone I could call on for help) and I want to keep it that way.&lt;/p&gt;&lt;p&gt;[&lt;strong&gt;Note&lt;/strong&gt;: In yet another coincidence, shortly after writing this post, &lt;a href="http://blog.facebook.com/blog.php?post=434700832130" title="Fb Groups"&gt;Facebook announced a new version of &amp;quot;Groups&amp;quot;&lt;/a&gt; which could be the answer to the problem I&amp;#39;ve just described -- provided the trolls take&amp;nbsp;their constant&amp;nbsp;activism to&amp;nbsp;their activist groups.]&lt;/p&gt;&lt;img src="http://codersforchrist.com/cs/aggbug.aspx?PostID=5059" width="1" height="1"&gt;</description><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/news/default.aspx">news</category><category domain="http://codersforchrist.com/cs/blogs/nick/archive/tags/facebook/default.aspx">facebook</category><feedburner:origLink>http://codersforchrist.com/cs/blogs/nick/archive/2010/10/06/Silence_3A00_-the-moral-delima-on-when-to-hide-a-FB-friend.aspx</feedburner:origLink></item></channel></rss>

