<?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>MDO Technologies</title>
	<atom:link href="http://mdotech.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mdotech.com</link>
	<description></description>
	<lastBuildDate>Thu, 04 Oct 2012 15:41:38 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Beyond Web Server Monitoring: How We Automated IIS ASP.NET Restart</title>
		<link>http://mdotech.com/2012/10/beyond-web-server-monitoring-how-we-automated-iis-asp-net-restart/</link>
		<comments>http://mdotech.com/2012/10/beyond-web-server-monitoring-how-we-automated-iis-asp-net-restart/#comments</comments>
		<pubDate>Thu, 04 Oct 2012 15:35:13 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Development Tips]]></category>

		<guid isPermaLink="false">http://mdotech.com/?p=139</guid>
		<description><![CDATA[We run a number of production servers, some of them using IIS and ASP.NET, and of course they run around the clock. We have used various monitoring tools and services throughout the years we&#8217;ve been doing this, but in addition to the mounting expense of adding more and more servers to our monitoring services, and upgrading to [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://mdotech.com/wp-content/uploads/2012/10/Both-Servers-Before.png"><img class="alignleft  wp-image-144" title="Both Servers Before" src="http://mdotech.com/wp-content/uploads/2012/10/Both-Servers-Before-300x257.png" alt="" width="180" height="154" /></a>We run a number of production servers, some of them using IIS and ASP.NET, and of course they run around the clock. We have used various monitoring tools and services throughout the years we&#8217;ve been doing this, but in addition to the mounting expense of adding more and more servers to our monitoring services, and upgrading to shorter and shorter monitoring intervals, we were still left with two issues.</p>
<p>First, regardless of using our services most frequent testing intervals we could sometimes be down for longer than we liked &#8212; in part because an outage could happen at an inopportune moment, when we were away from a computer for example.</p>
<p>Second, it&#8217;s no fun being awakened in the middle of the night just to restart IIS. And with customers in every timezone around the globe, any outage anytime disrupts someone trying to get <em>their</em> job done.</p>
<p>We&#8217;ve gotten good at what we do &#8212; we&#8217;ve been at it for more than a decade, and outages are few and far between for stable, mature products. But we absolutely hated any outages that although unavoidable, would last for more than seconds.</p>
<p>How did we address this? In two steps. First, we wrote mobile tools for the manual restart. Then we automated the whole thing.</p>
<p>Although many of us tote iOS devices we all have Android phones, so an Android app was the obvious starting point. Coupled to our own non-IIS, custom port web server, the app allows us to check the health, and restart as needed, any of our IIS / ASP.NET servers (let&#8217;s face facts, as nice as IIS and ASP.NET are, they fall over more often than Apache or Nginx on Linux).</p>
<p>Actually the solution we developed allows us to execute any Windows command we want, with all commands both centralized in a &#8220;hub&#8221; server and externalized from the code so any command can be added to a simple configuration file and it&#8217;s added to the available options.</p>
<p>This solution meant when we got the monitoring service alert for a particular server, all we had to do was tap-tap-tap on our smartphone and problem solved. This meant faster responses to problems. That might mean waking up in the middle of the night and using the smartphone by the bed to fix it in seconds before rolling over and going back to sleep, or it might mean pulling over to the side of the road to take care of it instead of having to call someone else or hurry to the office or home to be in front of a computer.</p>
<p>The second step was to enhance our &#8220;hub&#8221; to do its own monitoring and have it issue the command to fix the problem itself. This had several advantages. First, we could monitor on an even shorter interval at no extra cost. Actually, even with a monitoring service as a backup we&#8217;re saving money by choosing a less-costly interval. Second, automating the restart means quicker response, which means beter service for our customers. Third, no wake up calls in the middle of the night.</p>
<p>Is this something <em>YOU</em> need? Because we&#8217;re considering making it into a product. Give us your feedback in the comments or by emailing us at info at mdotech.com.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://mdotech.com/2012/10/beyond-web-server-monitoring-how-we-automated-iis-asp-net-restart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using WordPress Custom Fields Shortcode Plugin, and NO PHP, for href Links Including Google Analytics OnClick JavaScript</title>
		<link>http://mdotech.com/2012/03/using-custom-fields-for-href-links-including-google-analytics-onclick-javascript-in-wordpress/</link>
		<comments>http://mdotech.com/2012/03/using-custom-fields-for-href-links-including-google-analytics-onclick-javascript-in-wordpress/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 13:53:17 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Development Tips]]></category>
		<category><![CDATA[Custom Fields]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Virtual Pageview]]></category>
		<category><![CDATA[[cf]]]></category>

		<guid isPermaLink="false">http://mdotech.com/?p=91</guid>
		<description><![CDATA[The WordPress Editor, even in HTML mode, will typically fail to preserve more complex options in an href, for example when you want to use a common Google Analytics bit of javascript to include EXE, PDF, AVI, or WMV in GA reports using &#8220;virtual pageviews&#8221;. The generalized approach is to invoke the Google Analytics script by adding [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>The WordPress Editor, even in HTML mode, will typically fail to preserve more complex options in an href, for example when you want to use a common Google Analytics bit of javascript to <a href="http://support.google.com/googleanalytics/bin/answer.py?hl=en&amp;answer=55529">include EXE, PDF, AVI, or WMV in GA reports</a> using &#8220;virtual pageviews&#8221;.</p>
<p>The generalized approach is to invoke the Google Analytics script by adding an OnClick event to the link, like this:</p>
<pre><code>&lt;a href="http://www.example.com/files/map.pdf" onClick="javascript: _gaq.push(['_trackPageview', '/downloads/map']);"&gt;</code></pre>
<p>We learned when trying to use this technique on a page in a customer&#8217;s WordPress site we host that the WordPress editor will just not allow it to work.</p>
<p>We looked at solving the problem with a custom shortcode, which would involve some php and a small custom function, but settled on the more blogger-friendly &#8220;custom field&#8221; which is easier, less technical, and unlikely to break a site. It uses the <a href="http://wordpress.org/extend/plugins/custom-fields-shortcode/">Custom Fields Shortcode</a> plugin. It&#8217;s a general approach that lends itself to a cookbook approach to solving the general problem of adding javascript to a Page or a Post.</p>
<p>Here&#8217;s how to do it:</p>
<p>First install and activate the <a href="http://wordpress.org/extend/plugins/custom-fields-shortcode/">Custom Fields Shortcode plugin</a>.</p>
<p>The next trick is knowing where you add a Custom Field and how. It&#8217;s done in the Editor, but unless you&#8217;ve already used custom fields they will not be visible in the Editor. Turn them on by opening up Screen Options and checking the box:</p>
<p><a href="http://mdotech.com/wp-content/uploads/2012/03/Turn-on-Custom-Fields.png"><img class="alignleft size-medium wp-image-92" title="Turn on Custom Fields" src="http://mdotech.com/wp-content/uploads/2012/03/Turn-on-Custom-Fields-300x118.png" alt="Use Screen Options to turn on Custom Fields in the WordPress Editor" width="300" height="118" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Now you will see, toward the bottom of the Editor, Custom Fields, including the Add Custom Field button. A Custom Field is your basic key/value pair. We can add, for instance, &#8220;GA-OnClick&#8221; with our complete href string.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://mdotech.com/wp-content/uploads/2012/03/Add-a-New-Custom-Field.png"><img class="alignleft  wp-image-101" title="Add a New Custom Field" src="http://mdotech.com/wp-content/uploads/2012/03/Add-a-New-Custom-Field.png" alt="Add a New Custom Field" width="568" height="94" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Then, where you want to use that string, just use the Custom Field tags surrounding the name. In HTML mode we might, for instance, place the link and its anchor in a list item like this:</p>
<pre>&lt;li&gt;<a href="http://www.example.com/files/map.pdf" onClick="javascript: _gaq.push(['_trackPageview', '/downloads/map']);">Our Anchor</a>&lt;/li&gt;</pre>
<p>The WordPress Editor will leave it alone, and WordPress together with the plugin, when outputting the html for the Page or Post, will expand it.</p>
<p>Our example, <strong><em>added in HTML edit mode</em></strong>, expanded (note that the link is not real):</p>
<ul>
<li><a href="http://www.example.com/files/map.pdf" onClick="javascript: _gaq.push(['_trackPageview', '/downloads/map']);">Our Anchor</a></li>
</ul>
<p>Do a view source and search for &#8220;Our Anchor&#8221; to see the desired substitution was in fact done.</p>
]]></content:encoded>
			<wfw:commentRss>http://mdotech.com/2012/03/using-custom-fields-for-href-links-including-google-analytics-onclick-javascript-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Started with Twitter, Facebook and Google+ Social Sharing Buttons</title>
		<link>http://mdotech.com/2011/10/getting-started-with-twitter-facebook-google-social-sharing-buttons/</link>
		<comments>http://mdotech.com/2011/10/getting-started-with-twitter-facebook-google-social-sharing-buttons/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 21:01:32 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Development Tips]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mdotech.com/?p=62</guid>
		<description><![CDATA[As part of  the process of launching a new web product called DeliverFiles we wanted to add some social sharing buttons (or widgets if you prefer). The product site does not use a platform like WordPress or Druple, so there were no quick, easy plug-ins to rely on. Initially we looked at services that do [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>As part of  the process of launching a new web product called <a href="http://www.deliverfiles.com">DeliverFiles</a> we wanted to add some social sharing buttons (or widgets if you prefer).</p>
<p>The product site does not use a platform like WordPress or Druple, so there were no quick, easy plug-ins to rely on. Initially we looked at services that do the work for you via their javascripts and generated HTML and CSS. There are several of these sites, but we looked most closely at <a href="http://www.AddThis.com">AddThis</a> and <a href="http://www.ShareThis.com">ShareThis</a>.</p>
<p>One of the advantages of these services is the point and click / copy and paste configuration they offer for the scripts and html, and they offer lots of choices for sharing beyond the &#8220;Big Three&#8221; (<strong>Twitter, Facebook, Google+</strong>).</p>
<p>One thing we worried about was loss of control and feeding SEO and PageRank value to these services, plus we worried about possible negative effects in either the nearterm or later on.</p>
<p>We finally determined that we really only wanted to include the big three, and that we could deal directly with the Twitter/facebook/google+ code. Doing so did take some digging and trial and error. These are the steps we went through. They should get you started doing the same, and save you some time and frustration along the way.</p>
<p><strong>First, we needed our own twitter account.</strong> Lucky for us, <a href="http://twitter.com/#!/DeliverFiles">Deliverfiles</a> was available.</p>
<ul>
<li>Log into your Twitter account</li>
<li>click the &#8220;Developers&#8221; link (bottom of home page)</li>
<li>click &#8220;Add twitter to your website&#8221;</li>
<li>We wanted to add the Tweet Button to let users tell others about our service so we clicked &#8220;Get the Tweet Button&#8221;</li>
</ul>
<p>On the configuration page we went with these settings:</p>
<ul>
<li>Button &#8211; no count (we&#8217;ll consider changing this later when the number is large enough to impress)</li>
<li> Tweet Text &#8211; Our site is a product/service so we wanted to make this general, not specific to the page the button is on, so we changed to &#8220;Just used deliverfiles.com to easily share some files. Easy, fast, free.&#8221;</li>
<li> URL &#8211; gain in our case we customized it to point to our home page not the page the button appears on.</li>
<li> Language &#8211; left as-is (English)</li>
</ul>
<p>We ended up with this script:</p>
<p>&lt;a href=&#8221;https://twitter.com/share&#8221; data-url=&#8221;http://www.deliverfiles.com&#8221;<br />
data-text=&#8221;Just used deliverfiles.com to easily share some files. Easy, fast, free.&#8221;<br />
data-count=&#8221;none&#8221; data-via=&#8221;DeliverFiles&#8221;&gt;Tweet&lt;/a&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;//platform.twitter.com/widgets.js&#8221;&gt;&lt;/script&gt;</p>
<p>The button is 20 px high (this will be important later in this discussion).</p>
<p>When the user clicks the button, if he/she is logged into twitter it pops up a window pre-filled with our tweet text and twitter handle and domain. The user can just click to tweet it, or modify as needed. If the user isn&#8217;t logged in that happens first.</p>
<p>After the tweet the user sees our twitter description and image, and a prominent follow button available to click.</p>
<p>That&#8217;s it for twitter &#8211; mission accomplished.</p>
<p><strong>Second, we need to setup a Facebook page and then we need to add the appropriate Facebook Like button code.</strong></p>
<p>Well, technically we don&#8217;t need a Facebook page but it&#8217;s recommended. If you already have your own account you can use it to set a &#8220;Page&#8221; for your new product or website. That&#8217;s a separate discussion and beyond the scope of this one.</p>
<p>Whether we set up a Facebook page or not we need a Like Button on our site.</p>
<p>FB documentation on this topic can be overly complicated and confusing, and it&#8217;s a moving target, but try starting here:</p>
<p style="padding-left: 30px;"><a href="http://developers.facebook.com/docs/reference/plugins/like/">http://developers.facebook.com/docs/reference/plugins/like/</a></p>
<p>If that doesn&#8217;t work, try this google search:</p>
<p style="padding-left: 30px;"><a href="http://www.google.com/webhp?q=site%3Afacebook.com%20Step%201%20-%20Get%20Like%20Button%20Code">Step 1 Get Like Button Code site:facebook.com</a></p>
<p>On that page here is what we did:</p>
<ul>
<li>Enter the URL to Like (your site or page, remember the http://)</li>
<li>We UNCHECKED the Send button (keep it simple to start)</li>
<li>We left the default width as-is</li>
<li>We UNCHECKED Show Faces but that&#8217;s up to you</li>
<li>Verb to display was left as &#8220;Like&#8221;</li>
<li>Color Scheme was left as &#8220;Light&#8221;</li>
<li>Choose a font. We used &#8220;lucida grande&#8221; but that&#8217;s up to you and doesn&#8217;t matter much.</li>
<li>Click &#8220;Get Code&#8221;</li>
</ul>
<p>A pop-up will appear with three options (HTML5, XFBML, and iframe).</p>
<p>We used XFBML and it worked well with the layout described below. Basically just follow the instructions regarding where to put the bits of code.</p>
<p>There is a LOT more you can do with Open Graph, etc, but the goal here is to quickly get started with social tools. Come back after to enhance.</p>
<p><strong>Third, we wanted to add the Google+ button</strong></p>
<p>Go to <a href="http://www.google.com/webmasters/+1/button/">http://www.google.com/webmasters/+1/button/</a> and &#8220;get the snippet&#8221;</p>
<p>The options we used were:</p>
<ul>
<li>Medium size (conveniently 20 px high like the default tweet button)</li>
<li>Annotation: none (like twitter we don&#8217;t want the count of likes to show)</li>
<li>We ignored &#8220;Advanced Options&#8221;</li>
</ul>
<p>We pasted the script into the header of the page and the button snippet alongside the tweet button. It won&#8217;t show up until it is hosted on the actual website.</p>
<p><strong>Web page layout issues</strong></p>
<p>We wanted the three buttons to line up side by side across the bottom of the page, above a footer. Some could say this is a suboptimal choice but that&#8217;s where we initially put ours.</p>
<p>Getting the buttons to line up when they are generated by external scripts, css and html can be a challenge.</p>
<p>Here&#8217;s the code we used to solve the problem, it involved a outer DIV with a fixed height (35 px) that meets the needs of the facebook code and button, and three divs, one for each button, using float:left to cause them to align to the top edge of the enclosing div. The left-margin we set to 10 px for each to give them some spacing, and the background is white.</p>
<pre>&lt;div style="height:35px;background-color:#ffffff;"&gt;</pre>
<pre>&lt;div style="float:left;margin-left:10px;"&gt;
 &lt;!-- tweet button code goes here --&gt;
 &lt;/div&gt;</pre>
<pre>&lt;div style="float:left;margin-left:10px;"&gt;
 &lt;!-- Google +1 button code goes here --&gt;
 &lt;/div&gt;</pre>
<pre>&lt;div style="float:left;margin-left:10px;"&gt;
 &lt;!-- Facebook Like button code goes here --&gt;
 &lt;/div&gt;</pre>
<pre>&lt;/div&gt;</pre>
<p>You can see the result here: <a href="http://www.deliverfiles.com">http://www.deliverfiles.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mdotech.com/2011/10/getting-started-with-twitter-facebook-google-social-sharing-buttons/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Creating collaboration and productivity tools for every day use</title>
		<link>http://mdotech.com/2011/06/hello-world/</link>
		<comments>http://mdotech.com/2011/06/hello-world/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 15:17:05 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mdotech.com/?p=1</guid>
		<description><![CDATA[&#160; MDO Technologies has been creating collaboration and productivity tools that real people are using to get real work done, every day. We&#8217;ve been in the product design and development business  since 1998 with backgrounds that extend back all the way to the early days of email. We love working and leaving near the beach [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>&nbsp;</p>
<p><a href="http://mdotech.com/wp-content/uploads/2011/07/iStock_000006546852XSmall.jpg"><img class="alignleft size-medium wp-image-52" title="iStock_000006546852XSmall" src="http://mdotech.com/wp-content/uploads/2011/07/iStock_000006546852XSmall-300x191.jpg" alt="" width="300" height="191" /></a>MDO Technologies has been creating collaboration and productivity tools that real people are using to get real work done, every day.</p>
<p>We&#8217;ve been in the product design and development business  since 1998 with backgrounds that extend back all the way to the early days of email.</p>
<p>We love working and leaving near the beach and couldn&#8217;t image living anywhere other than sunny southwest Florida.</p>
]]></content:encoded>
			<wfw:commentRss>http://mdotech.com/2011/06/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
