<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.4" -->
<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/"
	>

<channel>
	<title>SciJacker :: cyberpunk's not dead</title>
	<link>http://scijacker.com</link>
	<description>Sign on, plug in, rock out.</description>
	<pubDate>Thu, 06 Mar 2008 18:57:18 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<item>
		<title>Microsoft admits they &#8220;broke the web&#8221;</title>
		<link>http://scijacker.com/2008/03/06/microsoft-admits-they-broke-the-web</link>
		<comments>http://scijacker.com/2008/03/06/microsoft-admits-they-broke-the-web#comments</comments>
		<pubDate>Thu, 06 Mar 2008 18:55:21 +0000</pubDate>
		<dc:creator>patrick</dc:creator>
		
	<category>uncategorized</category>
		<guid isPermaLink="false">http://scijacker.com/2008/03/06/microsoft-admits-they-broke-the-web</guid>
		<description><![CDATA[In a talk yesterday, IE8 general manager Dean Hachamovitch admitted that developers blame Microsoft for many problems on the web.
From news.com, emphasis added:

With IE8, Hachamovitch discussed Microsoft&#8217;s commitment to compatibility. He relayed a story of what his kids used to say whenever they had Internet problems.
&#8220;They&#8217;d ask &#8216;Daddy, did you break the web?&#8217;&#8221; Hachamovitch said. [...]]]></description>
			<content:encoded><![CDATA[<p>In a talk yesterday, IE8 general manager Dean Hachamovitch admitted that developers blame Microsoft for many problems on the web.</p>
<p>From <a href="http://www.news.com/8301-13860_3-9886426-56.html?tag=nefd.pop">news.com</a>, emphasis added:</p>
<blockquote>
<p>With IE8, Hachamovitch discussed Microsoft&#8217;s commitment to compatibility. He relayed a story of what his kids used to say whenever they had Internet problems.</p>
<p>&#8220;They&#8217;d ask <b>&#8216;Daddy, did you break the web?&#8217;</b>&#8221; Hachamovitch said. &#8220;<b><u>Most</u> of the time I could honestly say &#8216;No.&#8217;</b>&#8220;</p>
<p>In a broader sense though, Hachamovitch said, that others might disagree that Microsoft, had in fact broken the Web. &#8220;<b>Web developers might answer the question differently</b>,&#8221; he said.</p>
</blockquote>
<p class="akst_link"><a href="javascript:void(akst_share('9', 'http%3A%2F%2Fscijacker.com%2F2008%2F03%2F06%2Fmicrosoft-admits-they-broke-the-web', 'Microsoft admits they &quot;broke the web&quot;'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_9">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://scijacker.com/2008/03/06/microsoft-admits-they-broke-the-web/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Wordpress cannot modify header information</title>
		<link>http://scijacker.com/2006/11/30/wordpress-cannot-modify-header-information</link>
		<comments>http://scijacker.com/2006/11/30/wordpress-cannot-modify-header-information#comments</comments>
		<pubDate>Thu, 30 Nov 2006 23:38:24 +0000</pubDate>
		<dc:creator>patrick</dc:creator>
		
	<category>wordpress</category>
		<guid isPermaLink="false">http://scijacker.com/2006/11/30/wordpress-cannot-modify-header-information</guid>
		<description><![CDATA[If you get an error that looks like this:
Warning: Cannot modify header information - headers already sent by (output started at /home/.hostname/username/domain.com/wp-content/plugins/myplugin/myplugin.php:345) in /home/.hostname/username/domain.com/wp-includes/pluggable-functions.php on line 272
I feel your pain.  It&#8217;s one of the more cryptic error messages I&#8217;ve run into.  You need to trim the whitespace from the end of your php [...]]]></description>
			<content:encoded><![CDATA[<p>If you get an error that looks like this:</p>
<p><code>Warning: Cannot modify header information - headers already sent by (output started at /home/.hostname/username/domain.com/wp-content/plugins/myplugin/myplugin.php:345) in /home/.hostname/username/domain.com/wp-includes/pluggable-functions.php on line 272</code></p>
<p>I feel your pain.  It&#8217;s one of the more cryptic error messages I&#8217;ve run into.  You need to trim the whitespace from the end of your php file.  In this example, the file <tt>myplugin.php</tt> has 345 lines.  Delete everything after the closing <tt>?$gt;</tt>.</p>
<p class="akst_link"><a href="javascript:void(akst_share('8', 'http%3A%2F%2Fscijacker.com%2F2006%2F11%2F30%2Fwordpress-cannot-modify-header-information', 'Wordpress cannot modify header information'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_8">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://scijacker.com/2006/11/30/wordpress-cannot-modify-header-information/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Javascript Form Highlighting Script &#8212; add onBlur and onFocus input styles!</title>
		<link>http://scijacker.com/2006/11/26/javascript-highlighting-onblur-onfocus</link>
		<comments>http://scijacker.com/2006/11/26/javascript-highlighting-onblur-onfocus#comments</comments>
		<pubDate>Sun, 26 Nov 2006 09:05:43 +0000</pubDate>
		<dc:creator>patrick</dc:creator>
		
	<category>web programming</category>
	<category>javascript</category>
	<category>examples</category>
		<guid isPermaLink="false">http://scijacker.com/2006/11/26/javascript-highlighting-onblur-onfocus</guid>
		<description><![CDATA[Check this out (click in the two input boxes and see what happens):
Example
This unobtrusive javascript snippet (below) will add &#8220;highlighting&#8221; effects to textareas and text and password input fields.  Just define &#8220;onBlur&#8221; and &#8220;onFocus&#8221; CSS class styles.  The extra bonus (provided exclusively by me &#60;grin/&#62;) is that this function supports multiple class names [...]]]></description>
			<content:encoded><![CDATA[<p>Check this out (click in the two input boxes and see what happens):</p>
<p><iframe width="100%" scrolling="no" height="75" frameborder="0" align="middle" marginheight="0" marginwidth="0" src="http://scijacker.com/examples/highlight.htm"><a href="http://scijacker.com/examples/highlight.htm">Example</a></iframe></p>
<p>This unobtrusive javascript snippet (below) will add &#8220;highlighting&#8221; effects to textareas and text and password input fields.  Just define &#8220;onBlur&#8221; and &#8220;onFocus&#8221; CSS class styles.  The extra bonus (provided exclusively by me &lt;grin/&gt;) is that this function supports multiple class names for the highlighted elements.  So your input of class &#8220;niftyInput&#8221; becomes an input of class &#8220;niftyInput onBlur&#8221; and, when it&#8217;s active, &#8220;niftyInput onFocus&#8221;.</p>
<p><code>
<pre>function addHighlightFunction(field) {
  field.onfocus = function () {
    var N = this.className;
    this.className = N.substring(0, N.length - 7) + ' onFocus';
  }
  field.onblur = function () {
    var N = this.className;
    this.className = N.substring(0, N.length - 8) + ' onBlur';
  }
  field.className = field.className + ' onBlur';
}
function initHighlight() {
  if (!document.getElementsByTagName) { return; }
  var allfields = document.getElementsByTagName('input');
  for (var i=0; i&lt;allfields.length; i++) {
    var field = allfields[i];
    var fieldType = field.getAttribute('type')
    if ((fieldType == 'text') || (fieldType == 'password') ) {
      addHighlightFunction(field);
    }
  }
  var allfields = document.getElementsByTagName("textarea");
  for (var i=0; i&lt;allfields.length; i++){
    var field = allfields[i];
    addHighlightFunction(field);
  }
}
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
addLoadEvent(initHighlight);</pre>
<p></code></p>
<p>This is adapted from a script by <a title="Highlighting form fields with Unobtrusive Javascript" href="http://kalsey.com/2006/07/highlighting_form_fields_with_unobtrusive_javascript/">Adam Kalsey</a>, which also uses <a title="Simon Willison's Javascript onLoad helper, addLoadEvent" href="http://simon.incutio.com/archive/2004/05/26/addLoadEvent">Simon Willison&#8217;s addLoadEvent function</a>.</p>
<p>The effect above is accomplished with this CSS:</p>
<p><code>
<pre>.onBlur { border:1px dotted #888; }
.onFocus { border:1px solid #F00; }</pre>
<p></code></p>
<p>Elegant, huh?  And if you want these behaviors to be form-specific, try something like this:</p>
<p><code>
<pre>#Search .onBlur { border:1px dotted #888; }
#Search .onFocus { border:1px solid #F00; }
#Login .onBlur { border:2px solid #AAA; }
#Login .onFocus { border:2px solid #333; }</pre>
<p></code></p>
<p class="akst_link"><a href="javascript:void(akst_share('7', 'http%3A%2F%2Fscijacker.com%2F2006%2F11%2F26%2Fjavascript-highlighting-onblur-onfocus', 'Javascript Form Highlighting Script -- add onBlur and onFocus input styles!'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_7">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://scijacker.com/2006/11/26/javascript-highlighting-onblur-onfocus/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Why the Lucky Stiff</title>
		<link>http://scijacker.com/2006/11/25/why-the-lucky-stiff</link>
		<comments>http://scijacker.com/2006/11/25/why-the-lucky-stiff#comments</comments>
		<pubDate>Sun, 26 Nov 2006 06:00:10 +0000</pubDate>
		<dc:creator>patrick</dc:creator>
		
	<category>fun stuff</category>
		<guid isPermaLink="false">http://scijacker.com/2006/11/25/why-the-lucky-stiff</guid>
		<description><![CDATA[Quoting Coda Hale:
I’ve always appreciated the profoundly surreal pedagogical approach popularized by why the lucky stiff (who is a shatter-brained, god-eating holy madman).
I couldn&#8217;t agree more.

Share This
]]></description>
			<content:encoded><![CDATA[<p>Quoting <a href="http://blog.codahale.com/2006/01/14/a-rails-howto-simplify-in-place-editing-with-scriptaculous/">Coda Hale</a>:</p>
<blockquote><p>I’ve always appreciated the profoundly surreal pedagogical approach popularized by <a href="http://whytheluckystiff.net/">why the lucky stiff</a> (who is a shatter-brained, god-eating holy madman).</p></blockquote>
<p>I couldn&#8217;t agree more.
</p>
<p class="akst_link"><a href="javascript:void(akst_share('6', 'http%3A%2F%2Fscijacker.com%2F2006%2F11%2F25%2Fwhy-the-lucky-stiff', 'Why the Lucky Stiff'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_6">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://scijacker.com/2006/11/25/why-the-lucky-stiff/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Quick Rails!</title>
		<link>http://scijacker.com/2006/11/22/quick-rails</link>
		<comments>http://scijacker.com/2006/11/22/quick-rails#comments</comments>
		<pubDate>Wed, 22 Nov 2006 23:30:36 +0000</pubDate>
		<dc:creator>patrick</dc:creator>
		
	<category>web programming</category>
	<category>ruby</category>
	<category>rails</category>
	<category>tutorials</category>
		<guid isPermaLink="false">http://scijacker.com/2006/11/22/quick-rails</guid>
		<description><![CDATA[A quick reference for creating a Rails site.  Not a complete introduction.  More of a cheatsheet.  Here&#8217;s how to build a sample web application &#8212; a web design portfolio:

Host a domain on a server with Rails support (e.g. Dreamhost shared hosting).
Create three MySQL databases.  Call them portfolio_development, portfolio_production, and portfolio_test.
Create the [...]]]></description>
			<content:encoded><![CDATA[<p>A quick reference for creating a Rails site.  Not a complete introduction.  More of a cheatsheet.  Here&#8217;s how to build a sample web application &#8212; a web design <strong>portfolio</strong>:</p>
<ol>
<li>Host a domain on a server with Rails support (e.g. Dreamhost shared hosting).</li>
<li>Create three MySQL <strong>databases</strong>.  Call them portfolio_development, portfolio_production, and portfolio_test.</li>
<li>Create the Rails application skeleton (folder structure, config files, etc.).<br />
<code>[host]$ pwd<br />
/home/username<br />
[host]$ <strong>rails portfolio</strong><br />
create<br />
create  app/controllers<br />
create  app/helpers<br />
create  app/models<br />
create  app/views/layouts<br />
***<br />
create  public/stylesheets<br />
***<br />
create  config/database.yml<br />
create  config/routes.rb<br />
***<br />
create  script/generate<br />
***</code></li>
<li>Configure your new skeletal app.</li>
<ol>
<li>Edit <strong>config/database.yml</strong> &#8212; set up database hostname, username, and password.</li>
<li>Edit <strong>config/routes.rb</strong> &#8212; direct the root to &#8220;admin&#8221;: change line 14 to:<br />
<code>map.connect '', :controller => "admin"</code></li>
<li>Link from webroot (here, a folder called &#8220;domain.com&#8221;) to rails public directory (&#8221;portfolio/public&#8221;).  This is good for security.  We don&#8217;t want our source files to be under the webroot, where they may accidentally be exposed. <code>ls -l</code> will confirm that we&#8217;ve correctly created the link.<br />
<code>[host]$ <strong>ln -s ../portfolio/public domain.com/portfolio</strong><br />
[host]$ ls -l domain.com<br />
total 176<br />
***<br />
lrwxrwxrwx  1 username unixgid    16 2006-11-22 13:40 portfolio -> ../portfolio/public<br />
***</code></li>
<li>Rename index.html to <strong>index.html.old</strong>.<br />
<code>[host]$ cd portfolio<br />
[host]$ mv public/index.html public/index.html.old</code></li>
<li>Check the setup by browsing to http://domain.com/portfolio &#8212; which gives an error.  That&#8217;s expected, though, because we haven&#8217;t created the &#8220;Admin&#8221; controller that it needs.</li>
</ol>
<li>Create the database table needed for our app.  Save the following as <strong>db/create.sql</strong> and execute it on portfolio_development:<br />
<code>drop table if exists designs;<br />
create table designs (<br />
id       int                    not null auto_increment,<br />
title           varchar(255)  not null,<br />
about           text                  null,<br />
image           varchar(255)  not null,<br />
caption  varchar(255)  null,<br />
primary key (id)<br />
);</code></li>
<li>Generate a scaffold.  Rails will look for the corresponding table, and automagically give us CRUD (Create, Retrieve, Update, Delete) functionality for it!<br />
<code>[host]$ <strong>ruby script/generate scaffold Design Admin</strong><br />
***<br />
create    app/models/design.rb<br />
create    test/unit/design_test.rb<br />
create    test/fixtures/designs.yml<br />
create  app/views/admin/_form.rhtml<br />
create  app/views/admin/list.rhtml<br />
create  app/views/admin/show.rhtml<br />
create  app/views/admin/new.rhtml<br />
create  app/views/admin/edit.rhtml<br />
create  app/controllers/admin_controller.rb<br />
create  test/functional/admin_controller_test.rb<br />
create  app/helpers/admin_helper.rb<br />
create  app/views/layouts/admin.rhtml<br />
create  public/stylesheets/scaffold.css</code><br />
&#8220;Design&#8221; is the name of the model, &#8220;Admin&#8221; is the name of the controller.  Now that we have created the AdminController, we should see something cool at <strong>http://domain.com/portfolio</strong>!  It&#8217;s our bare-bones (but working!) application.</li>
<li>Time to pretty it up.  Let&#8217;s customize the listing view.</li>
<ol>
<li>Edit <strong>app/views/admin.rhtml</strong> to something like this:<br />
<code>&lt;div id="wrap"&gt;&lt;div id="wrap2"&gt;&lt;h1&gt;Design List&lt;/h1&gt;<br />
&lt;%<br />
odd_or_even = 0<br />
for design in @designs<br />
odd_or_even = 1 - odd_or_even<br />
%&gt;<br />
&lt;div class="ListLine&lt;%= odd_or_even %&gt;"&gt;<br />
&lt;div class="ListActions"&gt;<br />
&lt;%= link_to 'Show', :action =&gt; 'show', :id =&gt; design %&gt;<br />
&lt;%= link_to 'Edit', :action =&gt; 'edit', :id =&gt; design %&gt;<br />
&lt;%= link_to 'Destroy', { :action =&gt; 'destroy', :id =&gt; design }, :confirm =&gt; 'Are you sure?', :post =&gt; true %&gt;<br />
&lt;/div&gt;<br />
&lt;h3 class="ListTitle"&gt;&lt;%= h(design.title) %&gt;&lt;/h3&gt;<br />
&lt;div class="ListImage"&gt;<br />
&lt;a xhref="&lt;%= design.image %&gt;"&gt;&lt;img xsrc="&lt;%= design.image %&gt;"/&gt;&lt;/a&gt;&lt;br/&gt;<br />
&lt;span class="ListCaption"&gt;&lt;%= h(design.caption) %&gt;&lt;/span&gt;<br />
&lt;/div&gt;<br />
&lt;span class="ListAbout"&gt;&lt;%= design.about %&gt;&lt;/span&gt;&lt;br/&gt;<br />
&lt;/div&gt;<br />
&lt;% end %&gt;<br />
&lt;%= link_to 'Previous', { :page =&gt; @design_pages.current.previous } if @design_pages.current.previous %&gt;<br />
&lt;%= link_to 'Next', { :page =&gt; @design_pages.current.next } if @design_pages.current.next %&gt;&lt;br/&gt;<br />
&lt;%= link_to 'New design', :action =&gt; 'new' %&gt;<br />
&lt;/div&gt;&lt;/div&gt;</code></li>
<li>Edit <strong>public/stylesheets/scaffold.css</strong> to something like this:<br />
<code>body { background-color: #AAA; color: #333; }<br />
***<br />
.ListTitle { color:#244; font-weight:bold; font-size:x-large; }<br />
.ListAbout { color:#244; }<br />
div.ListImage { float:left; width:173px; margin:0 10px 0 0; }<br />
div.ListImage img { width:173px; border:none; }<br />
.ListCaption { font-style:italic; font-size:x-small; }<br />
.ListActions { font-size:x-small; text-align:right; padding-left:1em; float:right; }<br />
.ListLine0 { background: #D3E9CB; }<br />
.ListLine1 { background: #F7F9DF; }<br />
.ListLine0, .ListLine1 { padding:10px; border:2px solid #333; margin:20px; }<br />
h1 { text-align:center; }<br />
#wrap { width:787px; margin:10px auto; background:#FFF; border:4px solid #444; }<br />
#wrap2 { padding:10px; }</code></li>
<li>Look at your pretty, pretty site and think of the possibilities.<br />
<a href="http://scijacker.com/img/portfolio.gif"><img width="400" src="http://scijacker.com/img/portfolio.gif" /></a></li>
</ol>
</ol>
<p class="akst_link"><a href="javascript:void(akst_share('5', 'http%3A%2F%2Fscijacker.com%2F2006%2F11%2F22%2Fquick-rails', 'Quick Rails!'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_5">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://scijacker.com/2006/11/22/quick-rails/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Ruby on Rails :: Welcome to the Twenty-First Century.  You will like it here.</title>
		<link>http://scijacker.com/2006/11/16/discover-ruby-and-rails-with-me</link>
		<comments>http://scijacker.com/2006/11/16/discover-ruby-and-rails-with-me#comments</comments>
		<pubDate>Thu, 16 Nov 2006 09:10:45 +0000</pubDate>
		<dc:creator>patrick</dc:creator>
		
	<category>programming</category>
	<category>web programming</category>
	<category>ruby</category>
	<category>rails</category>
	<category>tutorials</category>
	<category>reviews</category>
		<guid isPermaLink="false">http://scijacker.com/2006/11/16/discover-ruby-and-rails-with-me</guid>
		<description><![CDATA[Herein, and hereinafter, I learn Ruby and Rails.  They are elegant, they are beautiful, I am excited.
Ruby :: Overview
Ruby is a modern programming language.  It is powerful and extensible like LISP and Python.  It is forgiving and flexible like PHP, concise and coherent like Python.  End your line with a semi-colon [...]]]></description>
			<content:encoded><![CDATA[<p>Herein, and hereinafter, I learn <a title="Ruby Programming Language" href="http://www.ruby-lang.org/en/">Ruby</a> and <a title="Ruby on Rails web development framework" href="http://www.rubyonrails.org/">Rails</a>.  They are elegant, they are beautiful, I am excited.</p>
<h2>Ruby :: Overview</h2>
<p>Ruby is a modern programming language.  It is powerful and extensible like LISP and Python.  It is forgiving and flexible like PHP, concise and coherent like Python.  End your line with a semi-colon &#8212; or don&#8217;t.  An ellipsis is three dots, but two is ok &#8212; we know what you mean. Need a variable?  No need to declare it, no special symbol to mark it; just use it.</p>
<p><code>ruby = "A modern programming language which you will love."<br />
ruby_adjectives = [ "modern", "powerful", "flexible", "concise" ]<br />
ruby_adjectives << [ "clean", "elegant" ]<br />
</code></p>
<p>Ruby&#8217;s conventions reflect the collective common sense that programmers have developed through trying times.  For examples, naming conventions just make sense: Little things &#8212; local, ephemeral variables and methods &#8212; use lowercase.  Big things &#8212; modules, classes, constants &#8212; use uppercase. Lowercase names use underscores to split words, and uppercase names use camelcase words.</p>
<p><code>message_to_readers = "Please comment!"<br />
DesiredCommentCount = 5<br />
if (BlogPost.comment_count < DesiredCommentCount) print message_to_readers<code /></code></p>
<p>Don&#8217;t just take my word for it that Ruby has so many redeeming qualities, try it out for yourself with this <a title="Try Ruby in your browser" href="http://tryruby.hobix.com/">interactive tutorial</a>.</p>
<p>If you&#8217;re too cheap to buy <a title="Programming Ruby, Second Edition" href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FProgramming-Ruby-Pragmatic-Programmers-Second%2Fdp%2F0974514055&#038;tag=pwfishercom-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">the canonical introductory Ruby text</a>, I heartily endorse <a title="Why's (Poignant) Guide to Ruby" href="http://poignantguide.net/ruby/">Why&#8217;s (Poignant) Guide to Ruby</a>, a well-written and humorous guide which uses mnemonics brilliantly and effectively to not only introduce Ruby, but make it intuitive.  Beginning programmers, especially, would do well to read it.</p>
<h2>Rails :: Overview</h2>
<p>Rails gives you a skeletal web application out of the box (the design of which incorporates many, many design principles learned the hard way over a span of decades) and tools to make working with it much, much easier.  <a href="http://scijacker.com/Interview%20with%20David%20Heinemeier%20Hansson">Rails is opinionated</a> &#8212; it makes (good) infrastructure decisions for you, leaving you to think only of the application level &#8212; once you&#8217;re mastered Rails, that is!  This is a prime example of abstraction, and is analogous to the divisions between layers in the TCP/IP stack and between kernel, drivers and programs.  Asking a programmer to create the infrastructure, presentation, and functionality of a web application is a lot like asking for a kernel and a graphical user interface to go with the program they want.</p>
<p>It&#8217;s clear that only a select few programmers need to be under the hood creating infrastructure and tools &#8212; the rest should build application logic and user interfaces.  Presentation is rightly placed in the hands of the specific programmer or designer, supported by countless templates and widgets.  The application logic is up to you.  Let Rails be your infrastructure, and you will have the pleasure of working with the Ruby programming language, a very well thought out <a title="Model-View-Controller design pattern" href="http://www.enode.com/x/markup/tutorial/mvc.html">Model-View-Controller</a> (<a title="Diagram of the Model-View-Controller software design pattern" href="http://java.sun.com/blueprints/patterns/images/mvc-structure-generic.gif">MVC</a>) architectural pattern, and the revolutionary <a title="Prototype library reference by Sergio Pereira" href="http://www.sergiopereira.com/articles/prototype.js.html">Prototype</a> Javascript toolkit.</p>
<h3>Model-View-Controller Pattern</h3>
<p>Decouple data representation, application behavior, and presentation.  <a title="Orthogonality in " href="http://catb.org/esr/writings/taoup/html/ch04s02.html">Orthogonal design</a>: it&#8217;s a good idea.  The upshot is, when you change something you should be able to change it in one place &#8212; not here, there and everywhere.  Rails keeps layouts in one place, data models in another, controller operations such as Create, Retrieve, Update and Delete (CRUD) elsewhere, and views still elsewhere (a library might have &#8220;author&#8221;, &#8220;book&#8221;, and &#8220;genre&#8221; views, which are just different ways of looking at the data).</p>
<h2>Resources</h2>
<p>Recommended reading.  I&#8217;ve only included the good ones.</p>
<h3>Dead Tree Books</h3>
<ul>
<li>Must buy: <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FAgile-Web-Development-Rails-Programmers%2Fdp%2F097669400X&#038;tag=pwfishercom-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Agile Web Development with Rails</a><img width="1" height="1" border="0" style="border: medium none  ! important; margin: 0px ! important" src="http://www.assoc-amazon.com/e/ir?t=pwfishercom-20&#038;l=ur2&#038;o=1" /></li>
<li>Language reference: <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FProgramming-Ruby-Pragmatic-Programmers-Second%2Fdp%2F0974514055&#038;tag=pwfishercom-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Programming Ruby (2nd Ed.)</a><img width="1" height="1" border="0" style="border: medium none  ! important; margin: 0px ! important" src="http://www.assoc-amazon.com/e/ir?t=pwfishercom-20&#038;l=ur2&#038;o=1" /></li>
<li>If you still have questions: <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FRuby-Rails-Techniques-Developers%2Fdp%2F1932394699&#038;tag=pwfishercom-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Ruby For Rails</a><img width="1" height="1" border="0" style="border: medium none  ! important; margin: 0px ! important" src="http://www.assoc-amazon.com/e/ir?t=pwfishercom-20&#038;l=ur2&#038;o=1" /></li>
</ul>
<h3>Online References: Big</h3>
<ul>
<li><a title="Why the Lucky Stiff (who just may be insane)" href="http://whytheluckystiff.net/">Why the Lucky Stiff</a>: <a title="Why's (Poignant) Guide to Ruby" href="http://poignantguide.net/ruby/">Why&#8217;s (Poignant) Guide to Ruby</a> - this well-written and entertaining guide to Ruby will suck you in.  It&#8217;s not a bad place to start, especially for beginning programmers.  Clever analogy and mnemonics really help make the lessons stick.  And it&#8217;s a funny, rather exuberant poignancy featuring an inordinate number of cartoon foxes.</li>
<li>Wikibook: <a title="Ruby Programming Wikibook" href="http://en.wikibooks.org/wiki/Ruby_Programming">Ruby Programming</a></li>
<li>Sergio Pereira:  <a title="Prototype library reference article" href="http://www.sergiopereira.com/articles/prototype.js.html">Prototype Reference</a></li>
<li>Microsoft: <a title="Microsoft JScript (Javascript) Reference Manual" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/29f83a2c-48c5-49e2-9ae0-7371d2cda2ff.asp">Javascript Reference</a></li>
<li>The Art of Unix Programming: <a title="Orthogonal design and refactoring programming principles" href="http://catb.org/esr/writings/taoup/html/ch04s02.html">Orthogonal Design</a></li>
</ul>
<h3>Online References: Small</h3>
<ul>
<li><a title="Interactive online Ruby tutorial" href="http://tryruby.hobix.com/">Try Ruby (in your browser)</a> - interactive online Ruby tutorial by <a title="Why the Lucky Stiff" href="http://whytheluckystiff.net/">Why</a></li>
<li>Java Blueprints: <a title="Model-View-Controller Diagram" href="http://java.sun.com/blueprints/patterns/images/mvc-structure-generic.gif">MVC Diagram</a></li>
<li>Jonathan Snook: <a title="Prototype javascript library reference diagrams" href="http://www.snook.ca/archives/javascript/prototype_disse/">Prototype Cheat Sheets</a></li>
</ul>
<h3>Additional Tools</h3>
<ul>
<li><a title="RadRails free, open-souce Ruby on Rails IDE" href="http://www.radrails.org/">RadRails IDE</a> (<a title="Linux News article on RadRails" href="http://www.linuxinsider.com/story/8twHUvIcOv943V/RadRails-Speeds-Web-App-Development.xhtml">excellent review</a>)</li>
</ul>
<p>Next up: I try to build a quick and dirty rails app. Hilarity ensues.
</p>
<p class="akst_link"><a href="javascript:void(akst_share('4', 'http%3A%2F%2Fscijacker.com%2F2006%2F11%2F16%2Fdiscover-ruby-and-rails-with-me', 'Ruby on Rails :: Welcome to the Twenty-First Century.  You will like it here.'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_4">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://scijacker.com/2006/11/16/discover-ruby-and-rails-with-me/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Why your PC is now obsolete: the new Intel Core 2 Duo</title>
		<link>http://scijacker.com/2006/11/09/why-your-pc-is-now-obsolete-the-new-intel-core-2-duo</link>
		<comments>http://scijacker.com/2006/11/09/why-your-pc-is-now-obsolete-the-new-intel-core-2-duo#comments</comments>
		<pubDate>Thu, 09 Nov 2006 10:58:48 +0000</pubDate>
		<dc:creator>patrick</dc:creator>
		
	<category>hardware</category>
	<category>reviews</category>
		<guid isPermaLink="false">http://scijacker.com/?p=3</guid>
		<description><![CDATA[According to the authoritative AnandTech (emphasis his):
Intel&#8217;s Core 2 Extreme X6800 didn&#8217;t lose a single benchmark in our comparison; not a single one&#8230;Compared to AMD&#8217;s Athlon 64 X2 the situation gets a lot more competitive, but AMD still doesn&#8217;t stand a chance.
These chips are not only screamingly fast, they also use less power.  This [...]]]></description>
			<content:encoded><![CDATA[<p>According to the authoritative <a title="AnandTech: Intel's Core 2 Extreme &#038; Core 2 Duo: The Empire Strikes Back" href="http://www.anandtech.com/cpuchipsets/showdoc.aspx?i=2795&#038;p=1">AnandTech</a> (emphasis his):</p>
<blockquote><p>Intel&#8217;s Core 2 Extreme X6800 didn&#8217;t lose a single benchmark in our comparison; <strong>not a single one</strong>&#8230;Compared to AMD&#8217;s Athlon 64 X2 the situation gets a lot more competitive, but AMD still doesn&#8217;t stand a chance.</p></blockquote>
<p>These chips are not only screamingly fast, they also use less power.  This is critical nowadays, as businesses get a double-whammy on their electricity bills &#8212; power to run the computers, and power to run the air conditioning.</p>
<p>The Core processor is so good because Intel doubled the very high-speed working memory on the die itself (to 4MB of L2 cache).  Combined with the really fat pipe (a bus 256 bits wide) and extensive prefetching, the dual cores stay very busy.  To be technical:</p>
<blockquote><p>The <strong>Core architecture&#8217;s L1 cache delivers about twice as much bandwidth</strong>&#8230; while its <strong>L2-cache is about 2.5 times faster</strong> than the Athlon 64/Opteron one.</p></blockquote>
<p>The chips also use &#8220;bigger, smarter circuitry that can do a lot in parallel&#8221; to combine steps when possible (macro- and micro-op fusion), saving about one operation in ten.  This also applies to multimedia (SSE) processing (which is bigger) and advance loading (which is smarter).
</p>
<p class="akst_link"><a href="javascript:void(akst_share('3', 'http%3A%2F%2Fscijacker.com%2F2006%2F11%2F09%2Fwhy-your-pc-is-now-obsolete-the-new-intel-core-2-duo', 'Why your PC is now obsolete: the new Intel Core 2 Duo'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_3">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://scijacker.com/2006/11/09/why-your-pc-is-now-obsolete-the-new-intel-core-2-duo/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
