<?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>Ellis Web Development &#187; Articles</title>
	<atom:link href="http://ellisweb.net/category/misc/articles/feed/" rel="self" type="application/rss+xml" />
	<link>http://ellisweb.net</link>
	<description>Thoughts &#38; Articles on ASP.net, C#, Software Development and Technology by Yaakov Ellis</description>
	<lastBuildDate>Mon, 07 May 2012 07:45:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Web Surfing Helps at Work</title>
		<link>http://ellisweb.net/2011/08/web-surfing-helps-at-work/</link>
		<comments>http://ellisweb.net/2011/08/web-surfing-helps-at-work/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 17:45:29 +0000</pubDate>
		<dc:creator>Yaakov Ellis</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[fatigue]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://ellisweb.net/?p=482</guid>
		<description><![CDATA[I have been claiming this for years. Web Surfing Helps at Work, Study Says: According to a new study, Web browsing can actually refresh tired workers and enhance their productivity, compared to other activities such as making personal calls, texts or emails, let alone working straight through with no rest … <a href="http://ellisweb.net/2011/08/web-surfing-helps-at-work/"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>I have been claiming this for years. <a href="http://online.wsj.com/article/SB10001424053111904070604576518261775512294.html">Web Surfing Helps at Work, Study Says</a>:</p>
<blockquote><p>According to a new study, Web browsing can actually refresh tired workers and enhance their productivity, compared to other activities such as making personal calls, texts or emails, let alone working straight through with no rest at all&#8230;.Because Web-surfing can aid productivity, the researchers caution employers against over-restricting workers&#8217; Web access. They recommend that managers allow time for limited personal Web browsing &#8220;since it has a salubrious impact on employees&#8217; productivity,&#8221; while limiting access to personal emails.</p></blockquote>
<p>It has happened to me many times that I am stuck on a problem and just come up with a solution. Then I spend a few minutes &#8220;wasting time&#8221; on some website and the answer comes to me. Nice to see it substantiated in a study.</p>
]]></content:encoded>
			<wfw:commentRss>http://ellisweb.net/2011/08/web-surfing-helps-at-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Productivity during a normal workday and Telecommuting as a Solution</title>
		<link>http://ellisweb.net/2007/05/productivity-during-a-normal-workday-and-telecommuting-as-a-solution/</link>
		<comments>http://ellisweb.net/2007/05/productivity-during-a-normal-workday-and-telecommuting-as-a-solution/#comments</comments>
		<pubDate>Wed, 30 May 2007 06:36:37 +0000</pubDate>
		<dc:creator>Yaakov Ellis</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[telecommuting]]></category>

		<guid isPermaLink="false">http://ellisweb.net/2007/05/productivity-during-a-normal-workday-and-telecommuting-as-a-solution/</guid>
		<description><![CDATA[John Wesley writes (Why the 9 to 5 Office Worker Will Become a Thing of the Past, found via War-N) about how the traditional work day (”9-5″) is very inefficient for many of today’s workers, and ends up with less productive, less satisfied employees. A continuous 8 hour work day … <a href="http://ellisweb.net/2007/05/productivity-during-a-normal-workday-and-telecommuting-as-a-solution/"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p class="entry">John Wesley writes (<a href="http://www.pickthebrain.com/blog/why-the-9-to-5-office-worker-will-become-a-thing-of-the-past/">Why the 9 to 5 Office Worker Will Become a Thing of the Past</a>, found via <a href="http://war-n.vox.com/library/post/keeping-up-appearances-thoughts-on-cubicle-life.html">War-N</a>) about how the traditional work day (”9-5″) is very inefficient for many of today’s workers, and ends up with less productive, less satisfied employees.</p>
<blockquote><p>A continuous 8 hour work day is a relic of the past. It makes sense for physical labor and manufacturing work, but with information workers it doesn’t account for the mental energy cycle…In the case of the modern information worker, nearly all tasks involve creative or strategic thinking…</p>
<p>I can’t speak for all workers, but I’ve observed that productivity levels generally peak twice a day — first thing in the morning and shortly after lunch. The most productive period is the beginning of the day. People are capable of creative tasks like writing and solving complex technical problems. After a couple hours of intense work, energy levels drop and workers downgrade to less demanding tasks like responding to email and tinkering with existing creations. Towards the end of the cycle, the mind is so cluttered and drained that workers resort to “work related activities” that appear productive but don’t contribute to the bottom line. The afternoon cycle is similar but the productivity peak isn’t as high. For different people the peaks and valleys will vary, but <strong>overall I’d estimate only 3-4 hours a day could be classified as highly productive. </strong>This number isn’t caused by slacking. You can’t force an information worker to be highly productive when the energy isn’t there.</p></blockquote>
<p>While the 9-5 work day is a relic of manufacturing labor, it does also make sense if there is a need for people to all be present at one location at one time. (Though I do remember a partial solution  at a company where I once interviewed: Everyone had to work 8 hours a day, and everyone had to be present on-site between the hours of 11am and 2pm. Thus there is a time when everyone can have meetings, and there are also accommodations in place for those who are early or late risers.)</p>
<p>Wesley suggests as a solution that the work day should be planned around times when the worker’s mental energies are at their peaks. This means that the 8 hours may not be consecutive, and will most probably be scattered in bursts throughout the day.</p>
<blockquote><p>The solution that makes the most sense is a remote work arrangement because it reduces employer costs and allows employees to adjust their work schedule to their mental energy cycle. When a worker becomes mentally fatigued, they can go off the clock and engage in recharge activities that are personally productive like exercise or relaxation. When energy returns, the worker can start working again at a high level, effectively cutting out the low productivity period of the cycle. <strong>Employers don’t pay for unproductive time and employees get to work in a more natural pattern that adjusts to their personal lives.</strong></p></blockquote>
<p>A good point is made at the end of the article that the biggest barrier to larger scale adoption to telecommuting is inertia and office politics. I would contend though that there will always be certain industries that are better suited towards telecommuting (and outsourcing), such as computer programming, and certain industries that will never fully transition to this (hospitals, psychologists, universities and schools, power plants, manufacturing, etc).</p>
<p>(Cross-posted on <a href="http://telecommuterer.com/2007/05/productivity-during-a-normal-workday-and-telecommuting-as-a-solution/">The Telecommuter<em>er</em></a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://ellisweb.net/2007/05/productivity-during-a-normal-workday-and-telecommuting-as-a-solution/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Setting up a Customized Blog in 7 Easy Steps</title>
		<link>http://ellisweb.net/2007/05/setting-up-a-customized-blog-in-7-easy-steps/</link>
		<comments>http://ellisweb.net/2007/05/setting-up-a-customized-blog-in-7-easy-steps/#comments</comments>
		<pubDate>Tue, 29 May 2007 07:41:51 +0000</pubDate>
		<dc:creator>Yaakov Ellis</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[customization]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://ellisweb.net/2007/05/setting-up-a-customized-blog-in-7-easy-steps/</guid>
		<description><![CDATA[When a person chooses to create a new blog, there are two routes to choose from: you can use one of the popular hosted blogging services (like Blogger or WordPress.com) or you host the blog yourself. The first option is definitely the easiest &#8211; someone else worries about all of … <a href="http://ellisweb.net/2007/05/setting-up-a-customized-blog-in-7-easy-steps/"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>When a person chooses to create a new blog, there are two routes to choose from: you can use one of the popular hosted blogging services (like <a href="https://www.blogger.com/">Blogger</a> or <a href="http://wordpress.com">WordPress.com</a>) or you host the blog yourself. The first option is definitely the easiest &#8211; someone else worries about all of the blog setup, database issues and hosting. You just put up the content. The second option however gives you more flexibility and control over the domain name, blogging software, plugins, advertising and template customization. However, when you set up the blog yourself, you become responsible for all aspects of its operation, a somewhat daunting proposition.</p>
<p>A couple of days ago I created a blog from scratch (<a href="http://telecommuterer.com">Telecommuter<em>er</em>.com</a>). I would like to review all of the different steps that went in to this. All told, it took about two hours to go from nothing to a fully functioning blog with initial content posted. Though it is more difficult than using a hosted blog service, I think that if you would like to use your blog for anything more than casual use and you are up to the task, in the end it is worth it to invest a little bit of time and money in setting up the blog by yourself.</p>
<p>I am assuming here that you already have the concept for the blog in place and a general idea of the types of content you would like to host. I will describe the process using blogging software from WordPress.org as I think it is the best free software available for the task (with easy setup, great plugin and community support).</p>
<ol>
<li><strong>Get a Domain Name</strong> &#8211; Get a domain name for your blog. I use <a href="http://godaddy.com">Go Daddy</a> for all of my domain name purchases (though there are thousands of other providers that can do the same for you). For Search Engine Optimization (SEO) reasons, the shorter the domain name, and the closer it is connected to the main topic of your site, the better. If your first choices are taken, there are several services that will take your keywords and return a list of available names that might be good, like <a href="http://www.domainsbot.com">DomainsBot</a>, <a href="http://domain-suggestions.domaintools.com/">DomainTools</a> and <a href="http://www.domainit.com/domain-suggest-tool.mhtml">DomainIt</a>.</li>
<li><strong>Set Up Hosting</strong> &#8211; Set up your hosting for the website. The main requirements are that that you use LAMP (Linux, Apache, MySQL, PHP) based hosting. There are thousands of services out there that will do this for less than $15 per month. If you are using a service that is not well known, I highly recommend checking out their reputation on the web before using them. I personally use MediaTemples <a href="http://www.mediatemple.net/webhosting/gs/">(gs) GridServer</a> service and <a href="http://www.dreamhost.com/r.cgi?169053">DreamHost</a> for my personal and client sites and would have no reservations recommending them to others.</li>
<li><strong>Connect Your Domain</strong> &#8211; Set up a new Website at your webhost (they should have instructions on how to do this). Your host will give you their NameServer (or DNS) information. (This normally takes the form of something like <em>ns1.hostname.com</em> and/or an IP address). Take this information and go to the site where you bought your domain. On this site, in your domain management, change the Nameservers (or DNS settings) of the domain name to that which was given to you by your Web Host. After you do this, your domain name will now be connected to your website that is hosted on the servers of your Web Host.</li>
<li><strong>Install WordPress</strong> &#8211; Many hosting services have tools that will do this automatically via server-side scripting. If that is available and they offer it with the most recent version of WordPress (currently 2.2), go for it. Otherwise, you can do it yourself in a few easy steps
<ol>
<li><a href="http://wordpress.org/download/">Download</a> the most recent version of WordPress</li>
<li>Extract the files from the zip or tar.gz file onto your computer. Upload them to your web host servers using FTP</li>
<li>Using phpMyAdmin or whatever other database control interface your web host provides, set up a new mySql database for your site.</li>
<li>Follow the rest of the instructions on the WordPress <a href="http://codex.wordpress.org/Installing_WordPress#Famous_5-Minute_Install">5 Minute Install</a> page (it really does take just five minutes)</li>
</ol>
<p>After going to the <em>/wp-admin/install.php</em> page on your site and following the instructions there, you should have a working WordPress blog set up on your domain name with the default template in place (and absolutely no content). Log into your admin section (you may want to bookmark the page at <em>/wp-admin/</em> on your site), go to the Options section (and its different subsections) to set up your blog  settings as you would like (don&#8217;t forget to set <a href="http://codex.wordpress.org/Using_Permalinks">Permalinks </a>if you have the capability and want to use them to create nice-looking urls for your posts.</p>
<p>Now the real fun begins.</li>
<li><strong>Set Up the Theme</strong> &#8211; If you are a real web-design pro and an expert with WordPress who can design their own theme from scratch, this doesn&#8217;t apply to you (and you don&#8217;t need to read any of this anyway). Otherwise, you should pick a theme for your site. There are hundreds of free WordPress themes out there to choose from. I recommend starting at the <a href="http://themes.wordpress.net/">WordPress Themes viewer</a>. It allows you access to test-drive hundreds of free themes and you can search based on features of the theme, layout options, etc. If it is too overwhelming, try filtering by theme features, using the list of most-downloaded themes (on the side of <a href="http://themes.wordpress.net/faq/">this page</a>) or some of the themes featured <a href="http://share.clarklab.net/articles/wordpress/20-wordpress-themes-that-dont-disappoint/">here</a>. When you have chosen a theme, download it to your computer and upload the files to your <em>/wp-content/themes</em> folder on your site. Go to the WordPress Admin &gt; Presentation, and select your new theme.</li>
<li><strong>Customize the Theme</strong> &#8211; If you are scared of CSS and HTML and are completely satisfied with the way that the theme works, you can skip this step. Otherwise, it is advisable to go into your theme files and customize sections of it. This is done to differentiate the look and feel of your site from other sites that may be using the same theme, as well as to change the locations and look of elements of the theme to suit your specific needs.Any customization work that you will do will take place in the different theme files, found in <em>/wp-content/themes/theme_name/</em>. The files that you are most likely to change are <em>header.php</em>, <em>footer.php</em>, <em>sidebar.php</em>, <em>index.php</em> and <em>single.php</em> for content and <em>styles.css</em> for style changes. You can read about the different types of <a href="http://codex.wordpress.org/Using_Themes">theme files</a>, how they <a href="http://codex.wordpress.org/The_Loop">work</a>, <a href="http://codex.wordpress.org/Stepping_Into_Template_Tags">template tags</a> and <a href="http://codex.wordpress.org/Templates">pages</a>, <a href="http://codex.wordpress.org/WordPress_Lessons#Customizing_Templates">customizing templates</a> and more on the <a href="http://codex.wordpress.org/Main_Page">WordPress Codex</a> and <a href="http://wordpress.org/support/">Support forums</a>.The potential for changes is practically endless. To give some ideas of things to change here is a list of changes that I made on my new site
<ul>
<li>I changed made the font size larger for all content text</li>
<li>Removed &#8220;sponsor links&#8221; on the theme that were pointing to indecent sites (see <a href="http://weblogtoolscollection.com/archives/2007/04/12/on-sponsored-themes/">Matt&#8217;s essay</a> on this for more info)</li>
<li>Changed the RSS links to <a href="http://feedburner.com/">Feedburner</a> feeds, added an Email subscription link (through Feedburner). Moved these links to higher on the page</li>
<li>Changed some of the default, hard-coded text on the page</li>
<li>Added some tags that had been left-out by the theme author (go to next page/post, etc)</li>
<li>Changed the format and information displayed in the post info section on both the main page and the single post page</li>
<li>Added links to stats tracking services (I use both <a href="http://www.statcounter.com/">StatCounter</a> and <a href="http://www.google.com/analytics/">Google Analytics</a>)</li>
</ul>
<p>Some other things you might want to change in the theme to really change the look of it is the header image, background colors, link colors and other visual elements. As you are changing the template files, upload them to your site to check on how your changes look and make sure that you haven&#8217;t broken anything.</li>
<li><strong>Set up Plugins</strong> &#8211; As with the previous step, if you are completely satisfied with every aspect of your blog performance, you can skip this step (just remember to enable the <a href="http://akismet.com/personal/">Akismet</a> anti-spam plugin that is included with the software). However, it is worth exploring the world of <a href="http://codex.wordpress.org/Advanced_Topics#WordPress_Plugins_and_Customization">plugins </a>if there is anything that you want to on your site that is not included by default or with the standard template tags. To set up any plugin, download its files, upload them to the <em>/wp-content/plugins/</em> directory on your site, follow any specific directions that may be given with the plugin, go to the Plugins page in your site and enable the plugin. Some plugins work automatically in the background, some will require you to add tags to your template files (they should give instruction on how to do this).Plugins are hosted all over the internet, often on their author&#8217;s websites, and sometimes in centralized repositories. If you are in need of specific functionality, try searching for it (using keywords &#8220;[functionality] wordpress plugin&#8221; should give you some results if the plugin exists). Otherwise, try looking in some of <a href="http://www.wpplugins.org/">the</a> <a href="http://codex.wordpress.org/Plugins">online</a> <a href="http://wp-plugins.net/">repositories</a> to get an idea of what is out there. Here is a list of the plugins that I used on my new site:
<ul>
<li><a href="http://akismet.com/">Akismet </a>- Anti Comment Spam</li>
<li><a href="http://www.joostdevalk.nl/code/enhanced-wp-contactform/">Enhanced WP Contact Form </a>- Easily add a contact form to your site</li>
<li><a href="http://www.neato.co.nz/ultimate-tag-warrior/">Ultimate Tag Warrior </a>-Add tagging functionality</li>
<li><a href="http://mnm.uib.es/gallir/wp-cache-2/">WP-Cache</a> &#8211; Super Caching Functionality</li>
<li><a href="http://sojoe.info/2006/11/11/jpf-add-to-reddit-wordpress-plugin/">JPF Add to Reddit</a>, <a href="http://sojoe.info/2006/11/11/jpf-seed-newsvine-wordpress-plugin/">Seed Newsvine</a>, <a href="http://sojoe.info/2006/11/04/jpf-submit-to-netscape-wordpress-plugin/">Submit to Netscape</a> and <a href="http://www.arnebrachhold.de/2005/06/05/delicious-bookmark-this-wordpress-plugin">del.icio.us Bookmark This</a> &#8211; Add links to social networking sites after blog posts</li>
</ul>
<p>Plugins can add lots of powerful functionality and totally change the way that you use your blog. They are one of the strongest features of WordPress and I highly recommend taking a look at what they have to offer.</li>
</ol>
<p>You are now done setting up your blog (though as you use it more, you may decide to change are the template some more and add more plugins). Now all that&#8217;s left to do is to start adding content. Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://ellisweb.net/2007/05/setting-up-a-customized-blog-in-7-easy-steps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Worried Yet?</title>
		<link>http://ellisweb.net/2007/05/worried-yet/</link>
		<comments>http://ellisweb.net/2007/05/worried-yet/#comments</comments>
		<pubDate>Tue, 15 May 2007 15:06:42 +0000</pubDate>
		<dc:creator>Yaakov Ellis</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[licensing]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[patents]]></category>

		<guid isPermaLink="false">http://ellisweb.net/2007/05/worried-yet/</guid>
		<description><![CDATA[In response to Jeff Atwoords post, Mike Gunderloy explained why he is seeking to move away from the Microsoft programming world and into Rails and open source. One sentence stuck out to me from his post: Now, if the Microsofts of the world have their way, we’ll end up with … <a href="http://ellisweb.net/2007/05/worried-yet/"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>In response to Jeff Atwoords <a href="http://www.codinghorror.com/blog/archives/000845.html">post</a>, Mike Gunderloy <a href="http://afreshcup.com/2007/5/14/the-rest-of-the-story">explained </a>why he is seeking to move away from the Microsoft programming world and into Rails and open source. One sentence stuck out to me from his post:</p>
<blockquote><p>Now, if the Microsofts of the world have their way, we’ll end up with everything in fenced-off gardens: every piece of user interface, every algorithm, every data structure, will belong to someone, and will not be available for use unless you pay for it somehow. It will become literally impossible to legally write software without entering into a web of commercial cross-licensing agreements.</p></blockquote>
<p>When I first read this a few days ago, I thought &#8220;Mike is exaggerating a little bit here. Even if Microsoft (and other companies) hold lots of software patents, will they really go so far as to force licenses for every last thing? Talk about stifling development and pissing off the <a href="http://www.youtube.com/watch?v=drLO_LG0W9w">developers, developers, developers</a>&#8220;.</p>
<p>Well, looks like Mike was on to something. A <a href="http://money.cnn.com/magazines/fortune/fortune_archive/2007/05/28/100033867/index.htm">recent article</a> in Fortune magazine said that Microsoft is looking to start enforcing licenses on <em>235</em> different patents that they claim are violated by Linux, Open Office and other pieces of Free Open Source Software (FOSS):</p>
<blockquote><p>Microsoft counters that it is a matter of principle. &#8220;We live in a world where we honor, and support the honoring of, intellectual property,&#8221; says Ballmer in an interview. FOSS patrons are going to have to &#8220;play by the same rules as the rest of the business,&#8221; he insists. &#8220;What&#8217;s fair is fair.&#8221;</p>
<p>Microsoft General Counsel Brad Smith and licensing chief Horacio Gutierrez sat down with <em>Fortune</em> recently to map out their strategy for getting FOSS users to pay royalties. Revealing the precise figure for the first time, they state that FOSS infringes on no fewer than 235 Microsoft patents.</p></blockquote>
<p>Where this will go is anyone&#8217;s guess. But the cat is officially out of the bag, and if it turns out that these 235 patents are laughable claims covering user interface items that have become completely standardized, moves like this on Microsoft&#8217;s part will do nothing but engender further segmentation of the programming world into <em>us vs. them</em>, which brings us back to a statement from Jeff&#8217;s article as a suggestion for all who have a vested interest in seeing both free and Microsof-based software development continue and progress unhindered:</p>
<blockquote><p>As a software developer, you&#8217;re doing yourself a disservice by pledging allegiance to anything other than yourself and your craft&#8211; whether it&#8217;s Microsoft or the principle of <a href="http://www.fsf.org/">free software</a>. Stop with the us vs. them mentality. Let go of the partisanship. We&#8217;re all in this thing together.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ellisweb.net/2007/05/worried-yet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Save Your Work!</title>
		<link>http://ellisweb.net/2007/05/save-your-work/</link>
		<comments>http://ellisweb.net/2007/05/save-your-work/#comments</comments>
		<pubDate>Tue, 08 May 2007 19:47:49 +0000</pubDate>
		<dc:creator>Yaakov Ellis</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[wtf]]></category>

		<guid isPermaLink="false">http://ellisweb.net/2007/05/save-your-work/</guid>
		<description><![CDATA[My wife and I are in the process of designing a kitchen (with the aid of our architect) for our new home. The locations of the windows, walls, fridge, oven and sinks is basically set. So the remaining design consists of choosing the number, size and layout of all of … <a href="http://ellisweb.net/2007/05/save-your-work/"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>My wife and I are in the process of designing a kitchen (with the aid of our architect) for our new home. The locations of the windows, walls, fridge, oven and sinks is basically set. So the remaining design consists of choosing the number, size and layout of all of the drawers and cabinets, plus lots of other details. Our architect has designed a layout for us to use, and we plan on shopping it around to a kitchen store plus some private contractors for quotes.</p>
<p>Today we went to the kitchen store. After (rudely) pronouncing that she disliked many aspects of the plans that we had designed with our architect, with the stated reason that &#8220;we are living in 2007 today, and this kitchen looks like it is from many years ago&#8221; (we are more into functionality than the flashiest, sleekest look, and we have need for lots of storage space), we then gave the rep a chance to redesign the space as she saw fit.</p>
<p>This store uses some kitchen design program (I didn&#8217;t catch the title) to do everything: layout all of the elements in the space in three dimensions, design the interiors of all the different cabinets. It can provide technical specifications and diagrams for the construction crew, allows designation of colors and materials. And lets you see a virtual view of the kitchen from any height, angle and perspective, rendering the kitchen in full 3-D along with colors and textures. And it uses all of this information to give price quotes. Quite a cool piece of software.</p>
<p>As the sales-rep was rendering the screen to show us a 3-D perspective of the kitchen, an error popped up on the screen (with a pretty lousy and unusable error message, one which was probably never intended for a non-developer to see). This was followed by five more errors and the program abruptly closing.</p>
<p>This in itself shouldn&#8217;t have been much of a problem. The sales-rep should have been able to just restart the program, open our file, and continue. One problem &#8211; she never saved here work. 45 minutes of design time down the drain. There was no more time for her to start over, so we could not get a price quote, could not look at any more colors, surfaces. Nothing. Our time was completely wasted, and she made herself and her store look bad (and made it less-likely that we would buy from her). All because she didn&#8217;t save her file.</p>
<p>For me as a developer, this is a foreign type of behavior. When I create a new file, I always save it. And I have it wired into my subconscious that whenever I make any change and pause for a few seconds, I perform a Ctrl-S on my keyboard.</p>
<p>However, can we totally blame the sales-rep in the kitchen store for this? She is not a programmer. True, she should have saved her work incrementally as she proceeded (and hopefully she has learned her lesson for the future). I think that well-designed software should have been there to force her (or at least annoy her) into performing this most vital of steps. Many programs are now featuring auto-save capability. Some of the more sophisticated ones (like MS Office and Visual Studio, to name a few examples that come to mind) will also save any of your unsaved work if the program execution abruptly ceases. In my opinion, this feature should become as standard as File/Open/Save/Close. The kitchen design program that the sales-rep was using today incorporate many thousands of man-hours in development time, costs thousands of dollars per license, and is used by the kitchen store as the centerpiece of their technology suite. Yet, for failure to help protect the user&#8217;s from their own ineptitude, it has wasted my time, and may have cost them a sale.</p>
]]></content:encoded>
			<wfw:commentRss>http://ellisweb.net/2007/05/save-your-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WYSIWYG Editing of HTML in a Windows Forms Control</title>
		<link>http://ellisweb.net/2007/03/wysiwyg-editing-of-html-in-a-windows-forms-control/</link>
		<comments>http://ellisweb.net/2007/03/wysiwyg-editing-of-html-in-a-windows-forms-control/#comments</comments>
		<pubDate>Mon, 19 Mar 2007 12:52:57 +0000</pubDate>
		<dc:creator>Yaakov Ellis</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[windows forms]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[rtf]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://ellisweb.net/2007/03/wysiwyg-editing-of-html-in-a-windows-forms-control/</guid>
		<description><![CDATA[In a WinForms project that I am working on right now, I have text stored in HTML format in the database. I need a way for novice users to be able to edit this text using a WYSIWYG interface. The most obvious choice for this in the Windows.Forms control library … <a href="http://ellisweb.net/2007/03/wysiwyg-editing-of-html-in-a-windows-forms-control/"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>In a WinForms project that I am working on right now, I have text stored in HTML format in the database. I need a way for novice users to be able to edit this text using a <a href="http://en.wikipedia.org/wiki/WYSIWYG">WYSIWYG</a> interface.</p>
<p>The most obvious choice for this in the Windows.Forms control library that is part of the .Net 2.0/3.0 framework is the <a href="http://msdn2.microsoft.com/en-us/library/3tdc88y7(VS.80).aspx">RichTextBox</a> control. This control gives you a textbox that has functionality similar to the WordPad application found in the Windows OS. It can display formatted pretty well. Aside from the fact that you have to handle all formatting of text in code, RichTextBox it has one major shortcomings: It can only input/output plain text or RTF encoded text. If I wanted to use a RichTextBox control to edit HTML, I would need some way to translate from the source HTML (stored in the DB) to RTF (to be displayed in the RichTextBox) and then back to HTML (to be stored again in the DB). Although I found some components from <a href="http://www.sautinsoft.com/components.php">Sautin Software</a> that seem to do the job, they cost money that I would rather not spend, and add a layer of complexity to my code library that I would rather avoid.</p>
<p>I found a couple of controls that extend the RichTextBox in order to allow input of HTML: <a href="http://www.codeproject.com/cs/miscctrl/htmlrichtextbox.asp">An extended RichTextBox to save and load &#8220;HTML lite&#8221; files</a> by <a href="http://www.codeproject.com/script/Articles/list_articles.asp?userid=3359">Oscar Londoño</a> (Code Project &#8211; For .Net 1.1/VS 2003) and                                                                                                                                              									<a id="_ctl3_samplesBody__ctl4_myCategoryList__ctl6_Linkman2" title="Linkman1" name="Linkman1" href="http://www.windowsforms.net/TrackViews.aspx?ID=186&amp;Type=Samples&amp;Redir=%2fSamples%2fdownload.aspx%3fPageId%3d1%26ItemId%3d186%26tabindex%3d4" target="_self">RichTextBox that Displays XHTML</a> by Eric Voreis. Both of these controls extend the RichTextBox control in the Windows.Forms library so that it can translate on the fly between RTF and HTML code (so you can input HTML code, see it displayed in the RTB and export HTML code). However, both are old and only support a small subset of HTML tags (although this can be extended in the source, it required knowledge of how RTF works). Also, since they use a RichTextBox control for editing and display, the display is similar but not identical to what you would get using a WebBrowser.</p>
<p>The next method that I found for providing this type of error is <a href="http://windowsforms.net/articles/htmleditor.aspx">HTML Editor</a> by Carl Nolan (Microsoft Consulting Services). This control (written in 2003 for .Net 1.1) modifies a WebBrowser control to allow inline editing and display of HTML. It is professionally written, provides support for many HTML tags and does just about everything that I need (and is free). The one problem is that it is pre-.Net 2.0. It uses a WebBrowser control from before this control was included as part of the Windows.Forms library in .Net 2.0 and thus has to reference Win32 calls and perform other types of acrobatics in order to get the control to function properly. This matters to me because it decreases portability of the control (using Mono, for instance), and makes it harder for me to customize and edit.</p>
<p><a title="WebBrowser-based HTML Editor in action" href="http://ellisweb.net/wp-content/uploads/2007/03/html.jpg" rel="lightbox[176]"><img src="http://ellisweb.net/wp-content/uploads/2007/03/html.jpg" alt="WebBrowser-based HTML Editor in action" width="374" height="211" /></a></p>
<p>The control that I am using in the end employs the same general idea used in HTML Editor, but takes advantage of new features (like the native WebBrowser class) provided by the .Net 2.0/3.0 framework and and Visual Studio 2005. <a href="http://www.codeproject.com/KB/edit/editor_in_windows_forms.aspx">A Windows Forms based text editor with HTML output</a> by <a href="http://www.codeproject.com/Members/kevin-delafield">Kevin DeLafield</a> uses a <a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.webbrowser.aspx">WebBrowser</a> control with modified functionality to allow WYSIWYG display and editing of HTML text. It provides all of the functionality that I am looking for and allows for easy modifications and customizations in Visual Studio 2005. I recommend that anyone in need of similar functionality take a look at this control.</p>
<p><img src="file:///C:/DOCUME%7E1/Yaakov/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ellisweb.net/2007/03/wysiwyg-editing-of-html-in-a-windows-forms-control/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Trying Ubuntu, Burning ISOs</title>
		<link>http://ellisweb.net/2007/03/trying-ubuntu-burning-isos/</link>
		<comments>http://ellisweb.net/2007/03/trying-ubuntu-burning-isos/#comments</comments>
		<pubDate>Tue, 06 Mar 2007 19:38:59 +0000</pubDate>
		<dc:creator>Yaakov Ellis</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[cd-rom]]></category>
		<category><![CDATA[iso]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://ellisweb.net/2007/03/trying-ubuntu-burning-isos/</guid>
		<description><![CDATA[Inspired by the 30 Days with Ubuntu article on [H]Consumer (I had been considering trying it out for some time), I went over to the download page on Ubuntu.com, and downloaded a torrent for Ubuntu 6.1 for i386 desktop. Went to sleep. By the time I woke up this morning … <a href="http://ellisweb.net/2007/03/trying-ubuntu-burning-isos/"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>Inspired by the <a href="http://consumer.hardocp.com/article.html?art=MTI5OCwxLCxoY29uc3VtZXI=">30 Days with Ubuntu</a> article on <a href="http://consumer.hardocp.com">[H]Consumer</a> (I had been considering trying it out for some time), I went over to the <a href="http://releases.ubuntu.com/6.10/">download page</a> on <a href="http://www.ubuntu.com/ubuntu">Ubuntu.com</a>, and downloaded a torrent for <a href="http://releases.ubuntu.com/6.10/ubuntu-6.10-desktop-i386.iso.torrent">Ubuntu 6.1 for i386 desktop</a>. Went to sleep. By the time I woke up this morning all 698 MB had finished downloading to my <a href="http://www.westerndigital.com/en/products/products.asp?driveid=242&amp;language=en">My Book Pro</a>. Now all I had to do before trying the Live Boot CD was burn to <a href="http://en.wikipedia.org/wiki/ISO_image">iso image</a> to a CD and stick it into my old laptop.</p>
<p>Problem: I don&#8217;t have any software installed for burning iso images. So far I have been able to get by with using the built in Explorer mechanism for burning data to CDs or DVDs, and for some reason Nero doesn&#8217;t work so well on my current machine. I was able to find some very nifty software (freeware) to help me with this: <a href="http://isorecorder.alexfeinman.com/isorecorder.htm">ISO Recorder</a> by Alex Feinman. This small (360 KB) utility installs quickly and sets a new default behavior for all iso files (also accessible through the right-click menu) to <em>Copy Image to CD</em>. After a confirmation screen, the program immediately starts copying the iso to my waiting CD and is finished within a couple of minutes. This is a very handy piece of software for anyone who would like an easy way to burn an iso image to a CD (Ubuntu or not).</p>
]]></content:encoded>
			<wfw:commentRss>http://ellisweb.net/2007/03/trying-ubuntu-burning-isos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Global Application Error Handling in Windows Forms Applications</title>
		<link>http://ellisweb.net/2007/03/global-application-error-handling-in-windows-forms-applications/</link>
		<comments>http://ellisweb.net/2007/03/global-application-error-handling-in-windows-forms-applications/#comments</comments>
		<pubDate>Fri, 02 Mar 2007 11:30:47 +0000</pubDate>
		<dc:creator>Yaakov Ellis</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[windows forms]]></category>
		<category><![CDATA[exceptions]]></category>

		<guid isPermaLink="false">http://ellisweb.net/2007/03/global-application-error-handling-in-windows-forms-applications/</guid>
		<description><![CDATA[In my current project, I would like to log all Windows Forms errors, including those that are not caught explicitly. Lacking a built-in method (like Application_Error in the Global.asax file of an ASP.net application), I needed another way to easily catch all errors. After a bit of searching, I found … <a href="http://ellisweb.net/2007/03/global-application-error-handling-in-windows-forms-applications/"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>In my current project, I would like to log all Windows Forms errors, including those that are not caught explicitly.  Lacking a built-in method (like Application_Error in the Global.asax file of an ASP.net application), I needed another way to easily catch all errors. After a bit of searching, I found a solution by Craig Andera: <a href="http://www.pluralsight.com/blogs/craig/archive/2004/06/13/1455.aspx">WinForms Catch-All Exception Handling</a>. Here is the short version:</p>
<p>In the main entry point for your application (found by default in the Progrsm.cs file, Main() method), add a listener for the Application.ThreadException event.</p>
<pre class="c#" name="code">[STAThread]
static void Main() {
  Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
  Application.Run(new Form1());
}

private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) {
  // Handle Exception
}</pre>
<p>This should allow you to catch all Exceptions in your application that were not caught at the source.</p>
]]></content:encoded>
			<wfw:commentRss>http://ellisweb.net/2007/03/global-application-error-handling-in-windows-forms-applications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cannot Access a Disposed Object</title>
		<link>http://ellisweb.net/2007/01/cannot-access-a-disposed-object/</link>
		<comments>http://ellisweb.net/2007/01/cannot-access-a-disposed-object/#comments</comments>
		<pubDate>Sun, 28 Jan 2007 16:52:45 +0000</pubDate>
		<dc:creator>Yaakov Ellis</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[windows forms]]></category>
		<category><![CDATA[.net]]></category>

		<guid isPermaLink="false">http://ellisweb.net/2007/01/cannot-access-a-disposed-object/</guid>
		<description><![CDATA[In a Windows Forms application that I am working on, I had the following scenario: while the main form (Main.cs) is loading, I prompt the user to prove their credentials. If they are unable to do so, the form is closed (using this.close) and application execution is halted. The problem … <a href="http://ellisweb.net/2007/01/cannot-access-a-disposed-object/"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>In a Windows Forms application that I am working on, I had the following scenario: while the main form (Main.cs) is loading, I prompt the user to prove their credentials. If they are unable to do so, the form is closed (using <em>this.close</em>) and application execution is halted.</p>
<p>The problem is, when I first tried this, I an exception was thrown in <em>Program.cs</em> on the following line:</p>
<pre name="code" class="c#:nocontrols">Application.Run(new Main());</pre>
<p>The exception was of type <em>System.ObjectDisposedException</em>, and the accompanying message was &#8220;Cannot access a disposed object&#8221;.</p>
<p>What happened? According to the official documentation, the method System.Windows.Forms.Application.Run(Form) has the following purpose: &#8220;Begins running a standard application message loop on the current thread, and makes the specified form visible.&#8221; When this line of code is called, it first instantiates a new instance of the given Windows.Form implementation (in my case, Main.cs) and after it is instantiated, sets the Form.Visible parameter to true, thereby showing the form. In my case, during the instantiation of the form, the Close() method on the form was called, which disposes the Forms object. So when Program.cs attempts to set Main.Visible = true, Main is already disposed and the above error is thrown.</p>
<p>What is the workaround? I can think of two ways off the top of my head (the first one is the one that I ultimately used). Can you think of any others?</p>
<ol>
<li>Substitute the line in Program.cs with the following. Here the Main class is instantiated first, and only if it is still in existence and not disposed will Application.Run be called. Thus, if Main is closed during instantiation, Application.Run will never be called and the application will close on its own.</li>
</ol>
<pre class="c#" name="code">Main main = new Main();
if (main != null &amp;&amp; !main.IsDisposed) {
  Application.Run(main);
}</pre>
<ol start=2>
<li>Do not call the user authentication code during the instantiation of the main Form of the application. Instead, call it in some event (like Activate) that is tied directly to the creation of the Form, but is not part of the initial instantiation code. In this case the class will instantiate, Application.Run will execute, and only after will the user authentication (and possible subsequent disposal of the form and exit from the application) take place.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ellisweb.net/2007/01/cannot-access-a-disposed-object/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>SQLce DLLs to Include When Deploying</title>
		<link>http://ellisweb.net/2007/01/sqlce-dlls-to-include-when-deploying/</link>
		<comments>http://ellisweb.net/2007/01/sqlce-dlls-to-include-when-deploying/#comments</comments>
		<pubDate>Thu, 18 Jan 2007 10:26:57 +0000</pubDate>
		<dc:creator>Yaakov Ellis</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlce]]></category>

		<guid isPermaLink="false">http://ellisweb.net/2007/01/sqlce-dlls-to-include-when-deploying/</guid>
		<description><![CDATA[SQL Server Compact Edition is advertised as a small embedded database that can easily be included with a Windows Forms application during deployment. According to some of the informal documentation online, one of the ways in which this is suppossed to be possible is to include the SQLce DLLs in … <a href="http://ellisweb.net/2007/01/sqlce-dlls-to-include-when-deploying/"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.microsoft.com/sql/editions/compact/default.mspx">SQL Server Compact Edition</a> is advertised as a small embedded database that can easily be included with a Windows Forms application during deployment. According to some of the informal documentation online, one of the ways in which this is suppossed to be possible is to include the SQLce DLLs in the application file of your deployment. However, the official documentation (SQl Server CE <a href="http://www.microsoft.com/downloads/details.aspx?familyid=E6BC81E8-175B-46EA-86A0-C9DACAA84C85&amp;displaylang=en">Books Online</a>) only mentions the options of installing the product via .msi on the client machine, or using a Click-Once application.</p>
<p>I would much rather deploy without having to do Click-Once or a full-install of SQLce. So I tried copying in the DLLs from the C:\Program Files\Microsoft SQL Server Compact Edition\v3.1\ on my computer into the application directory during deployment, and it worked (!). There are 8 DLLs included, and through trial-and-error I was able to determine that (at least in my case) only four DLLs were really needed when deploying:</p>
<ol>
<li>sqlceme30.dll</li>
<li>sqlceqp30.dll</li>
<li>sqlcese30.dll</li>
<li>System.Data.SqlServerCe.dll</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ellisweb.net/2007/01/sqlce-dlls-to-include-when-deploying/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

