<?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>Tecnotertulia &#187; Development</title>
	<atom:link href="http://www.tecnotertulia.com/category/development/feed" rel="self" type="application/rss+xml" />
	<link>http://www.tecnotertulia.com</link>
	<description>Observations at the Humanities and Technology Crossroads</description>
	<lastBuildDate>Mon, 05 Dec 2011 17:58:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>TFTP ARP Timeout LTSP Ubuntu</title>
		<link>http://www.tecnotertulia.com/development/tftp-arp-timeout-ltsp-ubuntu/229</link>
		<comments>http://www.tecnotertulia.com/development/tftp-arp-timeout-ltsp-ubuntu/229#comments</comments>
		<pubDate>Thu, 03 Feb 2011 21:14:43 +0000</pubDate>
		<dc:creator>Gustave Stresen-Reuter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tecnotertulia.com/?p=229</guid>
		<description><![CDATA[Just a quick note for those experiencing the same issue. After a fresh install of an LTSP server from the Ubuntu 10.10 (Maverick Meerkat) alternate CD I was unable to connect from any of the thin clients. I kept getting a TFTP timeout (but DHCP was clearly working). After checking all the variables mentioned in [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick note for those experiencing the same issue. After a fresh install of an LTSP server from the Ubuntu 10.10 (Maverick Meerkat) alternate CD I was unable to connect from any of the thin clients. I kept getting a TFTP timeout (but DHCP was clearly working).</p>

<p>After checking all the variables mentioned in <a href="https://help.ubuntu.com/community/UbuntuLTSP/Troubleshooting/TFTP">this article</a>, I discovered that the filename for pxelinux.0 in /etc/ltsp/dhcpd.conf ended in .tmp as in: <code>filename "/ltsp/i386/pxelinux.0.tmp";</code>. I don&#8217;t know if this is a bug in the installation program or what, but removing &#8220;<strong>.tmp</strong>&#8221; worked like a charm and everything is now up and running, and I&#8217;m thrilled!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecnotertulia.com/development/tftp-arp-timeout-ltsp-ubuntu/229/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working Remotely</title>
		<link>http://www.tecnotertulia.com/development/working-remotely/222</link>
		<comments>http://www.tecnotertulia.com/development/working-remotely/222#comments</comments>
		<pubDate>Sun, 28 Nov 2010 13:01:04 +0000</pubDate>
		<dc:creator>Gustave Stresen-Reuter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tecnotertulia.com/?p=222</guid>
		<description><![CDATA[After 7 years of working as a Web Developer remotely from the island of Gran Canaria (and nearly 20 years in some IT related position), I started teaching IT to high school students here in the Canary Islands. Working with teens has been an eye-opener, to say the least&#8230; More than 50% of my students [...]]]></description>
			<content:encoded><![CDATA[<p>After 7 years of working as a Web Developer remotely from the island of Gran Canaria (and nearly 20 years in some IT related position), I started teaching IT to high school students here in the Canary Islands. Working with teens has been an eye-opener, to say the least&#8230; </p>

<p>More than 50% of my students had never used email and had never heard of Netiquette at the start of the school year. Although the curriculum from prior years included the creation of PowerPoint presentations, writing blogs, and modifying HTML, not one student knew how to set a margin or a tab in a word processing application. I was agahst! How could such gaps in basic IT knowledge be tolerated? Where was the curriculum designer? Who gave all these kids email addresses without making them take (and pass) a test on Netiquette first?</p>

<p>To their credit, what they did learn (creating videos, for example) they learned pretty well. Nevertheless, in the business world (and for the foreseeable future) formal business communication (contracts, proposals) takes place in writing, not video, and via email, not via <a href="http://tuenti.com">Tuenti</a>. Furthermore, these students, moreso than those who came before, absoultely MUST master computer mediated communication if they ever hope to succeed in their careers.</p>

<p>For these reasons I decided to conduct a series of interviews with some of my former (and present) clients, co-workers, and related software developers. In these interviews we discuss a variety of aspects of working remotely. Most of the people I spoke with coincided on one thing in particular: being able to express yourself clearly, in writing, is <b>the deciding factor</b> of whether or not to work with you. One of the interviewees put it this way: &#8220;I am going to quickly look for ways to eliminate 95% of [the resumes that cross my desk].&#8221; Expressing yourself poorly in writing makes you a likely target for elimination and this series of interviews is intended to drive that point home.</p>

<p>Now that I&#8217;ve edited down the videos and watched them all myself, I&#8217;m surprised how consistently the following themes came up:</p>

<ul>
    <li>There must be trust between both parties, but it&#8217;s not that hard to achieve.</li>

    <li>Expressing yourself clearly and effectively in writing is crucial to your success.</li>

    <li>Most problems that arise are the result of a lack of trust.</li>
</ul>

<p>The café where I recorded most (but not all) of these interviews was my favorite corner café here in Las Palmas: <a href="http://www.coffeebreaklaspalmas.com">Coffee Break</a>.</p>

<p>The interviews that follow have been edited down to fit within the 15 minute maximum allowed by YouTube.com, but there was a lot of great stuff left on the cutting room floor&#8230; Click the names of each person to watch the video and enjoy!</p>

<ul>
    <li><a href="http://www.youtube.com/watch?v=wjOtjTjOyc8" title="Click to watch the interview">Jim Devereux</a>, Director of IT for <a href="http://www.hinshawlaw.com">Hinshaw &#038; Culbertson LLP</a>: &#8220;&#8221;</li>

    <li><a href="http://www.youtube.com/watch?v=NcD_96N1nk0" title="Click to watch the interview">Geoff Hoffman</a>, Web Developer (and Designer): &#8220;It&#8217;s important to be able to formulate a complete sentence&#8230;&#8221;</li>

    <li><a href="http://www.youtube.com/watch?v=l8G7pvid3pc" title="Click to watch the interview">Rich Siegel</a>, CEO of Bare Bones Software, makers of <a href="http://barebones.com/products/bbedit/">BBEdit</a>: &#8220;There is no more valuable skill than being able to express yourself clearly and effectively in writing&#8221;</li>

    <li><a href="http://www.youtube.com/watch?v=JKCnVWoLQ_4" title="Click to watch the interview">Ricardo Uribe</a>, CIO of <a href="http://www.cgnet.com">CGNet</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tecnotertulia.com/development/working-remotely/222/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Snow Leopard Apache exit signal Segmentation fault (11)</title>
		<link>http://www.tecnotertulia.com/development/snow-leopard-apache-exit-signal-segmentation-fault-11/183</link>
		<comments>http://www.tecnotertulia.com/development/snow-leopard-apache-exit-signal-segmentation-fault-11/183#comments</comments>
		<pubDate>Wed, 17 Mar 2010 10:48:38 +0000</pubDate>
		<dc:creator>Gustave Stresen-Reuter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tecnotertulia.com/development/snow-leopard-apache-exit-signal-segmentation-fault-11/183</guid>
		<description><![CDATA[Following my upgrade to Snow Leopard, Apache started producing segfaults for virtually any request. I tried reinstalling the Entroyp.ch PHP package (which doesn&#8217;t work with Snow Leopard), commenting LoadModule php5_module in /etc/apache2/httpd.conf, and a host of other things but the thing that ended up solving the problem for me was: Be sure to use the [...]]]></description>
			<content:encoded><![CDATA[<p>Following my upgrade to Snow Leopard, Apache started producing segfaults for virtually any request. I tried reinstalling the Entroyp.ch PHP package (which doesn&#8217;t work with Snow Leopard), commenting LoadModule php5_module in /etc/apache2/httpd.conf, and a host of other things but the thing that ended up solving the problem for me was:</p>

<ol>
<li>Be sure to use the PHP that comes with Snow Leopard (leave LoadModule php5_module <em>un</em>commented &#8211; <em>don&#8217;t</em> use the entroyp.ch package, sorry Marc!)</li>
<li>Comment out LoadModule dav_svn_module /opt/subversion/lib/svn-apache/mod_dav_svn.so</li>
</ol>

<p>The bottom line is, any modules that were not built against the current (Snow Leopard) version of Apache will probably cause some sort of segfault.</p>

<p>Since the version of PHP that comes with Snow Leopard may be missing some of your favorite extensions, here&#8217;s a link to some instructions on how to include them (untested by me): <a href="http://adam.yanalunas.com/blog/archives/62">Making Snow Leopard’s PHP 5.3.0 usable in the real world</a></p>

<p>I sure hope this saves someone the 3 hours of pointless poking around that I lost this morning!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecnotertulia.com/development/snow-leopard-apache-exit-signal-segmentation-fault-11/183/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP BBEdit Clipping Set Updated</title>
		<link>http://www.tecnotertulia.com/development/php-bbedit-clipping-set-updated/166</link>
		<comments>http://www.tecnotertulia.com/development/php-bbedit-clipping-set-updated/166#comments</comments>
		<pubDate>Wed, 01 Jul 2009 08:27:12 +0000</pubDate>
		<dc:creator>Gustave Stresen-Reuter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tecnotertulia.com/uncategorized/php-bbedit-clipping-set-updated/166</guid>
		<description><![CDATA[A new version of the PHP BBEdit Clipping Set is available for download (for free) immediately: http://tedmasterweb.com/php-bbedit-clipping-set/ HIGHLIGHT: The new set contains more than 9,200 clippings (that&#8217;s about 3,000 more than the previous version). Changes in this version all clippings (optionally) conform as closely as possible to the Zend/PEAR style guides removed hundreds of duplicate [...]]]></description>
			<content:encoded><![CDATA[<p>A new version of the PHP BBEdit Clipping Set is available for download (for free) immediately:</p>

<p><a href="http://tedmasterweb.com/php-bbedit-clipping-set/">http://tedmasterweb.com/php-bbedit-clipping-set/</a></p>

<p>HIGHLIGHT: The new set contains more than 9,200 clippings (that&#8217;s about 3,000 more than the previous version).</p>

<h1>Changes in this version</h1>

<ul>
<li><p>all clippings (optionally) conform as closely as possible to the Zend/PEAR style guides</p></li>
<li><p>removed hundreds of duplicate clippings (mostly constants)</p></li>
<li><p>removed &#8220;cruft&#8221; (primarily from Snippets and Control Structures)</p></li>
<li><p>reorganized clippings into more logical folder structures</p></li>
<li><p>based this set on a very recent version of the manual</p></li>
<li><p>the set now includes more than 9,200 functions, constants, methods, properties, snippets, control structures and more</p></li>
<li><p>added additional &#8220;interactive&#8221; functionality to some date functions (I could never remember exactly which switches to use when formatting dates)</p></li>
<li><p>the set now includes class methods and properties</p></li>
<li><p>renamed the clipping set to just &#8220;PHP.php&#8221; (except for the &#8220;Loose&#8221; version, see page for details)</p></li>
</ul>

<p>+++</p>

<p>I hope you enjoy and be sure to let me know if you find any bugs or have any requests for improvement!</p>

<p>Sincerely,</p>

<p>Ted Stresen-Reuter

http://tedmasterweb.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecnotertulia.com/development/php-bbedit-clipping-set-updated/166/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AdSense Arbitrage Experiment</title>
		<link>http://www.tecnotertulia.com/development/adsense-arbitrage-experiment/165</link>
		<comments>http://www.tecnotertulia.com/development/adsense-arbitrage-experiment/165#comments</comments>
		<pubDate>Wed, 10 Jun 2009 16:54:56 +0000</pubDate>
		<dc:creator>Gustave Stresen-Reuter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tecnotertulia.com/development/adsense-arbitrage-experiment/165</guid>
		<description><![CDATA[I&#8217;ve heard many stories about people making lots of money via Google&#8217;s AdWords and AdSense programs. Most people make this income via AdSense Arbitrage: buying AdWords for less than the income generated by the AdSense ads appearing on your site. You pocket the difference. I don&#8217;t believe 1% of what I hear so I decided [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve heard many stories about people <a href="http://www.wolf-howl.com/sem/adsense-arbitrage-tips-tricks-secrets/">making lots of money via Google&#8217;s AdWords and AdSense</a> programs. Most people make this income via <a href="http://webmasterseoblog.blogspot.com/2009/03/adsense-arbitrage-is-dead.html">AdSense Arbitrage</a>: buying AdWords for less than the income generated by the AdSense ads appearing on your site. You pocket the difference.</p>

<p>I don&#8217;t believe 1% of what I hear so I decided to research these claims. While researching I stumbled on <a href="http://www.spyfu.com/">Spyfu</a> which offers a list of the <a href="http://www.spyfu.com/TopList.aspx?listId=3">most expensive keywords</a> being used in AdWords. The astute reader familiar with Google&#8217;s AdWords and AdSense programs will immediately recognize the arbitrage opportunity.</p>

<p>Living in a vacation paradise, having a large selection of potential &#8220;stock&#8221; photos, knowing something about SEO, and having just received a gift certificate for 50€ in AdWords, I decided to try a little experiment. According to Spyfu.com, &#8220;hotels&#8221;, &#8220;travel&#8221;, &#8220;flights&#8221;, &#8220;rental&#8221;, &#8220;vacations&#8221;, &#8220;holidays&#8221; are among the higher paying keywords that one would associate with my collection of stock photos.</p>

<p>The goal is/was to spend (invest) the 50€ on AdWords at rates lower than what other advertisers are paying to have their ads appear on my site, and then hope that users either buy a license for my photographs or click on an advertisement. This is classic &#8220;arbitrage&#8221; but avoids breaking Google&#8217;s AdSense guidelines because the primary goal is to sell licenses and give users some pretty pictures to look at.</p>

<p>I set up a &#8220;<a href="http://tedmasterweb.com/stock-photography/">stock photography</a>&#8221; subsite on tedmasterweb.com with lots of pictures of landscapes here in the islands, in other parts of Europe and one of my dad&#8217;s farm outside Chicago. Nothing complicated, but fine tuned for SEO, ease of use, and directed at potential stock photo buyers or anyone who likes to look at pretty pictures of places they are going to visit.</p>

<p>At first the ads appearing on the site were all for financial-related things (like masters degrees and stock trading systems). I changed the subdirectory from &#8220;stock&#8221; to &#8220;stock-photography&#8221; and the ads, thankfully, changed to reflect more travel and graphic arts related offers. I also added a AdSense placement on the landing page (rather than just on the enlargement pages). These two changes improved my &#8220;conversions&#8221;. In just a couple of days I had 3 clicks on ads (whereas prior to the 50€ I went months without a single click!). This great article on another <a href="http://www.memwg.com/keyword-elite-adsense-arbitrage-experiment-part-7/">AdSense Arbitrage Experiment</a> corroborates my findings (money can be made, but you&#8217;re likely going to lose at first).</p>

<p>In the end, as you might have guessed if you have any experience at all in this field, the experiment proved what any reasonable person would assume: My ROI on this so far is a loss of 48€ (plus the several hours I put in to setting everything up, which I could have billed at 70€/hour for any of my clients).</p>

<p>The next step, of course, will be to improve the quality of the textual content on each page so that it targets holiday travelers more directly and gets them to link to these pictures (and ultimately click on the ads too) and to target my keywords better (so that only very interested people click on my site). I&#8217;ll post an update at some point so stay tuned!</p>

<p>But before I go&#8230;</p>

<p>I also signed up for Google&#8217;s AdSense for domains since I had several domains I&#8217;d purchased as part of this same experiment (but a more developed version of it). We&#8217;ll see if this provides any additional income. Here are the domains in case you&#8217;re curious:</p>

<ol>
<li><a href="http://stock-holiday-pictures.com">Stock holiday pictures</a> (<a href="http://stockholidaypictures.com">without hyphens</a>)</li>
<li><a href="http://stockholidayphotographs.com">Stock holiday photographs</a></li>
<li><a href="http://stock-photography-royalty-free.com">Stock photography royalty free</a></li>
<li><a href="http://stock-vacation-pictures.com">Stock vacation pictures</a> (<a href="http://stockvacationpictures.com">without hyphens</a>)</li>
<li><a href="http://stockvacationphotographs.com">Stock vacation photographs</a></li>
</ol>

<p>We&#8217;ll see how all this turns out, but the next time someone tells you they&#8217;re bringing in 4,000€/month in AdSense income, tell them you want to see their AdSense account before you&#8217;ll believe it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecnotertulia.com/development/adsense-arbitrage-experiment/165/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET for PHP Fusebox Developers</title>
		<link>http://www.tecnotertulia.com/development/aspnet-for-php-fusebox-developers/158</link>
		<comments>http://www.tecnotertulia.com/development/aspnet-for-php-fusebox-developers/158#comments</comments>
		<pubDate>Thu, 30 Apr 2009 17:20:35 +0000</pubDate>
		<dc:creator>Gustave Stresen-Reuter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tecnotertulia.com/development/aspnet-for-php-fusebox-developers/158</guid>
		<description><![CDATA[I recently implemented a newsletter subscription form in ASP.NET (2.0) for the CGIAR Secretariat on behalf of CGNET. This is the second project I&#8217;ve done in ASP.NET for CGIAR. I&#8217;ve never considered myself a skilled ASP developer and like many, picked up my ASP skills based on code I&#8217;d seen on the intertubes and via [...]]]></description>
			<content:encoded><![CDATA[<p>I recently implemented a <a href="http://www.cgiar.org/newsroom/subscription/">newsletter subscription
form</a> in <a href="http://www.asp.net/">ASP.NET</a> (2.0) for the <a href="http://www.cgiar.org/"
title="The Consultative Group on International Agricultural Research - One of the principal members of the group is the World Bank">CGIAR
Secretariat</a> on behalf of <a href="http://www.cgnet.com/">CGNET</a>. This is
the second project I&#8217;ve done in ASP.NET for CGIAR. I&#8217;ve never considered myself
a skilled ASP developer and like many, picked up my ASP skills based on code
I&#8217;d seen on <a href="http://vodpod.com/watch/679727-ted-stevens-the-internet-is-a-series-of-tubes-daily-show">the
intertubes</a> and via <a href="http://en.wikipedia.org/wiki/Language_transfer">transfer from related
languages</a>. In other words, prior to this project, I was a somewhat capable
ASP <a href="http://en.wikipedia.org/wiki/Spagetti_code">spaghetti
coder</a>.</p>

<p>Tired of producing mediocre code and eager to learn what this whole .Net
thing was all about, I decided to invest some time learning how to write better
ASP and take advantage of as many features of .Net as I could. Armed with two
really good books on the subject (<a href="http://www.wrox.com/WileyCDA/WroxTitle/Beginning-ASP-NET-3-5-In-C-and-VB.productCd-047018759X.html">Beginning
ASP.NET 3.5 in C# and VB</a> and <a href="http://oreilly.com/catalog/9780596529567/">Programming ASP.NET 3.5, 4th
Edition</a>), I learned a lot about the .Net revolution and in the end I
significantly improved the quality of my code.</p>

<p>.Net borrows heavily from <a href="http://struts.apache.org/">other</a> <a href="http://fusebox.org/">MVC-like</a> <a href="http://www.mustap.com/phpzone_post_73_top-10-php-mvc-frameworks">frameworks</a>.
I was surprised by <strong>the number of similarities between the ASP.NET-way
of doing things and the <a href="http://fusebox.org/go/getting-started/what-is-fusebox"
title="I'm referring mostly to Fusebox 3, which was first released October 2001, more than 4 years before the first official release of ASP.NET!">Fusebox-way</a>
of doing things</strong>. The rest of this post examines some of these
similarities and other aspects of working with ASP.NET. This is mostly an
examination of ASP.NET from a (PHP) Fusebox developers point of view.</p>

<h3>The Project</h3>

<p>The CGIAR Secretariat is responsible for <a href="http://www.cgiar.org">www.cgiar.org</a>. The <a href="http://www.cgiar.org/newsroom/">CGIAR Newsroom</a> is one of the primary
sections of their web site. It includes an <a href="http://www.cgiar.org/newsroom/releases/">aggregate RSS news feed</a> of
all news items coming out of many of the <a href="http://www.cgiar.org/centers/">CGIAR centers</a>. Since many people still
are unaware of the advantages of RSS, the CGIAR Secretariat asked if we could
set up a system that would allow people to <a href="http://www.cgiar.org/newsroom/subscriptions/">subscribe to the feed via
email</a>. Specifically, the system we set up allows people to subscribe and/or
unsubscribe via cgiar.org which then automatically sends periodic emails of
recently added news items (as they&#8217;re added, of course).</p>

<h3 id="the_bottom_line">The Bottom Line</h3>

<p>As an &#8220;experienced&#8221; web application developer I very much appreciated the
ASP.NET-way of doing things. There was nothing in this project that ASP.NET
wasn&#8217;t able to handle elegantly and more or less efficiently. The project
consisted of implementing the following features: </p>

<ul>
  <li>A public <a href="http://www.cgiar.org/newsroom/subscriptions/">subscribe
    and unsubscribe form</a> with CAPTCHA</li>
  <li>A nightly script that produces a notification email, with alternate views
    (plain text and html), consisting of news items that had not been sent in
    prior emails (which implies keeping track of what&#8217;s been sent and what
    hasn&#8217;t)</li>
  <li><del>A password protected administration interface</del></li>
</ul>

<p>The entire project was completed in about 80 hours (including an initial
version of the administration interface which was later tabled).</p>

<p>If given the choice of doing the same project in PHP Fusebox, assuming I had
the same knowledge and experience with PHP that I had with ASP when I started,
<strong>would I have chosen PHP Fusebox over ASP.NET?</strong> Maybe&#8230;</p>

<h3 id="master-files">Master Pages</h3>

<p>One of the goals of any application framework is to maximize code reuse (and
conversely, minimize code duplication). Functions (methods) are one example of
how this is accomplished, but when it comes to the presentation level,
developers often find they need a more powerful programming model. Both ASP.NET
and Fusebox (and many other web application frameworks) provide tools
<em>capable</em> of complete solutions. In ASP.NET, <a href="http://msdn.microsoft.com/en-us/library/wtxbf3hh.aspx">a Master Page</a>
is a template for all the pages of a site although its functionality goes
beyond a simple templating engine. Master Pages also let you define &#8220;behaviors&#8221;
common to all pages, similar, somewhat, to the Fusebox 3 <i>fbx_Settings</i>
file or the Fusebox 4 <i>fusebox.init</i> file. </p>

<p>A powerful templating engine will frequently go beyond &#8220;one layer&#8221; and allow
the developer to subdivide sections of the Master to be handled by other parts
of the application. ASP.NET offers this functionality directly and at least <a href="https://saywire.com">one project I&#8217;ve worked on in Fusebox</a> had the
same functionality. I found a few opportunities to use this feature on this
project.</p>

<p>Fusebox does not offer a templating engine out of the box, but you can
easily create much of this capability in Fusebox 4 (and to some degree in
Fusebox 3) using Content Variables and a &#8220;layout&#8221; circuit. Most projects I work
on offer some such circuit.</p>

<p>In the end I got a lot of milage out of Master Pages for this project and
hope to be able to use them in future projects for <a href="http://www.cgiar.org">CGIAR</a>.</p>

<h3 id="postback">Postback</h3>

<p>By default, every ASP.NET page contains a form that executes on the server. The
value of the &#8220;action&#8221; attribute for the form is the current file. Microsoft has
termed this approach &#8220;postback&#8221; because you post the form back to the same
document that created it. In some respects this is similar to the Fusebox
implementation of the <a href="http://en.wikipedia.org/wiki/Front_controller">Front Controller design
pattern</a>, where every request is for the same server-side script (e.g.:
<i>/index.php</i>) followed by a Query String containing directions on what
files, functions, and procedures to execute. </p>

<p>ASP.NET offers the developer server-side elements knows as <a href="http://www.w3schools.com/ASPNET/control_panel.asp">panels</a>. Panels are
&#8220;controls&#8221; (elements?) that contain other controls. By setting the visible
property of a panel you can control whether or not its contents are visible on
the page. For the CGIAR project mentioned above, I used this technique to
display either the subscription form or the &#8220;thank you&#8221; message following a
successful subscription. I suppose that, if each ASP.NET page is the equivalent
of a Fusebox circuit, that each panel <em>could be</em> the equivalent of a
Fuseaction. You would simply set the display for all for all of them to false
(except the default fuseaction ;-) ) and then display them as needed. Coming
from Fusebox, I found the concept very easy to grasp.</p>

<h3 id="code_behind">Code-behind</h3>

<p>Microsoft made an attempt to separate application logic from presentation with
.Net. In my opinion, they succeeded. </p>

<p>In order to minimize the amount of raw code found in HTML, .Net provides
something known as &#8220;code-behind&#8221; pages, which are essentially includes with the
same name as the file they are attached to. The idea is that your application
code goes in the code-behind page and if you need to modify the presentation
(the HTML) from within the application code, you do so by referencing elements
in your HTML page via their ID attribute (this is an oversimplification but
summarizes the approach).</p>

<p>Fusebox, on the other hand, tries to separate code by prefixing file names
with one of <i>dsp_</i>, <i>qry_</i>, <i>act_</i> (and sometimes <i>lyt_</i>).
<i></i></p>

<ul>
  <li><i>qry_</i> files contain datasource queries and (usually) return some
    sort of object or array echoed to the browser by a <i>dsp_</i> file. </li>
  <li><i>act_</i> files are for those instances in which you need process data
    prior to executing a query or echoing to the browser.</li>
  <li><em>lyt_</em> files are, in essence, the same as Master Pages in
  ASP.NET.</li>
</ul>

<p>In ASP.NET the &#8220;HTML&#8221; files contain a LOT of .Net namespaced elements. This
means the files can be completely valid XHTML (with the single, notable
exception of the Processing Instructions found at the top of each page). The
benefit is that these files are suddenly very portable and can be consumed by
any system capable of reading XML.</p>

<p>If you wanted to reproduce this ASP.NET functionality in Fusebox, you would
need to write a plug-in that parses the <i>dsp_</i> files looking for &lt;fbx:
elements and responds accordingly. You could put all of your code in
<i>act_</i> files which would essentially turn them into code-behind files. Now
<em>there&#8217;s</em> potential open source time sucker!</p>

<h3>Data Controls</h3>

<p>As one would expect, the <a href="http://www.eggheadcafe.com/tutorials/aspnet/0af43149-8fa7-4ab8-8d08-e885090f1a8d/aspnet-data-control-seri.aspx">data
controls</a> are very complete, but figuring out how to do something like
nesting GridViews was not obvious and were it not for a <a href="http://msdn.microsoft.com/en-us/library/aa992038(VS.80).aspx">Nested
GridView walk-through article</a> on MSDN, I never would have been able to
figure out how to do it. Furthermore, I&#8217;m not convinced executing sql on EVERY
ROW of a record set is really a good idea (the authors of the walk-through
admit this is not the best approach, but only as it concerns caching&#8230;). </p>

<p>Much of the <a href="http://www.cgiar.org/newsroom/">CGIAR Newsroom</a>
revolves around their RSS feed (which is a compilation of feeds from all of the
CGIAR Centers). ASP.NET 2.0 and above include controls for using XML as a data
source and thus facilitating the display of XML data in a web page. </p>

<p>Unfortunately, in version 2.0 of .Net (and possibly higher), using XML as a
data source only allows you to <em>display</em> the data. It does
<strong>not</strong> allow you to use the built-in INSERT, UPDATE, and DELETE
features of the GridView control. There are <a href="http://forums.asp.net/p/945423/1273232.aspx">work-arounds for
implementing this missing functionality</a> but I have to wonder if you save
any time hacking in the functionality vs. building the entire administration
interface the &#8220;old&#8221; way (which can be done pretty quickly using XSLT). By my
estimates, it&#8217;s a draw, at best.</p>

<h3 id="aspdotnet_advantages">ASP.NET Advantages</h3>

<p>For my needs, web controls, validation in particular, significantly reduce
web application development time. I simply cannot express how much I like the
validation controls and WISH PHP had something similar! </p>

<p><a href="http://en.wikipedia.org/wiki/IntelliSense">IntelliSense</a> greatly
speeds up coding &#8211; Microsoft offers several <a href="http://www.microsoft.com/Express/"
title="WARNING: the page requires the Silverlight plugin - idiots">free (web)
application development tools</a> that work quite well and are more than
adequate for the projects I usually work on and many include IntelliSense.</p>

<p>I don&#8217;t think I could have completed this project as quickly without
IntelliSense.</p>

<h3 id="aspdotnet_ambiguities">ASP.NET Ambiguities and Disadvantages</h3>

<p>Since no language is free of sin, here is my list of things that got the
best of me while working on this project:</p>

<ul>
  <li>web.config cannot be part of code repository since it is machine
    dependent. If application configuration options are so different between
    deployment environments, then maybe the author of the application should
    consider using a different development environment. I would prefer to have
    the application configuration code right in the application tucked into
    code that &#8220;sniffs&#8221; the environment and configures accordingly. This makes
    for MUCH more portable code.</li>
  <li>.Net developers frequently publish their source code, but it usually
    needs to be compiled so unless you&#8217;re into that or have the time to learn
    how to do it (and do it right), you won&#8217;t find the same kind of huge Open
    Source community of code that exists for PHP</li>
  <li>ASP.NET 2.0 includes some Authentication and Authorization controls, but
    like most stuff like this, you have to do things the ASP.NET-way or you
    can&#8217;t use these controls. In other words, there is no (apparent) way to
    retrofit these controls onto existing authentication mechanisms. In the end
    this is probably a good thing since most existing authentication methods
    are not very secure, but in the real world most clients simply are not
    willing to put money into changing existing systems unless you can clearly
    demonstrate they are broken.</li>
  <li>One of the main complaints of Fusebox 4 was the XML files. Rather than
    being used simply for configuration, you could easily add business logic to
    them. More than one programmer has asked herself: &#8220;Why bother with XML to
    represent classes? Why not just use classes directly?&#8221; I must say, when
    programming in ASP.NET, I often feel like I&#8217;m simply setting application
    configuration parameters which, for anything but the most basic
    interactions, makes programming harder (and possibly more time-consuming)
    rather than easier (and faster) since you have to have a clear
    understanding of what state the application is in at the exact point where
    your code appears. This can be harder than it seems.</li>
</ul>

<p>In the end, if I had to do it all over again (and had the choice), I would
probably stick with PHP Fusebox but I&#8217;m grateful I had the opportunity to
improve my knowledge ASP.NET and I wish the CGIAR Secretariat the best with
their new system. </p>

<h3>Additional Reading and Links</h3>

<p><a href="http://www.packtpub.com/article/mixing-asp.net-webforms-and-asp.net-mvc">Convert
ASP.NET applications into real MVC frameworks</a></p>

<p><a href="http://www.adobe.com/devnet/coldfusion/articles/fusebox_basics.html">Fusebox
Basics</a></p>

<p><a href="http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks">Comparison
of Web Application Frameworks</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecnotertulia.com/development/aspnet-for-php-fusebox-developers/158/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cross-platform Table-free Web Design</title>
		<link>http://www.tecnotertulia.com/development/cross-platform-table-free-web-design/143</link>
		<comments>http://www.tecnotertulia.com/development/cross-platform-table-free-web-design/143#comments</comments>
		<pubDate>Fri, 22 Aug 2008 20:52:46 +0000</pubDate>
		<dc:creator>Gustave Stresen-Reuter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tecnotertulia.com/development/cross-platform-table-free-web-design/143</guid>
		<description><![CDATA[I&#8217;ve been experimenting with a couple of tools for creating cross-platform web design. I&#8217;m quite happy with the results (which will be used on production sites in the coming weeks). I&#8217;m no longer plagued by the woes of differing font sizes, incorrect positioning, CSS hacks, etc. that makes a web developers life misery. I am [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been experimenting with a couple of tools for creating cross-platform web design. I&#8217;m quite happy with the results (which will be used on production sites in the coming weeks). I&#8217;m no longer plagued by the woes of differing font sizes, incorrect positioning, CSS hacks, etc. that makes a web developers life misery.</p>

<p>I am using the <a href="http://960.gs/">960 grid system for managing layout</a> in combination with a blog post on <a href="http://anthonyshort.com.au/blog/comments/how-to-get-cross-browser-compatibility-everytime/">how to get cross browser compatibility every time</a>, a simple list of DOs and DON&#8217;Ts when writing the HTML and CSS for the first time.</p>

<p>The combination has been a major time-saver (and FOR ONCE I can have a multi-column design WITHOUT using tables)! I can hardly recommend these two links enough. The only remaining doubts I have are whether to use EMs or pixels for padding and margin sizes. My brief experimentation suggests avoiding setting such values altogether but if they must be set, use pixels.</p>

<p>I&#8217;d love to hear about other&#8217;s experiences with these tools (and other, similar tools).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecnotertulia.com/development/cross-platform-table-free-web-design/143/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source Sewing Patterns</title>
		<link>http://www.tecnotertulia.com/development/open-source-sewing-patterns/137</link>
		<comments>http://www.tecnotertulia.com/development/open-source-sewing-patterns/137#comments</comments>
		<pubDate>Fri, 02 May 2008 16:47:13 +0000</pubDate>
		<dc:creator>Gustave Stresen-Reuter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tecnotertulia.com/development/open-source-sewing-patterns/137</guid>
		<description><![CDATA[Open Source Sewing Patterns This is a web site with hundreds (or thousands) of sewing patterns available for you to use, for free, and modify if you like. I believe that projects like this really are going to change the world for the better and would be interested in learning of other non-software open source [...]]]></description>
			<content:encoded><![CDATA[<h1>Open Source Sewing Patterns</h1>

<p>This is a web site with hundreds (or thousands) of sewing patterns available for you to use, for free, and modify if you like. I believe that projects like this really are going to change the world for the better and would be interested in learning of other non-software open source projects.</p>

<p><a href="http://www.burdastyle.com/">Open Source Sewing</a></p>

<p>I hope to start blogging again in June!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecnotertulia.com/development/open-source-sewing-patterns/137/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Worthwhile Definition of Web 2.0</title>
		<link>http://www.tecnotertulia.com/development/a-worthwhile-definition-of-web-20/135</link>
		<comments>http://www.tecnotertulia.com/development/a-worthwhile-definition-of-web-20/135#comments</comments>
		<pubDate>Mon, 31 Dec 2007 16:21:09 +0000</pubDate>
		<dc:creator>Gustave Stresen-Reuter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tecnotertulia.com/development/a-worthwhile-definition-of-web-20/135</guid>
		<description><![CDATA[The thing I&#8217;ve most disliked about the term &#8220;Web 2.0&#8243; is that most people use it to define something old as if it were something new. For example, some people have used the term to define myspace.com as a Web 2.0 application. However, they should remember that Geocities offered many of the same capabilities as [...]]]></description>
			<content:encoded><![CDATA[<p>The thing I&#8217;ve most disliked about the term &#8220;Web 2.0&#8243; is that most people use it to define something <em>old</em> as if it were something <em>new</em>. For example, <a href="http://www.slate.com/id/2140635/">some people have used the term</a> to <a href="http://www.techweb.com/encyclopedia/defineterm.jhtml?term=Web%202.0&#038;x=&#038;y">define myspace.com as a Web 2.0 application</a>. However, they should remember that <a href="http://www.geocities.com">Geocities</a> offered many of the same capabilities as myspace.com, but <a href="http://en.wikipedia.org/wiki/GeoCities">has been around since long before the term Web 2.0 was coined</a> (since late 1995, to be exact).</p>

<p>Finally <a href="http://derivadow.com/about/">Tom Scott</a> has done a great job underlining <a href="http://derivadow.com/2007/12/28/web-design-20-its-all-about-the-resource-and-its-url/">the essence of Web 2.0 applications</a>. He describes exactly that part of Web 2.0 applications that is actually <strong>new</strong>. He also underlines the importance of <a href="http://www.useit.com/alertbox/990321.html" title="reference to an article written in 1999!">good URL design</a> and points out that it is even more important than graphic design (and I fully agree), but even <a href="http://daringfireball.net/2007/03/blank_slate">good URL design</a> isn&#8217;t exactly new. In fact, <a href="http://www.brianoberkirch.com/2007/03/28/design-patterns-for-urls/">it&#8217;s been the mantra</a> <a href="http://www.hackdiary.com/slides/xtech2005/">of many</a> since <a href="http://www.w3.org/Provider/Style/URI">the very beginning of the web</a>, and for exactly the same reasons.</p>

<p>In the end, perhaps the only thing that differentiates these new web applications from pre-Web 2.0 web applications is the effort they put into making their data accessible to other systems. And if this is the case, is it really worth coining a new term to describe it? If so, why aren&#8217;t we just calling them what they are: web applications based on open standards? And finally, I don&#8217;t think the fact that most emerging web applications are embracing open standards should come as a surprise to anyone since it is a great way to grow your user base.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecnotertulia.com/development/a-worthwhile-definition-of-web-20/135/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP BBEdit Clipping Set</title>
		<link>http://www.tecnotertulia.com/development/php-bbedit-clipping-set/132</link>
		<comments>http://www.tecnotertulia.com/development/php-bbedit-clipping-set/132#comments</comments>
		<pubDate>Thu, 06 Dec 2007 13:02:09 +0000</pubDate>
		<dc:creator>Gustave Stresen-Reuter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.tecnotertulia.com/development/php-bbedit-clipping-set/132</guid>
		<description><![CDATA[I&#8217;ve finally updated my PHP BBEdit Clipping Set (formerly known as a glossary). The new clipping set: Continues to contain around 6,000 function definitions (whatever is in the official PHP documentation) Is based on a recent version of the official documentation Allows tabbing between function parameters (very handy&#8230;) Provides additional information when inserting a function [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve <em>finally</em> updated my PHP BBEdit Clipping Set (formerly known as a glossary). The new clipping set:</p>

<ul>
<li>Continues to contain around 6,000 function definitions (whatever is in the official PHP documentation)</li>
<li>Is based on a recent version of the official documentation</li>
<li>Allows tabbing between function parameters (very handy&#8230;)</li>
<li>Provides additional information when inserting a function (the return type, for example)</li>
<li>Optionally includes predefined constants for each function</li>
</ul>

<p>As always, there are links to instructions for creating your own set (be sure to download the Extras to get the source XSLT stylesheets) and donations are greatly appreciated.</p>

<p><a href="http://www.clevernet.biz/php-bbedit-clipping-set/">Download PHP BBEdit Clipping Set</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tecnotertulia.com/development/php-bbedit-clipping-set/132/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

