<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Web Programming</title>
  <link rel="alternate" type="text/html" href="http://addingunderstanding.com/category/web-programming"/>
  <link rel="self" type="application/atom+xml" href="http://addingunderstanding.com/taxonomy/term/140/atom/feed"/>
  <id>http://addingunderstanding.com/taxonomy/term/140/atom/feed</id>
  <updated>2006-10-03T22:51:54-06:00</updated>
  <entry>
    <title>Making outbound links generic</title>
    <link rel="alternate" type="text/html" href="http://addingunderstanding.com/2007/09/making-outbound-links-generic" />
    <id>http://addingunderstanding.com/2007/09/making-outbound-links-generic</id>
    <published>2007-09-07T18:22:09-06:00</published>
    <updated>2007-09-07T18:22:09-06:00</updated>
    <author>
      <name>joshb</name>
    </author>
    <category term="Drupal" />
    <category term="Web Programming" />
    <summary type="html"><![CDATA[<p>I'm looking for a good way to make outbound links from a <a href="http://drupal.org">Drupal</a> site not show the full path of the referring page when the user reaches an external server. There are some <a href="http://drupal.org/node/152434">posts</a> in the Drupal forum about doing this sort of thing. In short, instead of wanting to track clicks I'm more interested in not making the internal URL evident to the external server. For example if I have an internal page at the following URL:</p>
<blockquote><p><a href="http://example.com/top-job-applicants" title="http://example.com/top-job-applicants">http://example.com/top-job-applicants</a></p>
</blockquote>
<p>One easy way is of course not to use path aliases and that would be the quick work-around. However,  in some cases I want users to be able to remember a URL and most don't recall 'node/1234' as well as they do 'job-applicants'. The challenge is that for privacy reasons I don't want to make evident to the operators of a server linked from the internal page that the user is an applicant (and maybe they aren't but are a prospect I want to encourage to apply). </p>
<p>A cursory look at the modules list didn't reveal the answer. Likely a module for this with a filter that can be applied to redirect all links through it will be the solution.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I'm looking for a good way to make outbound links from a <a href="http://drupal.org">Drupal</a> site not show the full path of the referring page when the user reaches an external server. There are some <a href="http://drupal.org/node/152434">posts</a> in the Drupal forum about doing this sort of thing. In short, instead of wanting to track clicks I'm more interested in not making the internal URL evident to the external server. For example if I have an internal page at the following URL:</p>
<blockquote><p><a href="http://example.com/top-job-applicants" title="http://example.com/top-job-applicants">http://example.com/top-job-applicants</a></p></blockquote>
<p>One easy way is of course not to use path aliases and that would be the quick work-around. However,  in some cases I want users to be able to remember a URL and most don't recall 'node/1234' as well as they do 'job-applicants'. The challenge is that for privacy reasons I don't want to make evident to the operators of a server linked from the internal page that the user is an applicant (and maybe they aren't but are a prospect I want to encourage to apply). </p>
<p>A cursory look at the modules list didn't reveal the answer. Likely a module for this with a filter that can be applied to redirect all links through it will be the solution.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Sure I know Dreamweaver, Front Page and more</title>
    <link rel="alternate" type="text/html" href="http://addingunderstanding.com/the-content-management-story.html" />
    <id>http://addingunderstanding.com/the-content-management-story.html</id>
    <published>2007-07-30T06:00:00-06:00</published>
    <updated>2008-01-31T09:06:21-07:00</updated>
    <author>
      <name>joshb</name>
    </author>
    <category term="Business" />
    <category term="Content management" />
    <category term="Dreamweaver" />
    <category term="Drupal" />
    <category term="Frontier" />
    <category term="Web Design" />
    <category term="Web Programming" />
    <category term="Zope" />
    <summary type="html"><![CDATA[<p>As a hiring manager I'm always skeptical when I get a resume filled with "technical" classes from one of the myriad of technical schools around the country. When I've worked with graduates of these programs it seems they have a marginal, but usually satisfactory, understanding of how technology is supposed to work. The problem is I rarely need people who can work with technology that is working. If technology is working and things are simple there is little that end-users need. Even relatively simple tasks like deploying computers depends upon a specific understanding of the complex situation that is most business networks. Few organizations do a "out of the box" installation of a Microsoft Active Directory and run 100% machines that work in that environment. These complexities mean a technical manager is quickly looking for skills that don't come from these technical schools. Ironically because they do tend to come in people who are self-motivated to learn the technology any way they can often the requisite skills are stronger in those who haven't been through this sort of program.</p>
<p>So what does this have to do with Dreamweaver? A friend recently commented that when they look at resumes they similarly discount the web credentials of anyone who lists Dreamweaver, Front Page or other similar programs on their resume for much the same reasons. Usually they've gone to a class or two on web design and don't really understand the web my friend explained. It is far more important that a person who is going to be using the web heavily and designing for the web understand <strong>how the web works</strong>, what a are key factors in <a href="http://www.seomoz.com">search engine optimization</a>, organic marketing, <a href="http://www.alertbox.com/">usability</a>, <a href="http://drupal.org">content</a> <a href="http://www.zope.org/">management</a> <a href="http://frontier.userland.com/">systems</a> and customer service than an understanding of how to use a particular piece of software. In other words the conceptual body of knowledge is far more important than how to push buttons in a software package. </p>
<p>Extrapolating into the mechanical world the Dreamweaver and Front Page slingers of the world are shade tree mechanics. Many of them very good and able to put together quite pretty things and make things look good. Just as many a shade-tree mechanic can do wonders on that '67 Mustang the Front Pager can put the shine on a '97 vintage website. If '97 works then you're done. When it comes to working on the '06 Prius the shade tree mechanic is at a distinct disadvantage. Though at it's heart there is a gas engine, the HTML of the automotive world, there is a much more complex system in play that takes more tools and understanding than the average shade tree mechanic possesses. If you want a '07 website that can keep and build audience and become the business tool you need then you'll do what <a href="http://www.warnerbrosrecords.com/">those in the know</a> do and use a content management system. Best of all when you want an '08 website your job will be much easier.</p>
<p>Of course I am far from the first to <a href="http://openconcept.ca/dreamweaver_vs_drupal">raise</a> this <a href="http://www.digitalraindrop.com/CMS-Content-Management-System">point</a>. And it would be wrong to take away the idea that Dreamweaver doesn't have a place. It is a great tool for designing a site even if it is a poor tool for maintaining the content on the site once it is designed.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>As a hiring manager I'm always skeptical when I get a resume filled with "technical" classes from one of the myriad of technical schools around the country. When I've worked with graduates of these programs it seems they have a marginal, but usually satisfactory, understanding of how technology is supposed to work. The problem is I rarely need people who can work with technology that is working. If technology is working and things are simple there is little that end-users need. Even relatively simple tasks like deploying computers depends upon a specific understanding of the complex situation that is most business networks. Few organizations do a "out of the box" installation of a Microsoft Active Directory and run 100% machines that work in that environment. These complexities mean a technical manager is quickly looking for skills that don't come from these technical schools. Ironically because they do tend to come in people who are self-motivated to learn the technology any way they can often the requisite skills are stronger in those who haven't been through this sort of program.</p>
<p>So what does this have to do with Dreamweaver? A friend recently commented that when they look at resumes they similarly discount the web credentials of anyone who lists Dreamweaver, Front Page or other similar programs on their resume for much the same reasons. Usually they've gone to a class or two on web design and don't really understand the web my friend explained. It is far more important that a person who is going to be using the web heavily and designing for the web understand <strong>how the web works</strong>, what a are key factors in <a href="http://www.seomoz.com">search engine optimization</a>, organic marketing, <a href="http://www.alertbox.com/">usability</a>, <a href="http://drupal.org">content</a> <a href="http://www.zope.org/">management</a> <a href="http://frontier.userland.com/">systems</a> and customer service than an understanding of how to use a particular piece of software. In other words the conceptual body of knowledge is far more important than how to push buttons in a software package. </p>
<p>Extrapolating into the mechanical world the Dreamweaver and Front Page slingers of the world are shade tree mechanics. Many of them very good and able to put together quite pretty things and make things look good. Just as many a shade-tree mechanic can do wonders on that '67 Mustang the Front Pager can put the shine on a '97 vintage website. If '97 works then you're done. When it comes to working on the '06 Prius the shade tree mechanic is at a distinct disadvantage. Though at it's heart there is a gas engine, the HTML of the automotive world, there is a much more complex system in play that takes more tools and understanding than the average shade tree mechanic possesses. If you want a '07 website that can keep and build audience and become the business tool you need then you'll do what <a href="http://www.warnerbrosrecords.com/">those in the know</a> do and use a content management system. Best of all when you want an '08 website your job will be much easier.</p>
<p>Of course I am far from the first to <a href="http://openconcept.ca/dreamweaver_vs_drupal">raise</a> this <a href="http://www.digitalraindrop.com/CMS-Content-Management-System">point</a>. And it would be wrong to take away the idea that Dreamweaver doesn't have a place. It is a great tool for designing a site even if it is a poor tool for maintaining the content on the site once it is designed.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Website redesign using Drupal</title>
    <link rel="alternate" type="text/html" href="http://addingunderstanding.com/2006/10/website-redesign-using-drupal" />
    <id>http://addingunderstanding.com/2006/10/website-redesign-using-drupal</id>
    <published>2006-10-03T22:37:25-06:00</published>
    <updated>2006-10-03T22:53:07-06:00</updated>
    <author>
      <name>joshb</name>
    </author>
    <category term="Drupal" />
    <category term="Web Programming" />
    <summary type="html"><![CDATA[<p>After a couple more weeks than I'd hoped the third installment of my series on <a href="/mixing_drupal_with_existing_site.html">re-implementing a site using Drupal</a> is live on the website. Murphy willing the next installment will come later this week.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>After a couple more weeks than I'd hoped the third installment of my series on <a href="/mixing_drupal_with_existing_site.html">re-implementing a site using Drupal</a> is live on the website. Murphy willing the next installment will come later this week.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Sharing Space</title>
    <link rel="alternate" type="text/html" href="http://addingunderstanding.com/mixing_drupal_with_existing_site.html" />
    <id>http://addingunderstanding.com/mixing_drupal_with_existing_site.html</id>
    <published>2006-09-15T00:36:41-06:00</published>
    <updated>2006-10-03T22:51:54-06:00</updated>
    <author>
      <name>joshb</name>
    </author>
    <category term="Drupal" />
    <category term="Web Programming" />
    <summary type="html"><![CDATA[<p>First a minor clarification. While this serise has been titled a redesign, we're really talking here about first doing a re-implementation in order to enable a re-design.</p>
<h2>.htaccess</h2>
<p>Once a site is in produciton it's best to do away with .htaccess for performance. This is simple enough as the directives in .htaccess can be put in the <a href="http://www.apache.org/">Apache</a> configuration file. For these early stages, though, it is great to have a .htaccess file so you can make changes without having to restart. <a href="http://drupal.org">Drupal</a> ships with a .htaccess file that works for re-writing URLs so one can do "clean" URLs.</p>
<p>The problem with the site at hand, however, is it needs to still access the old site while the new Drupal site is going up around it. Drupal's .htaccess file contains the following directives that we are concerned with:</p>
<div class="codeblock">&nbsp; RewriteCond %{REQUEST_FILENAME} !-f&nbsp; RewriteCond %{REQUEST_FILENAME} !-d&nbsp; RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]</div>
<p>This tells the webserver that if a client requests a file and there is no file by that name and no directory by that name to send /index.php instead and to take the requested "page" and send it as an argument. Thus /node/3 becomes index.php?q=node/3. This works fine if the user requests a regular file. However it breaks down if they request a directory. If a user requests /oldsite/ Apache doesn't know that the "if the file doesn't exist" part applies to /oldsite/index.html until it is too late. Apache merrily serves up index.php.</p>
<p>To solve this problem (and a couple of variations) we add the following three lines before the three above in the .htaccess file:</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>First a minor clarification. While this serise has been titled a redesign, we're really talking here about first doing a re-implementation in order to enable a re-design.</p>
<h2>.htaccess</h2>
<p>Once a site is in produciton it's best to do away with .htaccess for performance. This is simple enough as the directives in .htaccess can be put in the <a href="http://www.apache.org/">Apache</a> configuration file. For these early stages, though, it is great to have a .htaccess file so you can make changes without having to restart. <a href="http://drupal.org">Drupal</a> ships with a .htaccess file that works for re-writing URLs so one can do "clean" URLs.</p>
<p>The problem with the site at hand, however, is it needs to still access the old site while the new Drupal site is going up around it. Drupal's .htaccess file contains the following directives that we are concerned with:</p>
<div class="codeblock">&nbsp; RewriteCond %{REQUEST_FILENAME} !-f&nbsp; RewriteCond %{REQUEST_FILENAME} !-d&nbsp; RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]</div>
<p>This tells the webserver that if a client requests a file and there is no file by that name and no directory by that name to send /index.php instead and to take the requested "page" and send it as an argument. Thus /node/3 becomes index.php?q=node/3. This works fine if the user requests a regular file. However it breaks down if they request a directory. If a user requests /oldsite/ Apache doesn't know that the "if the file doesn't exist" part applies to /oldsite/index.html until it is too late. Apache merrily serves up index.php.</p>
<p>To solve this problem (and a couple of variations) we add the following three lines before the three above in the .htaccess file:</p>
<div class="codeblock">&nbsp; RewriteRule ^photo(.*)$ <a href="http://photo.example.com/" title="http://photo.example.com/">http://photo.example.com/</a> [L]RewriteRule ^staff/specialuser/$&nbsp;&nbsp; staff/specialuser/index.htm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [L]RewriteRule ^(.*)/$ $1/index.html [L]</div>
<p>These handle two specific circumstances. If the user requests a path that contains photo, such as the old photo site at <a href="http://example.com/photo" title="http://example.com/photo">http://example.com/photo</a> they are redirected to the new photo site (separate from Drupal). Along the way <i>specialuser</i> setup their site using index.htm instead of index.html. The second rule solves the case of a user requesting specialuser's website. Finally the last rule says if someone makes a request that ends in a '/' redirect them to the same path but make the request '/index.html' instead. This means that if someone requests a directory like /oldsite/ they get /oldsite/index.html instead of the requesting being turned over to Drupal.</p>
<p>With these changes in place both sites are up and running side by side. Ask for index.php and Drupal will serve the page. Request a file or directory that exists on the webserver and that will be served. Next time we'll look at setting up the Front Page module to start serving the site's main page from Drupal while the magical transformation continues behind the scenes.</p>
    ]]></content>
  </entry>
</feed>
