<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>DABlog - Home</title>
  <id>tag:dablog.rubypal.com,2010:mephisto/</id>
  <generator uri="http://mephistoblog.com" version="0.7.3">Mephisto Noh-Varr</generator>
  <link href="http://dablog.rubypal.com/xml/atom/feed.xml" rel="self" type="application/atom+xml"/>
  <link href="http://dablog.rubypal.com/" rel="alternate" type="text/html"/>
  <updated>2010-03-24T01:08:44Z</updated>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2010-03-24:3408</id>
    <published>2010-03-24T01:07:00Z</published>
    <updated>2010-03-24T01:08:44Z</updated>
    <category term="Coolth and Weirdth"/>
    <link href="http://dablog.rubypal.com/2010/3/24/accredidation" rel="alternate" type="text/html"/>
    <title>AccrediDation</title>
<content type="html">
            &lt;p&gt;I&#8217;ve noticed that people routinely pronounce &#8220;accreditation&#8221; as if the first &#8216;t&#8217; were a &#8216;d&#8217;: accredidation. I&#8217;ve been wondering why, and I have a theory.&lt;/p&gt;


	&lt;p&gt;First, consider that &#8216;t&#8217; often becomes a &#8216;d&#8217; sound before &#8216;ed&#8217;. &#8220;faded&#8221; and &#8220;fated&#8221; can sound very similar. &#8220;imitated&#8221; is pronounced more like &#8220;imitaded&#8221;.&lt;/p&gt;


	&lt;p&gt;Now, it&#8217;s also true that while &#8220;imitated&#8221; sounds like &#8220;imitaded&#8221;, no one says &#8220;imiDation&#8221; instead of &#8220;imitation&#8221;. Nor does anyone say &#8220;visiDation&#8221;, &#8220;mediDation&#8221;, or &#8220;cogiDation&#8221;. So why &#8220;accrediDation&#8221;?&lt;/p&gt;


	&lt;p&gt;The reason, I believe, lies in the past tense form of the word: accredited. In that word, the &#8216;t&#8217; after the &#8216;d&#8217; sounds like a &#8216;d&#8217; (like &#8220;imitaDed&#8221; and so on). I surmise, therefore, that something along the following lines happens when people pronounce &#8220;accreditation&#8221;: The brain gets to that first &#8216;t&#8217; after the &#8216;d&#8217; and, out of habit born of d-ifying the &#8216;t&#8217; in &#8220;accredited&#8221;, pronounces it as a &#8216;d&#8217;.&lt;/p&gt;


	&lt;p&gt;What the brain doesn&#8217;t quite take into account is that there&#8217;s a syllable &#8220;missing&#8221;. If the past tense were &#8220;accreditated&#8221; instead of &#8220;accredited&#8221;, then no one&#8217;s brain would ever have thought that there were two &#8216;d&#8217; sounds in a row, and no one would say &#8220;accredidation&#8221;.&lt;/p&gt;


	&lt;p&gt;It&#8217;s the only theory I can think of that explains why this word alone, among all the -itation words in the language, gets pronounced this way.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2009-11-13:3407</id>
    <published>2009-11-13T13:23:00Z</published>
    <updated>2009-11-21T17:51:17Z</updated>
    <category term="Computers"/>
    <category term="Coolth and Weirdth"/>
    <category term="Events"/>
    <category term="Friends"/>
    <category term="Ruby"/>
    <link href="http://dablog.rubypal.com/2009/11/13/starting-a-new-job-in-december" rel="alternate" type="text/html"/>
    <title>Starting a new job in December</title>
<content type="html">
            &lt;p&gt;I am very pleased and excited to announce that I have accepted a Senior Developer position with Cyrus Innovation, Inc. Cyrus is based in New York City. I will be, at least for the foreseeable future, assigned to a team working on-site at a New Jersey client. It&#8217;s a work-place I&#8217;ve been in before (I&#8217;ve done training for them), and I know some of the other members of the Cyrus team who work there. So while it&#8217;s definitely a big change for me and a new adventure, it&#8217;s also a familiar and collegial environment that I already know I like working in.&lt;/p&gt;


	&lt;p&gt;And it really is a big change! The last full-time job I had was my professorship at Seton Hall University (1992-2005).&lt;/p&gt;


	&lt;p&gt;The question is (drumroll&#8230;) why now?&lt;/p&gt;


	&lt;p&gt;Throughout the years that I&#8217;ve been doing freelance and independent consulting and training, I&#8217;ve regarded the prospect of a fulltime job with ambivalence. On the one hand, it&#8217;s less independent. And much of the brainstorming I&#8217;ve done this year about whether or not to seek a fulltime job has been kind of depressing, because it&#8217;s been motivated largely by the fact that my freelance business has dropped off a great deal (and I have no marketing skills, which means that when the market gets tight, I tend not to remain competitive). I&#8217;ve also been conflicted about fulltime jobs because I am very settled where I live and do not want to move.&lt;/p&gt;


	&lt;p&gt;On the other hand, I&#8217;ve always understood that a fulltime job would provide a measure of continuity and security that I&#8217;m increasingly feeling the lack of in my independent work. And, even more importantly, there&#8217;s the sense of belonging to a team of colleagues. I&#8217;ve always looked with a pang of envy at friends who are part of a development team, and whenever I&#8217;ve spent even a couple of weeks on a team helping out, it&#8217;s been incredibly stimulating. I always go through a big learning spurt when I work directly with other developers, and I don&#8217;t do nearly enough of it.&lt;/p&gt;


	&lt;p&gt;So I&#8217;d reached the point where I was interested in a full-time job but, fussy customer that I am, it had to be one that didn&#8217;t require me to sell my house and move, and that I had very, very good reason to believe would provide me with the kind of collegial environment that had been, for four years, the thing I had pined for the most as an independent. (I also didn&#8217;t want to telecommute, because sitting alone in my house literally all the time is not the right formula for me.)&lt;/p&gt;


	&lt;p&gt;Well, fast forward a bit and here I am, having found what I was hoping to find! That&#8217;s the story. I start December 7. (And all the &#8220;date that will live in infamy&#8221; jokes have already been made :-) Wish me luck!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2009-10-17:3367</id>
    <published>2009-10-17T14:57:00Z</published>
    <updated>2009-10-20T02:05:25Z</updated>
    <category term="Computers"/>
    <category term="Events"/>
    <category term="Ruby"/>
    <category term="Travel"/>
    <category term="ruby events computer travel"/>
    <link href="http://dablog.rubypal.com/2009/10/17/the-compleat-rubyist-what-s-it-all-about" rel="alternate" type="text/html"/>
    <title>The Compleat Rubyist: what's it all about? </title>
<content type="html">
            &lt;p&gt;First things first:&lt;/p&gt;


	&lt;p&gt;In case you haven&#8217;t heard about it, I&#8217;m very excited to report that I
am teaming up with two other Ruby programmer-authors, namely:&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;Gregory Brown, author of 
&lt;a href=&quot;http://oreilly.com/catalog/9780596523015&quot;&gt;&lt;cite&gt;Ruby Best Practices&lt;/cite&gt;&lt;/a&gt;,
and&lt;/li&gt;
&lt;li&gt;Jeremy McAnally, author of 
&lt;a href=&quot;http://www.manning.com/mcanally&quot;&gt;&lt;cite&gt;Ruby in 
Practice&lt;/cite&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;to present &lt;a href=&quot;http://thecompleatrubyist.com&quot;&gt;The Compleat
Rubyist&lt;/a&gt;, a two-day Ruby training event in Tampa, Florida, January
22-23 2010.&lt;/p&gt;


&lt;h2&gt;The idea behind the event&lt;/h2&gt;

	&lt;p&gt;It all started with the books.&lt;/p&gt;


	&lt;p&gt;We got the idea of doing some kind of joint project because
our books (including the two above, plus my book, 
&lt;a href=&quot;http://www.manning.com/black2&quot;&gt;&lt;cite&gt;The Well-Grounded Rubyist&lt;/cite&gt;&lt;/a&gt;) 
complement each other really nicely. My
book is a language tutorial. Jeremy&#8217;s book (to which both Greg and I
contributed) contains advice about using Ruby in a series of
application contexts. Greg&#8217;s book makes a different kind of pass
through the language, with an eye to idiomatic, productive
techniques.&lt;/p&gt;


	&lt;p&gt;A training event seemed like the perfect collaborative effort. We&#8217;ve
designed an unusual format, optimized for in-depth learning and for
a workshop/hands-on style.&lt;/p&gt;


&lt;h2&gt;Who&#8217;s it for?&lt;/h2&gt;

	&lt;p&gt;I&#8217;ve been training Ruby programmers for years, and I
can tell you that it&#8217;s very common to become quite good at Ruby but
still have room for getting deeper into how things work, what the best
practices are, and other areas.&lt;/p&gt;


	&lt;p&gt;I&#8217;d say that&#8217;s the &#8220;sweet spot&#8221; for our attendees: people who have
been using Ruby, and want to go further in their understanding and
skills.&lt;/p&gt;


	&lt;p&gt;Does that mean intermediate? advanced? talented beginner?&lt;/p&gt;


	&lt;p&gt;Hard to say. I&#8217;d like to think that almost any Ruby programmer can get
something out of spending two days with us. (And we&#8217;re hoping to get a
lot out of it too.) We&#8217;re not that concerned with pinpointing a level.
Have a look at the event description, and decide whether it sounds
good for you.&lt;/p&gt;


&lt;h2&gt;See you there, we hope!&lt;/h2&gt;

	&lt;p&gt;We&#8217;re happy to field questions, if you have any. There&#8217;s a contact
link on 
&lt;a href=&quot;http://www.thecompleatrubyist.com&quot;&gt;the event website&lt;/a&gt;, as
well as links for registering and for more info about the venue.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2009-07-16:2326</id>
    <published>2009-07-16T22:05:00Z</published>
    <updated>2009-07-16T22:05:55Z</updated>
    <category term="Coolth and Weirdth"/>
    <category term="Events"/>
    <link href="http://dablog.rubypal.com/2009/7/16/the-wise-latina-comment-in-historical-perspective" rel="alternate" type="text/html"/>
    <title>The wise Latina comment in historical perspective</title>
<content type="html">
            &lt;p&gt;I&#8217;ve watched no more of the Sotomayor hearings than has happened to be
on while I&#8217;ve waited for the guy behind the counter to toast my bagel,
and things like that. I don&#8217;t see much point in watching them, since
it&#8217;s pretty easy to predict what her critics are going to ask her and
say about her, and not terribly interesting to hear her answers.&lt;/p&gt;


	&lt;p&gt;But I do want to say something about this &#8220;wise Latina&#8221; thing, if I
can do so without boring myself as well as you to death.&lt;/p&gt;


	&lt;p&gt;With very few exceptions, all Supreme Court justices, ever, have been
white men. So have most other judges in the U.S. That means that &lt;em&gt;someone&lt;/em&gt;, &lt;em&gt;somewhere&lt;/em&gt; along the line, felt that white men make wiser decisions than people who are not white men. Maybe closer to &#8220;everyone&#8221; than &#8220;someone&#8221;, in fact.&lt;/p&gt;


	&lt;p&gt;White male jurists never have to say anything public to the effect that
white males as wiser, as jurists, than people who aren&#8217;t white
males, because it&#8217;s been said for them. It&#8217;s been said by virtually every
President who has made judicial appointments and nominations, every Senator on whom the strangely homogenous pattern has not weighed heavily, and every citizen who never
considered withholding a vote from the perpetrators of this
centuries-long exercise in exclusion.&lt;/p&gt;


	&lt;p&gt;In short, the entire history of the Supreme Court and much of the rest of the judiciary  amounts to a
sustained assertion that white men make wiser decisions than anyone
else.&lt;/p&gt;


	&lt;p&gt;So along came Sotomayor, and expressed a different opinion.  She
expressed an opinion that was not the opinion on which the entire
history of the Supreme Court has been predicated. She espoused the
belief that white men do not, in every imaginable case, make wiser
judges.&lt;/p&gt;


	&lt;p&gt;Well!&lt;/p&gt;


	&lt;p&gt;How dare she?!&lt;/p&gt;


	&lt;p&gt;Doesn&#8217;t she realize that The Universal Opinion on this subject has
already been established?&lt;/p&gt;


	&lt;p&gt;Of course it&#8217;s the same old thing. The belief that white males are
wiser is so widespread, so ingrained, so taken for granted, that it
seems natural. You don&#8217;t have to think about it; your thinking has
been done for you. And you don&#8217;t have to be so gauche as to say that
you believe it, because as long as you don&#8217;t saying anything, it will
be assumed that that&#8217;s what you think.&lt;/p&gt;


	&lt;p&gt;All Sotomayor did was to &lt;em&gt;respond&lt;/em&gt;. She was responding to
history. History was saying&#8212;loudly, repeatedly, in chorus echoing
down the centuries&#8212;that white men make wiser jurists. Sotomayor said:
maybe not, under some circumstances.&lt;/p&gt;


	&lt;p&gt;That&#8217;s all.&lt;/p&gt;


	&lt;p&gt;Think of it this way. Sotomayor walks down the street every day, her
whole life, and every couple of blocks, somebody says to her: White
male jurists make wiser decisions than anyone else. Senators say it;
Supreme Court justices say it. Citizens say it; Presidents say it.&lt;/p&gt;


	&lt;p&gt;After a lifetime of that, Sotomayor says: well, not necessarily.&lt;/p&gt;


	&lt;p&gt;And everyone gets mad at &lt;em&gt;her&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;The every-couple-of-blocks thing represents about one millionth of one
percent of what Sotomayor, and the rest of us, have &lt;em&gt;actually&lt;/em&gt;
had communicated to us over our lifetimes. So why the hell shouldn&#8217;t
she respond? And why are people treating her like Oliver Twist asking
for more gruel?&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2009-06-10:1375</id>
    <published>2009-06-10T23:57:00Z</published>
    <updated>2009-06-10T23:57:57Z</updated>
    <category term="Computers"/>
    <category term="Events"/>
    <category term="Ruby"/>
    <link href="http://dablog.rubypal.com/2009/6/10/my-new-ruby-book-is-out" rel="alternate" type="text/html"/>
    <title>My new Ruby book is out!</title>
<content type="html">
            &lt;p&gt;I&#8217;m realizing that the new book isn&#8217;t getting enough buzz, so here&#8217;s some buzz!&lt;/p&gt;


	&lt;p&gt;My new book, &lt;a href=&quot;http://www.manning.com/black2&quot;&gt;The Well-Grounded Rubyist&lt;/a&gt;, is now out and available from the publisher as well as Amazon and other retailers and stores.&lt;/p&gt;


	&lt;p&gt;If you&#8217;re learning Ruby, or want to learn Ruby, or want to refresh your Ruby knowledge and get more deeply into it&#8230;read this book! 
&lt;img src=&quot;/images/twgr.jpg&quot; /&gt;
I talk more about the book in my recent interviews for &lt;a href=&quot;http://www.infoq.com/articles/interview-david-black&quot;&gt;InfoQ&lt;/a&gt;, &lt;a href=&quot;http://on-ruby.blogspot.com/2009/05/author-interview-well-grounded-rubyist.html&quot;&gt;On Ruby&lt;/a&gt;, and &lt;a href=&quot;http://rubylearning.com/blog/2009/06/09/interview-author-david-black/&quot;&gt;RubyLearning&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;Some reviews and comments&lt;/h2&gt;

	&lt;p&gt;Here are some review quotations, from various sources:&lt;/p&gt;


&lt;div&gt;
&lt;blockquote&gt;
I think this book is a definite read and should be in every Ruby developer’s library. 
&lt;/blockquote&gt;
...
&lt;blockquote&gt;
Excellent. Easy to read, but not dumbed down. I came away with a much deeper understanding of &lt;span class=&quot;caps&quot;&gt;WHY&lt;/span&gt; oop is used, and how to use it in ruby. 
&lt;br /&gt;
&lt;br /&gt;
If you are looking to understand ruby, look no further.
&lt;/blockquote&gt;
...
&lt;blockquote&gt;
David does an excellent job going beyond the language and hitting those concepts in the built-in classes and modules that you need to know and will experience in the real-world.
&lt;/blockquote&gt;
&lt;/div&gt;

	&lt;p&gt;You can also find complete reviews &lt;a href=&quot;http://citizen428.net/archives/386-Review-The-Well-Grounded-Rubyist-Manning-Publications.html&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://www.infoq.com/news/2009/01/The-Well-Grounded-Rubyist&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;(And don&#8217;t get confused if some sites have a different-looking cover. There were two cover designs. The new one is the one you see here.)&lt;/p&gt;


	&lt;p&gt;Enjoy!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2009-04-21:413</id>
    <published>2009-04-21T23:15:00Z</published>
    <updated>2009-04-21T23:16:10Z</updated>
    <category term="Computers"/>
    <category term="Events"/>
    <category term="Ruby"/>
    <link href="http://dablog.rubypal.com/2009/4/21/the-well-grounded-rubyist-now-available-in-pdf" rel="alternate" type="text/html"/>
    <title>"The Well-Grounded Rubyist" now available in PDF!</title>
<content type="html">
            &lt;p&gt;It&#8217;s been a busy few days, with the release of not &lt;a href=&quot;http://dablog.rubypal.com/2009/4/21/envycasts-featuring-david-a-black-ruby-1-9-what-you-need-to-know&quot;&gt;my Ruby 1.9
Envycasts&lt;/a&gt; but also the &lt;span class=&quot;caps&quot;&gt;PDF&lt;/span&gt; version of my new book 
&lt;a href=&quot;http://manning.com/black2&quot;&gt;The Well-Grounded Rubyist&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;span class=&quot;caps&quot;&gt;TWGR&lt;/span&gt; is an expanded, updated, Ruby-only reworking of my 2006 book
&#8220;Ruby for Rails&#8221;. It targets Ruby 1.9.1, and includes a great deal of
new material (enough that it took me almost a year longer than I
thought it would to write :-) The book is entirely about the Ruby
language, not Rails. Lots of readers of &lt;span class=&quot;caps&quot;&gt;R4R&lt;/span&gt; encouraged me to write a
&#8220;just-Ruby&#8221; book, and here it is!&lt;/p&gt;


	&lt;p&gt;I&#8217;m looking forward to the release of the paper version on May 1, too. Not sure yet whether there are Kindle and/or Sony e-reader versions coming, but I&#8217;ll keep you posted.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2009-03-21:395</id>
    <published>2009-03-21T01:22:00Z</published>
    <updated>2009-10-27T16:11:54Z</updated>
    <category term="Coolth and Weirdth"/>
    <link href="http://dablog.rubypal.com/2009/3/21/is-this-an-early-use-of-the-slang-cool" rel="alternate" type="text/html"/>
    <title>Is this an early use of the slang "cool"?</title>
<content type="html">
            &lt;p&gt;Here&#8217;s a passage from &lt;i&gt;The Man in Lower Ten&lt;/i&gt; by Mary Roberts Rinehart, published in 1906. I&#8217;ve included some context but the main thing I&#8217;m interested in is the appearance of the word &#8220;cool&#8221; in the second paragraph.&lt;/p&gt;


&lt;blockquote&gt;
&#8220;Nonsense,&#8221; he said. &#8220;Bring yourself. The lady
that keeps my boarding-house is calling to me to insist. You
remember Dorothy, don&#8217;t you, Dorothy Browne? She says unless
you have lost your figure you can wear my clothes all right. All
you need here is a bathing suit for daytime and a dinner coat for
evening.&#8221; 
&lt;br /&gt;
&lt;br /&gt;
&#8220;It sounds cool,&#8221; I temporized. &#8220;If you are sure
I won&#8217;t put you out—very well, Sam, since you and your wife are
good enough. I have a couple of days free. Give my love to Dorothy
until I can do it myself.&#8221; 
&lt;/blockquote&gt;

	&lt;p&gt;I can&#8217;t see what &#8220;cool&#8221; means in the second paragraph, other than &#8220;cool&#8221; in the slang sense that we use it. My understanding is that &#8220;cool&#8221; in that sense started, or at least came into common usage, during or after World War II. In any case, 1906 seems insanely early for it.&lt;/p&gt;


	&lt;p&gt;But what else could it mean in the quotation above? The wardrobe described in the first paragraph doesn&#8217;t suggest a particularly cool climate. Is there some other nuance of the word I&#8217;m not getting?&lt;/p&gt;


	&lt;p&gt;I shall leave comments open on this one, at least until the spam gets intolerable.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2009-03-14:392</id>
    <published>2009-03-14T14:21:00Z</published>
    <updated>2009-03-14T14:22:23Z</updated>
    <category term="Computers"/>
    <category term="Events"/>
    <category term="Ruby"/>
    <category term="Travel"/>
    <link href="http://dablog.rubypal.com/2009/3/14/did-i-mention-ruby-training-in-atlanta-april-1-3" rel="alternate" type="text/html"/>
    <title>Did I mention Ruby training in Atlanta, April 1-3?</title>
<content type="html">
            &lt;p&gt;The answer is&#8230;yes! I did mention it. But I&#8217;ll mention it again.&lt;/p&gt;


&lt;h2&gt;Want to learn Ruby, and learn it right?&lt;/h2&gt;

	&lt;p&gt;Come to Atlanta for three days and learn Ruby from:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;me (author of &lt;a href=&quot;http://www.manning.com/black&quot;&gt;&lt;em&gt;Ruby for Rails&lt;/em&gt;&lt;/a&gt;, &lt;a href=&quot;http://www.manning.com/black2&quot;&gt;&lt;em&gt;The Well-Grounded Rubyist&lt;/em&gt;&lt;/a&gt;, and other stuff; long-time Ruby programmer; one of the most experienced Ruby trainers on the planet)&lt;/li&gt;
		&lt;li&gt;Jeremy McAnally (&#8220;mrneighborly&#8221;, author of &lt;a href=&quot;http://www.manning.com/mcanally&quot;&gt;&lt;em&gt;Ruby in Practice&lt;/em&gt;&lt;/a&gt;, creator of the Ruby Hoedown (annual conference))&lt;/li&gt;
		&lt;li&gt;Rick Olson (&#8220;technoweenie&#8221;, member of the Rails core team; plugin writer extraordinaire)&lt;/li&gt;
	&lt;/ul&gt;


&lt;h2&gt;You gotta better way to learn Ruby?&lt;/h2&gt;

	&lt;p&gt;I doubt it. Just read that list of instructors again&#8230; and you get training materials, a book (&#8220;Ruby in Practice&#8221;), and lunches.&lt;/p&gt;


	&lt;p&gt;There&#8217;s registration info &lt;a href=&quot;http://www.entp.com/training/atlanta09&quot;&gt;here&lt;/a&gt;, and you can &lt;a href=&quot;mailto:dblack@rubypal.com&quot;&gt;contact me directly&lt;/a&gt; with any questions.&lt;/p&gt;


	&lt;p&gt;Hope to see you there!&lt;/p&gt;


	&lt;p&gt;P.S. If you&#8217;re a Ruby expert but have friends or co-workers or employees who could use an accelerated intro/intermediate course, send them along!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2009-02-16:385</id>
    <published>2009-02-16T14:50:00Z</published>
    <updated>2009-02-16T14:52:25Z</updated>
    <category term="Computers"/>
    <category term="Events"/>
    <category term="Ruby"/>
    <link href="http://dablog.rubypal.com/2009/2/16/ruby-training-in-atlanta-april-1-3" rel="alternate" type="text/html"/>
    <title>Ruby training in Atlanta, April 1-3!</title>
<content type="html">
            &lt;p&gt;Want to learn Ruby, or improve what you already know? Come to Atlanta!&lt;/p&gt;


	&lt;p&gt;&lt;a href=&quot;http://www.rubypal.com&quot;&gt;Ruby Power and Light&lt;/a&gt;
 and &lt;a href=&quot;http://www.entp.com&quot;&gt;&lt;span class=&quot;caps&quot;&gt;ENTP&lt;/span&gt;&lt;/a&gt; are teaming up to present a three-day Ruby course in Atlanta. You can get more info, and register, &lt;a href=&quot;http://www.entp.com/training/atlanta09&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Training will be by me and Ruby developer/author Jeremy McAnally (&#8220;mrneighborly&#8221;). And Rick Olson (&#8220;technoweenie&#8221;) will be there too, helping with the training and sagely dispensing Ruby wisdom and advice. (Seriously!) It will be at the Georgia Tech Hotel &#38; Conference Center.&lt;/p&gt;


	&lt;p&gt;Please &lt;a href=&quot;mailto:dblack@rubypal.com&quot;&gt;email me&lt;/a&gt; if you have any questions. Otherwise, see you there!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2009-02-03:381</id>
    <published>2009-02-03T01:38:00Z</published>
    <updated>2009-02-03T01:38:44Z</updated>
    <category term="Coolth and Weirdth"/>
    <link href="http://dablog.rubypal.com/2009/2/3/why-athletes-thanking-god-for-victories-is-stupid" rel="alternate" type="text/html"/>
    <title>Why athletes thanking God for victories is stupid</title>
<content type="html">
            &lt;p&gt;I hate it when athletes thank God when they win. My reasons for hating
it have nothing to do with my own atheism. I hate it because it&#8217;s
narcissistic and because it&#8217;s theologically infantile.&lt;/p&gt;


	&lt;p&gt;If you win a game and then thank God, &lt;em&gt;and do not thank God when you
lose&lt;/em&gt;, you are going on record as believing that God wanted you to win,
and that a victory by your opponent would have represented a thwarting of
God&#8217;s plan.&lt;/p&gt;


	&lt;p&gt;But how do you know? Isn&#8217;t it possible that losing is what God has planned for
you, and that it will do you good? Maybe losing will strengthen your
character. Maybe your opponent needs the win (or the prize money) more than
you do, and God somehow managed to figure that out in spite of being dazzled
by your greatness.  Maybe you should be thanking God for protecting you from
the sin of pride by not letting you win a spiritually meaningless, entirely
earthly contest.&lt;/p&gt;


	&lt;p&gt;But I&#8217;ve never seen an athlete drop to his or her knees and thank God after a
loss.  Why not? Because the ones who thank God when they win have a dinky,
anthropomorphic conception of God. Their God is &#8220;the man upstairs,&#8221; the Santa
Claus figure, the parent who may or may not give them the birthday present
they want. And to hell with the other kids. Me, Me, Me.&lt;/p&gt;


	&lt;p&gt;So what gives? Where does this all come from? Whose big idea was it to thank
God only for bringing about what they themselves wanted to happen anyway?&lt;/p&gt;


	&lt;p&gt;Let&#8217;s go back to ancient times. Things were different with respect to thanking
gods, &lt;em&gt;because there were lots of gods&lt;/em&gt; and the gods took sides
in the contest. It made sense for the Greeks
to thank Athena for the victory over the Trojans because Athena was, at some
Olympian level, duking it out with Ares and Aphrodite. The Greeks&#8217; powerful
friends prevailed over the Trojans&#8217; powerful friends. And the Greeks
understood that someone had actually made an effort on their behalf, faced
uncertainty, and prevailed. So they thanked her.&lt;/p&gt;


	&lt;p&gt;Dear athlete: Do you think that God faces uncertainty when you play a tennis
match?&lt;/p&gt;


	&lt;p&gt;Do you think that God has to make an effort on your behalf to make sure you
win?&lt;/p&gt;


	&lt;p&gt;Do you think that God&#8217;s enemy is rooting for your opponent?&lt;/p&gt;


	&lt;p&gt;And if you don&#8217;t think all that, what exactly are you thanking God for when
you win? I mean &lt;em&gt;exactly&lt;/em&gt;. Not just vaguely that you&#8217;re happy, and
happiness feels good, so it must come from God. That&#8217;s theological babytalk.&lt;/p&gt;


	&lt;p&gt;The best thing that can be said about thanking God for an athletic victory and not for a loss is
that it&#8217;s an ignorant corruption of what was a perfectly reasonable pagan practice. 
If you&#8217;re a monotheist and thank God for a win, you&#8217;re making
a statement about your own inherent worth, and what you believe is God&#8217;s
opinion of that worth, in comparison to the inherent worth of your opponent.
You&#8217;re asserting that your victory is of the Lord to an extent that a victory
by your opponent would not have been. And you&#8217;re implying unmistakeably that
your opponent is in league with God&#8217;s enemy.&lt;/p&gt;


	&lt;p&gt;In other words, thanking God for an athletic victory is stupid, uninformed,
thoughtless, self-absorbed, and about as far from anything religious or
spiritual as you can get. I understand the whole thing about religion not being the same as
rational thought. But this isn&#8217;t even the same as religious thought. It&#8217;s just
vanity.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2009-01-23:371</id>
    <published>2009-01-23T22:31:00Z</published>
    <updated>2009-01-23T22:32:07Z</updated>
    <category term="Computers"/>
    <category term="Events"/>
    <category term="Ruby"/>
    <link href="http://dablog.rubypal.com/2009/1/23/railsconf-registration-and-a-hiatus-year-for-railsconf-europe" rel="alternate" type="text/html"/>
    <title>RailsConf registration (and a hiatus year for RailsConf Europe)</title>
<content type="html">
            &lt;p&gt;Registration is now open for RailsConf 2009 (May 4-7). You can get more details, and register, at
&lt;a href=&quot;http://www.railsconf.com&quot;&gt;the RailsConf 2009 website&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;RailsConf is taking place in Las Vegas, one of my favorite cities. Yes, I know what a weird and ironic place it is. But for whatever reason, I&#8217;ve always found it extremely enjoyable. May is a good time to go&amp;mdash;hopefully not to hot to step outside!&lt;/p&gt;


	&lt;p&gt;There&#8217;s a lot going on at RailsConf this year, highlighted by its timing in the wake of the Rails/Merb merger decision. There will be lots of merger news and highlights, along with the usual great lineup of talks and, above all, the chance to meet and get to know other Rails developers as well as Rails core team members, authors, bloggers, and pretty much the whole gang!&lt;/p&gt;


&lt;h2&gt;A hiatus year for RailsConf Europe&lt;/h2&gt;

	&lt;p&gt;Ruby Central and O&#8217;Reilly have decided to take a hiatus from producing RailsConf Europe this year, for the simple reason that it didn&#8217;t bring in enough revenue last year to justify doing it again, particularly given the tight economy and the need to err on the side of caution. RailsConf Europe has always been a really great event, and people who go to it really love it, but we need a year of retrenchment while we figure out how to get everyone else to realize how great it is! Plans for 2010 are not certain yet; we&#8217;re taking it one year at a time.&lt;/p&gt;


	&lt;p&gt;Meanwhile, the Ruby and Rails communities continue to produce an astonishing number of high-quality, uniquely branded and flavored events. I&#8217;m not even going to try to list them all here. Do a search, though, and you may very well find one near you.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2009-01-16:362</id>
    <published>2009-01-16T14:20:00Z</published>
    <updated>2009-01-16T14:20:36Z</updated>
    <category term="Computers"/>
    <category term="Ruby"/>
    <link href="http://dablog.rubypal.com/2009/1/16/son-of-10-things-to-be-aware-of-in-ruby-1-9" rel="alternate" type="text/html"/>
    <title>Son of 10 things to be aware of in Ruby 1.9!</title>
<content type="html">
            &lt;p&gt;I&#8217;m happy to see that my recent
&lt;a href=&quot;http://dablog.rubypal.com/2009/1/14/10-things-to-be-aware-of-in-moving-to-ruby-1-9&quot;&gt;10 things to be aware
of in moving to Ruby 19&lt;/a&gt; article has proven helpful to lots of people. This article is a follow-up.&lt;/p&gt;


	&lt;p&gt;The goal of the article was to point out 1.9 features and changes that
might cause your existing code not to run correctly, or not to run at
all. I went a bit soft, though: two of the original ten (hashes being
ordered and the changes in method-argument syntax) weren&#8217;t really
things that might break your 1.8 code.&lt;/p&gt;


	&lt;p&gt;So I feel I owe the world two more code-breaking 1.9 features! And
they&#8217;re here, along with a bonus one.&lt;/p&gt;


&lt;h2&gt;But first, some links&lt;/h2&gt;

	&lt;p&gt;The denizens of ruby-talk have provided lots of helpful ideas and
feedback. James Edward Gray II and others mentioned &lt;span class=&quot;caps&quot;&gt;M17N&lt;/span&gt;, a topic on
which I defer to the more expert among us, especially James who has
written a multi-part &lt;a href=&quot;http://blog.grayproductions.net/articles/understanding_m17n&quot;&gt;&lt;span class=&quot;caps&quot;&gt;M17N&lt;/span&gt; guide&lt;/a&gt;.
He&#8217;s going to be expanding it to include 1.9 encoding, so keep an eye on it.&lt;/p&gt;


	&lt;p&gt;Brian Candler suggested that people might be interested in
the presentation by me and Dave Thomas at RubyConf 2008
on &lt;a href=&quot;http://rubyconf2008.confreaks.com/ruby-19-what-to-expect.html&quot;&gt;Ruby 1.9: What to Expect&lt;/a&gt;.
We cover some pitfalls but also some new, non-pitfall features you
might want to know about.&lt;/p&gt;


	&lt;p&gt;If you&#8217;re interested in Ruby 1.9 generally, you might be interested
in my forthcoming book &lt;a href=&quot;http://www.manning.com/black2&quot;&gt;The Well-Grounded
Rubyist&lt;/a&gt;, which is a fully revised,
revamped, &#8220;Ruby only&#8221; second incarnation of my 2006 book
&lt;a href=&quot;http://www.manning.com/black&quot;&gt;Ruby for Rails&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Apologies to anyone I&#8217;ve failed to credit, and thanks to all for the feedback.&lt;/p&gt;


	&lt;p&gt;And with that, here are the pitfalls! (Speaking of pitfalls, I think
I&#8217;ve remembered all the &amp;lt;pre&amp;gt; tags this time&#8230;.)&lt;/p&gt;


&lt;h2&gt;String indexing behavior has changed&lt;/h2&gt;

	&lt;p&gt;(Thanks to Michael Fellinger and Robert Dober)&lt;/p&gt;


	&lt;p&gt;In Ruby 1.8, indexing strings with &lt;code&gt;[]&lt;/code&gt;, as in &lt;code&gt;&quot;string&quot;[3]&lt;/code&gt;, gives
you an &lt;span class=&quot;caps&quot;&gt;ASCII&lt;/span&gt; code:&lt;/p&gt;


&lt;pre&gt;
  &amp;gt;&amp;gt; &quot;string&quot;[3]
  =&amp;gt; 105
&lt;/pre&gt;

	&lt;p&gt;In order to get a one-character-long substring, you have to provide a
length:&lt;/p&gt;


&lt;pre&gt;
  &amp;gt;&amp;gt; &quot;string&quot;[3,1]
  =&amp;gt; &quot;i&quot; 
&lt;/pre&gt;

	&lt;p&gt;In Ruby 1.9, the indexing operation gives you a character.&lt;/p&gt;


&lt;pre&gt;
  &amp;gt;&amp;gt; &quot;string&quot;[3]
  =&amp;gt; &quot;i&quot; 
&lt;/pre&gt;

	&lt;p&gt;Also, kind of along the same lines, the ?-notation now gives a
character rather than a code. In 1.8:&lt;/p&gt;


&lt;pre&gt;
  &amp;gt;&amp;gt; ?a
  =&amp;gt; 97
&lt;/pre&gt;

	&lt;p&gt;and in 1.9:&lt;/p&gt;


&lt;pre&gt;
  &amp;gt;&amp;gt; ?a
  =&amp;gt; &quot;a&quot; 
&lt;/pre&gt;

&lt;h2&gt;if-conditions can no longer end with a colon&lt;/h2&gt;

	&lt;p&gt;In 1.8 you can do this:&lt;/p&gt;


&lt;pre&gt;
  if x:
    puts &quot;Yes!&quot; 
  end
&lt;/pre&gt;

	&lt;p&gt;In 1.9, you can&#8217;t use that colon any more. The same is true of when
clauses in case statements. This will not parse in 1.9:&lt;/p&gt;


&lt;pre&gt;
  case x
  when 1: &quot;yes!&quot; 
  end
&lt;/pre&gt;

&lt;h2&gt;Bonus thing! No more default to_a&lt;/h2&gt;

	&lt;p&gt;In 1.9 you cannot assume that every object has a &lt;code&gt;to_a&lt;/code&gt; method.
You&#8217;ve probably seen warnings about this in 1.8, and the day of
reckoning has now arrived.&lt;/p&gt;


&lt;pre&gt;
  &amp;gt;&amp;gt; &quot;abc&quot;.to_a
  NoMethodError: undefined method `to_a' for &quot;abc&quot;:String
&lt;/pre&gt;

	&lt;p&gt;You can use the Array method to turn anything into an array. If it&#8217;s
an array already, it returns the object itself (not a copy). If it&#8217;s
anything else, it tries to run &lt;code&gt;to_ary&lt;/code&gt; and &lt;code&gt;to_a&lt;/code&gt; on it (in that order),
and if those aren&#8217;t available, it just wraps it in an array.&lt;/p&gt;


	&lt;p&gt;Array isn&#8217;t new, but we&#8217;re likely to be using it a lot more
now that there&#8217;s no default &lt;code&gt;to_a&lt;/code&gt; operation.&lt;/p&gt;


	&lt;p&gt;Have fun!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2009-01-14:359</id>
    <published>2009-01-14T19:21:00Z</published>
    <updated>2009-02-15T03:51:21Z</updated>
    <category term="Computers"/>
    <category term="Ruby"/>
    <link href="http://dablog.rubypal.com/2009/1/14/10-things-to-be-aware-of-in-moving-to-ruby-1-9" rel="alternate" type="text/html"/>
    <title>10 things to be aware of in moving to Ruby 1.9</title>
<content type="html">
            &lt;p&gt;&lt;em&gt;Update: There&#8217;s a sequel to this post,
called &lt;a href=&quot;http://dablog.rubypal.com/2009/1/16/son-of-10-things-to-be-aware-of-in-ruby-1-9&quot;&gt;Son of 10 things&#8230;&lt;/a&gt; &lt;/em&gt;&lt;/p&gt;

	&lt;p&gt;I&#8217;ve been writing a lot about Ruby 1.9 (my book &lt;a href=&quot;http://www.manning.com/black2&quot;&gt;The Well-Grounded Rubyist&lt;/a&gt; is due out in 
a couple of months), and I thought I&#8217;d share my personal list of things you need 
to be careful of as you go from 1.8 to 1.9. This is not a list of changes; it&#8217;s 
a list of changes that you really need to know about to get your 1.8 code to 
work in 1.9, things that have a relatively high likelihood of biting you if you 
don&#8217;t know about them.&lt;/p&gt;


&lt;h3&gt;Strings are no longer enumerable&lt;/h3&gt;

	&lt;p&gt;You can&#8217;t do &lt;code&gt;string.each&lt;/code&gt; and friends any more. This has an impact, for
example, on the Rack interface, where there has in the past been a requirement
that the third item in the returned array respond to &lt;code&gt;each&lt;/code&gt;.&lt;/p&gt;


&lt;h3&gt;Block argument semantics&lt;/h3&gt;

	&lt;p&gt;This is a big change, and a big topic. The salient point is that when you do this:&lt;/p&gt;


&lt;pre&gt;
  array.each {|x| ... }
&lt;/pre&gt;

	&lt;p&gt;the block parameter list is handled like a method parameter list. In 1.8, blocks
use assignment semantics, so that &lt;code&gt;@ is like @x=&lt;/code&gt;. That&#8217;s why in 1.8 you can do:&lt;/p&gt;


&lt;pre&gt;
  array.each {|@x| ... }
&lt;/pre&gt;

	&lt;p&gt;(assign to an instance variable) or even:&lt;/p&gt;


&lt;pre&gt;
  array.each {|self.attr| ... }
&lt;/pre&gt;

	&lt;p&gt;(call the &lt;code&gt;attr=&lt;/code&gt; method on &lt;code&gt;self&lt;/code&gt;). You can&#8217;t do those things in 1.9; the parameters are bound
to the arguments using method-argument semantics, not assignment semantics.&lt;/p&gt;


&lt;h3&gt;Block variables scope&lt;/h3&gt;

	&lt;p&gt;Block parameters are local to the block.&lt;/p&gt;


&lt;pre&gt;
  x = 1
  [2,3].each {|x|  }
&lt;/pre&gt;

	&lt;p&gt;In 1.8, &lt;code&gt;x&lt;/code&gt; would now be 3 (outside the block). In 1.9 the two &lt;code&gt;x&lt;/code&gt;&#8217;s are not the
same variable, so the original &lt;code&gt;x&lt;/code&gt; is still 1.&lt;/p&gt;


	&lt;p&gt;However, a variable that (a) already exists, and (b) is not a block parameter,
is not local to the block.&lt;/p&gt;


&lt;pre&gt;
  x = 1
  [2,3].each {|y| x = y }
&lt;/pre&gt;

&lt;code&gt;x&lt;/code&gt; is now 3. If you want or need to shield your existing variables from being
used inside the block, declare variables as block local by putting them after a
semi-colon in the parameter list:
&lt;pre&gt;
  x = 1
  [2,3].each {|y;x| x = y }
&lt;/pre&gt;

	&lt;p&gt;&lt;code&gt;x&lt;/code&gt; is still 1.&lt;/p&gt;


&lt;h3&gt;Method argument semantics&lt;/h3&gt;

	&lt;p&gt;Method arguments do some new things too. In particular, you can now put required
arguments after the optional argument glob parameter:&lt;/p&gt;


&lt;pre&gt;
  def my_meth(a,*b,c)
&lt;/pre&gt;

	&lt;p&gt;There aren&#8217;t too many situations where you&#8217;d want to do this (though there are one or two).&lt;/p&gt;


&lt;h3&gt;The * operator has changed semantics&lt;/h3&gt;

Compare 1.8:
&lt;pre&gt;
  &amp;gt;&amp;gt; a = [1,2]
  =&amp;gt; [1, 2]
  &amp;gt;&amp;gt; *b = a
  =&amp;gt; [[1, 2]]
  &amp;gt;&amp;gt; b
  =&amp;gt; [[1, 2]]
&lt;/pre&gt;

	&lt;p&gt;and 1.9:&lt;/p&gt;


&lt;pre&gt;
  &amp;gt;&amp;gt; a = [1,2]
  =&amp;gt; [1, 2]
  &amp;gt;&amp;gt; *b = a
  =&amp;gt; [1, 2]
  &amp;gt;&amp;gt; b
  =&amp;gt; [1, 2]
&lt;/pre&gt;

	&lt;p&gt;I&#8217;ve always interpreted the &lt;code&gt;*&lt;/code&gt; operator in the following way:&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;The expression *x represents the contents of the array x, as a
list.&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;In 1.8, &lt;code&gt;*b = [1,2]&lt;/code&gt; means that &lt;code&gt;[1,2]&lt;/code&gt; is the contents of the array &lt;code&gt;b&lt;/code&gt;, which
means that &lt;code&gt;b&lt;/code&gt; is &lt;code&gt;[[1,2]]&lt;/code&gt;.  The 1.9 semantics don&#8217;t seem to behave that way. I&#8217;m
not sure what the new general rule for &lt;code&gt;*&lt;/code&gt; is, or whether maybe I was wrong that
there was such a rule that governed all cases (though I can&#8217;t think of an
exception).&lt;/p&gt;


&lt;h3&gt;Hashes are ordered&lt;/h3&gt;

	&lt;p&gt;This isn&#8217;t likely to bite you but it&#8217;s something to be aware of, both in your
own code and in looking at the code of others. Hashes are ordered by insertion
order. Reassigning to a key does not change the insertion placement of that key.&lt;/p&gt;


&lt;h3&gt;method and friends return symbols&lt;/h3&gt;

	&lt;p&gt;Expressions like &lt;code&gt;obj.methods&lt;/code&gt; and &lt;code&gt;klass.instance_methods&lt;/code&gt; return symbols instead
of strings in 1.9. That means that you might have to do &lt;code&gt;to_s&lt;/code&gt; operations on them,
if you need them as strings. However&#8230;&lt;/p&gt;


&lt;h3&gt;Symbols are string-like&lt;/h3&gt;

	&lt;p&gt;... symbols have become very string-like. You can match them against regular
expressions, run methods like &lt;code&gt;#upcase&lt;/code&gt; and &lt;code&gt;#swapcase&lt;/code&gt; on them, and ask them their
&lt;code&gt;size&lt;/code&gt; (i.e., their size in characters). I&#8217;m not sure what the purpose of this is. I&#8217;d just as soon
have symbols not be any more string-like than they absolutely have to be.&lt;/p&gt;


&lt;h3&gt;Gems are automatically in the load path&lt;/h3&gt;

	&lt;p&gt;When you start Ruby (or irb), your load path (&lt;code&gt;$:&lt;/code&gt;) will include the necessary
directories for all the gems on your system. That means you can just require
things, without having to require rubygems first. You can manipulate the load
path per gem version with the gem method.&lt;/p&gt;


&lt;h3&gt;Lots of enumerable methods return enumerators&lt;/h3&gt;

	&lt;p&gt;Called without a block, most enumerable methods now return an enumerator. It&#8217;s
fairly unusual to use the return value of blockless calls to &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;select&lt;/code&gt;, and
others, but it&#8217;s worth knowing that now you cannot assume that, for example,
&lt;code&gt;Array#each&lt;/code&gt; will always return its receiver.&lt;/p&gt;


	&lt;p&gt;You can use this feature to chain enumerators, though the circumstances in which
chaining enumerators really buys you anything are pretty few. I don&#8217;t
know of a case where you would do this:&lt;/p&gt;


&lt;pre&gt;
  array.map.other_method { ... }
&lt;/pre&gt;

	&lt;p&gt;with the exception of &lt;code&gt;map.with_index&lt;/code&gt;. The &lt;code&gt;map&lt;/code&gt; call is essentially a pass-through
filter here. (This was not true in early versions of 1.9, where you could attach
knowledge of a block to a chained enumerator, but that behavior was removed.)&lt;/p&gt;


	&lt;p&gt;Incidentally, you win the prize (which is endless glory :-) if you can account
for the difference between these two snippets:&lt;/p&gt;


&lt;pre&gt;
  &amp;gt;&amp;gt; {1 =&amp;gt; 2}.select {|x,y| x }
  =&amp;gt; {1=&amp;gt;2}
  &amp;gt;&amp;gt; {1 =&amp;gt; 2}.select.select {|x,y| x }
  =&amp;gt; [[1, 2]]
&lt;/pre&gt;

	&lt;p&gt;It&#8217;s all about enumerators&#8230;.&lt;/p&gt;


	&lt;p&gt;If you&#8217;re careful about these changes, and keep an eye out for others, you should be able to
continue to have fun with Ruby in version 1.9 and beyond!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2008-12-29:337</id>
    <published>2008-12-29T15:13:00Z</published>
    <updated>2008-12-29T15:14:38Z</updated>
    <category term="Coolth and Weirdth"/>
    <category term="Events"/>
    <category term="Friends"/>
    <category term="Ruby"/>
    <link href="http://dablog.rubypal.com/2008/12/29/cool-wishlist-management-at-wishsight" rel="alternate" type="text/html"/>
    <title>Cool wishlist management at WishSight!</title>
<content type="html">
            &lt;p&gt;Announcing the opening of &lt;a href=&quot;http://www.wishsight.com&quot;&gt;WishSight&lt;/a&gt;!&lt;/p&gt;


	&lt;p&gt;WishSight is for managing wishlists and gift-giving. It lets you see who&#8217;s given (or promised) what to whom, and it lets gift-givers for particular people communicate with each other, via a comment-board, so that they don&#8217;t duplicate gifts.&lt;/p&gt;


	&lt;p&gt;It&#8217;s based on a Christmas-list application I wrote in 2005 that my family and friends have been using every year since then. It&#8217;s completely merchant-unaffiliated. You can post links for the gifts you want,
and they can be links to any merchant.&lt;/p&gt;


	&lt;p&gt;WishSight helps you cut down on gift duplication, and increases the chances that people will get things they actually want, without the gift-givers having to do a round-robin of email or phone calls to pin down who&#8217;s buying what. And chances are they don&#8217;t all know each other anyway&amp;mdash;which doesn&#8217;t matter on WishSight, because you all communicate by leaving comments directly on your mutual friend&#8217;s wishlist.&lt;/p&gt;


	&lt;p&gt;All you have to do is:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;sign up&lt;/li&gt;
		&lt;li&gt;list the email addresses of people who you want to be able to see your wishlist&lt;/li&gt;
		&lt;li&gt;get those people to sign up and &#8220;whitelist&#8221; your email address&lt;/li&gt;
		&lt;li&gt;list your wishes&lt;/li&gt;
		&lt;li&gt;stake &#8220;claims&#8221; on other people&#8217;s wishes&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;There&#8217;s no stealth: the email addresses are only used internally to determine who&#8217;s allowed to
see whose wishlist. Also, you can list email addresses even if the people haven&#8217;t signed up yet.
Once they do sign up, they will automatically have permission to see your wishlist and claim
your wishes. No two-sided &#8220;handshakes&#8221; required; you just whitelist people.&lt;/p&gt;


	&lt;p&gt;Have fun, and let me know if any questions or problems!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dablog.rubypal.com/">
    <author>
      <name>dblack</name>
    </author>
    <id>tag:dablog.rubypal.com,2008-12-21:320</id>
    <published>2008-12-21T15:59:00Z</published>
    <updated>2008-12-21T16:23:03Z</updated>
    <category term="Coolth and Weirdth"/>
    <category term="Friends"/>
    <link href="http://dablog.rubypal.com/2008/12/21/on-the-menu-this-season-muslims-and-gays" rel="alternate" type="text/html"/>
    <title>On the menu this season: Muslims and gays</title>
<content type="html">
            &lt;p&gt;Don&#8217;t get me wrong. I&#8217;m not saying that other forms of hate and prejudice are
extinct, or even on the wane. But it feels like the stars anti-Muslim sentiment
and homophobia are in the ascendancy.&lt;/p&gt;


	&lt;p&gt;It&#8217;s very much about statements that don&#8217;t sound aggressive or hateful, on the
surface, but that would never be made if hate didn&#8217;t lurk just below. I&#8217;m thinking,
for example, of a report I heard on the radio of some attack or other, involving
&#8220;three Muslims of middle-eastern descent.&#8221; I might have the phrasing of the &#8220;middle-eastern
descent&#8221; part wrong (though it was that or close to it). In any case, the salient bit, for
me, was &#8220;three Muslims.&#8221;&lt;/p&gt;


	&lt;p&gt;When was the last time you heard a crime described as having been committed by &#8220;three
Christians&#8221;? How about &#8220;A Jew broke into a convenience store&#8230;&#8221;? So what&#8217;s up with &#8220;three
Muslims&#8221;?&lt;/p&gt;


	&lt;p&gt;What&#8217;s up, of course, is hate. I don&#8217;t think the radio announcer or the newswriter hates Muslims.
But they do operate under a compulsion to mention explicitly that Muslims are Muslims, and
ultimately that&#8217;s so that the listenership can be put on alert to hate them. Does the
phrase &#8220;three Muslims&#8221; have explanatory power? Did these people do whatever they did
&lt;i&gt;because&lt;/i&gt; they are Muslims? No. There&#8217;s no reason to mention their religion except
out of habit of mentioning the fact that Muslims are Muslims.&lt;/p&gt;


	&lt;p&gt;Back when I was a university professor (1992-2005; in this case somewhere around 2003, I think),
the school newspaper had a kind of &#8220;person-in-the-street&#8221; feature, where they&#8217;d ask a few
people around campus a question and print selected answers. One week, the question was something
about Iraq. One of the people quoted in the feature said something along the lines of, &#8220;Bomb them
all off the face of the earth.&#8221; Or &#8220;Blow them all up&#8221;&amp;mdash;words to that effect.&lt;/p&gt;


	&lt;p&gt;My response was to call the editor-in-chief of the newspaper into my office and have a little
chat with him. I was under no institutional imperative to do so&amp;mdash;I was not involved with the paper directly&amp;mdash;but
it seemed to me that I had an opportunity to teach him perhaps the most important lesson of his
college career. &#8220;If the question of the week had been about how to improve the cafeteria food,&#8221; I asked
him, &#8220;and someone had said, &#8216;Line the whole cafeteria staff against the wall and shoot them dead,&#8217; would
you have printed it?&#8221;&lt;/p&gt;


	&lt;p&gt;Of course he would not have, and said that he would not have. &#8220;The fact that what we would not
say about the cafeteria workers, we &lt;i&gt;would&lt;/i&gt; say about the entire population of
a Muslim country,&#8221; I explained, &#8220;is the
dehumanization process at work.&#8221; I do believe he understood and took my point on board.&lt;/p&gt;


	&lt;p&gt;So we mention that people are Muslims, and we lower the bar when it comes to suggesting (or, if you
like, joking about) their violent deaths. And it&#8217;s all very dangerous and should be sending up
serious alarms.&lt;/p&gt;


	&lt;p&gt;Labeling the gay as gay is an even more popular pastime. The world has settled for a breathtakingly
stunted view of what homosexuality entails, and how it manifests itself. It manifests itself, by the
way, as itself, not as an obsession with the song &#8220;YMCA&#8221; or an expertise in designer footware. Hey, more power
to you if you have that expertise. But the set of all men who do intersects in a miniscule subset with the set
of all men whose primary sexual orientation is toward men. Ditto for all the stereotypes.&lt;/p&gt;


	&lt;p&gt;Of course, the world can&#8217;t
deal with the idea that homosexuality manifests itself only as itself, because if that&#8217;s true, it means
you can&#8217;t tell who&#8217;s gay; and that,
like being unable to tell who&#8217;s Jewish, is unacceptable. The workaround is to &lt;i&gt;pretend&lt;/i&gt; that
you can tell who&#8217;s gay, resorting to babytalk about your &#8220;gaydar&#8221; when the stereotypes, as they must,
fail you.&lt;/p&gt;


	&lt;p&gt;And then, following a fairly tight train of thought, there&#8217;s hatred of gays.&lt;/p&gt;


	&lt;p&gt;First of all, let me explain that I include, as hatred, the &#8220;love the sinner, hate the sin&#8221; horseshit
espoused by the Catholic church. It is, to be sure, a kinder, gentler hatred than the burning-at-the-stake kind. The
idea is that you&#8217;re enlightened enough to acknowledge that some people just are gay. But you also understand that,
as gays, they must never indulge in the kinds of sexual activities they feel interested in. So you, as the
compassionate believer, offer to contribute to their happiness by giving them support and encouragement
as they fight to maintain their chastity.&lt;/p&gt;


	&lt;p&gt;How noble.&lt;/p&gt;


	&lt;p&gt;The church, of course, has two thousand years of experience disguising hate as love. But this one is
particularly devious and malign. Let&#8217;s cut to the chase: the only reason that one adult human being
would try to stop another adult human being, on a lifelong basis, from attaining romantic and/or
erotic satisfaction is that he or she (human one) &lt;i&gt;hates&lt;/i&gt; him or her (human two). No amount
of theological stroking can change that. It&#8217;s hate.&lt;/p&gt;


	&lt;p&gt;Not news, of course, that the Pope and friends hate gays. But interesting to see how slimy and
prurient they can get, in the process. Anyway, let&#8217;s move on.&lt;/p&gt;


	&lt;p&gt;Actually we can borrow a concept from the church: &#8220;invincible ignorance.&#8221; When I read the stuff about
homosexuality being a choice (note that it&#8217;s not that sexual preference is a choice, just homosexuality&amp;mdash;which
makes it kind of weird to describe it as a choice), my reaction is that if you put twenty articulate, knowledgeable
people in a room for twenty years with the person who&#8217;s taking the &#8220;choice&#8221; position, that person would emerge
still saying that homosexuality is a choice. There&#8217;s no point of entry for explanation, and no point of contact with
reality.&lt;/p&gt;


	&lt;p&gt;It&#8217;s pathetic, but I still count it as hate. At least it leads to hate. Or from hate, perhaps. Or maybe these people are
actually choosing to be vicious, and could stop themselves if they really wanted to. It&#8217;s hard to know. They&#8217;re
not saying.&lt;/p&gt;


	&lt;p&gt;With gay marriage on the news radar these days, more and more of this kind of discourse is showing up: the choice
thing, but also the &#8220;gays recruit people&#8221; thing (which is actually backwards; have these people ever watched television commercials?)
and, most disturbingly of all, the &#8220;gays prey on children&#8221; thing. And each of these things embodies two problems:
first, that people believe it; and second, that it&#8217;s acceptable to say it publicly.&lt;/p&gt;


	&lt;p&gt;Which hateful statements are acceptable and which aren&#8217;t is a kind of lump under the carpet that moves around
but never goes away. Unfortunately, the underlying hate never goes away either&amp;mdash;and ultimately, no matter
which targeted people or groups we&#8217;re talking about, it&#8217;s the underlying hate that matters. But who gets to say
what, and when, and with what consequences (or lack thereof) is, in itself, something that I think it&#8217;s worth
keeping fairly close tabs on.&lt;/p&gt;
          </content>  </entry>
</feed>
