Archive for January, 2010

Copyright Laws

28 January, 2010 | Joel Roggenkamp | No Comment

Several users have questioned my “overly restrictive” copyright license.  The license as posted on my website contains three restrictions:

 You may NOT:
1.  Reprint any of this content on paper, even for classroom use.
2.  Re-post any of this content on another website, in whole or in part.
3.  Copy, modify, distribute, or sell any of this content in whole or in part on any media.

 Some bloggers have refused to post links to my site BECAUSE they don’t like these terms.  There’s a deep tradition of sharing in the education profession, so it’s to be expected that some teachers will find these terms surprising.

 My response is that these teachers don’t have to use the site if they don’t want to.  They can get web projects from somewhere else or write their own.  But I think it’s better that I’m sharing them for free with anyone who wants to use them.

 Also, the terms really aren’t that restrictive.  I’m just asking that users not copy my stuff.

 Some people view the whole copyright system as old fashioned, corrupt, and greedy.  But I disagree.  We would not have Harry Potter movies or Microsoft Office software without these laws.  These laws provide an incentive for authors to create, share, and distribute works.  Steve Pavlina writes a more in-depth defense of copyright laws, which I largely agree with.

Building A Popular Web Site: Technical Considerations

9 January, 2010 | Joel Roggenkamp | No Comment

My newest project, highschoolwebdesign.com, is a complete, 12 week course in introductory web site design at the high school level.  It contains free lesson plans and rubrics for students and teachers to use in the computer lab.

 I have a number of web projects under my belt, but this is the one for which I anticipate the most traffic.  I’ll cover the business and marketing considerations of launching the site in other articles.

 Business Model (Briefly)

 The site offers free lesson plans.  Additional resources such as Powerpoints, quizzes, exercises, samples, and source code will be available for sale.  When teachers purchase the curriculum, they will also get everything on the website in PDF format with full rights to make copies for their classrooms.

 The site will be partially ad-supported.  Ad revenue is dependent on traffic, so it’s important that users actually visit the website every time they want to view the content.  Making sure users don’t print or republish my content is extremely important.

 This entry outlines my technical requirements and their implementations.

  • Content Management System

I settled on Wordpress as my CMS after evaluating others: Drupal, Joomla, and CakePHP.  Wordpress is easy to understand and modify, has lots of useful plugins and a vibrant community, and it got me started in the least amount of time.

 Copy Protection

  • Frame Busting

 I’ve included Javascript code to prevent my site from being captured inside someone else’s frame.  The code isn’t foolproof, but it does work in many cases.

  • Disable Highlighting

 Javascript disables highlighting content with the mouse.  I originally disabled right click as well, but sometimes users need to right click on the links.  If the user really wants to highlight and copy my content, disabling Javascript is all they need to do.  I’d guess that most of my visitors probably don’t know that, though.

  • Hiding content when Javascript is disabled

 I’ve set up my stylesheets so that my main content is hidden by default.  Only if Javascript is enabled in the browser does the script run, loading the stylesheets and making my content visible.

 The thinking goes like this:  if users disable Javascript to get around the anti-highlighting code, at least the content will be hidden.  If they really wanted to, they could still copy and parse the source of the page, but that would present a significantly higher barrier for people wanting to copy my content.

  • Print Stylesheet

 I have a stylesheet that hides everything when the web page is printed from the browser.

  • Disable feeds

 Atom and RSS feeds for the blog have been disabled.  The most common way of stealing web content is to place RSS feeds on other sites.

 None of these measures make it impossible for people to steal my content; if people are really determined to do it, they could.  But it will prevent teachers and students, who aren’t usually incredibly technically inclined, from copying my content in the obvious ways.

 Spam Prevention

  • CAPTCHAs on Forms

 Currently the site only has one form, and it is not protected by a CAPTCHA, but adding one later will be a trivial matter when the need arises.

  • Image Email Address

 My email address is not displayed as text on the website, but as an image instead.  I use Google’s excellent spam protection on my email account as well.

 Performance

  • Caching

 Once the site is reasonably stable, I’ll enable caching so the PHP scripts don’t need to run every time a page is requested.

  • Gzip HTTP Compression

 Content will be served compressed to browsers that support Gzip.  This one is a no brainer  :)  

 Intrusion Prevention

  • Passwords

 Everything from the DNS record to the MySQL database is protected with its own unique, random, 256 bit password from https://www.grc.com/passwords.htm

  • Input Sanitization and XSS Prevention

 These are the only two features on this list that Wordpress ships with.

 Search Engine Optimization

  • Friendly URLs

 Wordpress uses Apache’s mod_rewrite to enable search engine friendly URLs

  • Sitemap.xml

 The site contains a plugin that automatically generates sitemap.xml for search engines.

Other

  • Off Site Backups

 The site contains a plugin which backs up all files on the server plus the database.  The result is a single .zip file that I download to my computer on a weekly basis.

  • Uservoice

 The site implements uservoice to get feedback from visitors.

 There’s a lot more to building a public website than just doing a one click Wordpress install.  Only one item on this list comes with Wordpress and is enabled by default.