<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>deekayen.net</title>
  <subtitle>online notebook</subtitle>
  <link rel="alternate" type="text/html" href="http://deekayen.net"/>
  <link rel="self" type="application/atom+xml" href="http://deekayen.net/atom/feed"/>
  <id>http://deekayen.net/atom/feed</id>
  <updated>2007-11-20T15:52:41+00:00</updated>
  <entry>
    <title>President Ham Sandwich</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/president-ham-sandwich" />
    <id>http://deekayen.net/president-ham-sandwich</id>
    <published>2008-05-13T20:31:53+00:00</published>
    <updated>2008-05-13T20:31:53+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="ham" />
    <category term="joke" />
    <category term="politics" />
    <category term="sandwich" />
    <summary type="html"><![CDATA[<p>I was talking about Bob Barr for president 2008 and one of my coworkers made some good points about how he's just an old-school Republican in Libertarian disguise. When I asked who I could vote for instead, he asked if he could write-in Ham Sandwich. The coworker on the opposite side of me said he'd like to vote for a poodle. That inevitably led to the question, how long before Vice President Poodle ate President Ham Sandwich?</p>    ]]></summary>
    <content type="html"><![CDATA[<p>I was talking about Bob Barr for president 2008 and one of my coworkers made some good points about how he's just an old-school Republican in Libertarian disguise. When I asked who I could vote for instead, he asked if he could write-in Ham Sandwich. The coworker on the opposite side of me said he'd like to vote for a poodle. That inevitably led to the question, how long before Vice President Poodle ate President Ham Sandwich?</p><a href="http://ypn-rss.overture.com/rss/31384/1243/click/"><img src="http://ypn-rss.overture.com/rss/31384/1243/img/?url=http%3A%2F%2Fdeekayen.net%2Fpresident-ham-sandwich&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>Zend Studio for Eclipse Drupal formatter</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/zend-studio-eclipse-drupal-formatter" />
    <id>http://deekayen.net/zend-studio-eclipse-drupal-formatter</id>
    <published>2008-05-05T17:33:31+00:00</published>
    <updated>2008-05-05T17:33:31+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="coding standards" />
    <category term="Drupal" />
    <category term="Eclipse" />
    <category term="PHP" />
    <category term="Zend" />
    <summary type="html"><![CDATA[<p>For years I've been a paying customer of <a href="http://www.zend.com/">Zend</a>, using their Zend Studio Professional. They discontinued production of their custom Java version and opted to switch to making plugins for <a href="http://www.eclipse.org/">Eclipse</a>.</p>
<p>I'm just now switching from the old Zend to the new one and discovered a formatter to handle all the code spacing automatically. Naturally, since I do most of my work with Drupal, I made a custom formatter file to follow coding standards for 4.7.x to 6.x. There have been some standards changes to take effect for D7, and I'm not coding for that yet, so this should be a good file for a general audience.</p>
<p>In your Zend for Eclipse or PDT install, go to the preferences, PHP section, Formatter and Import... the attached XML file.</p>
<p>Don't forget to also run your code through the <a href="http://drupal.org/project/coder/">coder module</a>, which will not only check your coding style, but look for upgrades, database injections, and some other cool things.</p>    ]]></summary>
    <content type="html"><![CDATA[<p>For years I've been a paying customer of <a href="http://www.zend.com/">Zend</a>, using their Zend Studio Professional. They discontinued production of their custom Java version and opted to switch to making plugins for <a href="http://www.eclipse.org/">Eclipse</a>.</p>
<p>I'm just now switching from the old Zend to the new one and discovered a formatter to handle all the code spacing automatically. Naturally, since I do most of my work with Drupal, I made a custom formatter file to follow coding standards for 4.7.x to 6.x. There have been some standards changes to take effect for D7, and I'm not coding for that yet, so this should be a good file for a general audience.</p>
<p>In your Zend for Eclipse or PDT install, go to the preferences, PHP section, Formatter and Import... the attached XML file.</p>
<p>Don't forget to also run your code through the <a href="http://drupal.org/project/coder/">coder module</a>, which will not only check your coding style, but look for upgrades, database injections, and some other cool things.</p><a href="http://ypn-rss.overture.com/rss/31384/1242/click/"><img src="http://ypn-rss.overture.com/rss/31384/1242/img/?url=http%3A%2F%2Fdeekayen.net%2Fzend-studio-eclipse-drupal-formatter&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>Bah humbug Yahoo!</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/bah-humbug-yahoo" />
    <id>http://deekayen.net/bah-humbug-yahoo</id>
    <published>2008-05-03T05:11:10+00:00</published>
    <updated>2008-05-03T05:21:35+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="Geocities" />
    <category term="Yahoo!" />
    <summary type="html"><![CDATA[<p>I signed up for a free website with Geocities in 1997 and shortly thereafter discovered and became part of the Community Leader program. We made websites and "patrolled" our local "communities" for good and bad content. Award programs, forums, and lots of friends were made. Geocities even thanked us Community Leaders by giving us a distribution of stock when they went public, expanding the available disk space in our homepages, and sent us t-shirts.</p>
<p>In 1999, Yahoo! bought Geocities, dismantled the group of <em>volunteer</em> Community Leaders, and buried the whole concept of communities of neighborhoods and blocks that made Geocities so unique.</p>
<p>I moved off to college and left most of what I knew about the old Geocities behind, but I did occasionally reference the webpages I created over the years, even still today. When I asked out the girl who is now my wife, I created a HTML file about it on my Geocities site, which is now gone. I even had someone at my new job find my Geocities site through Google about 2 weeks ago when they were searching for some information I had published there.</p>
<p>Tonight, I decided to finally upgrade to the premium service for Geocities to get FTP access to my files. I've been reluctant to do it for years, but gave it a whirl anyway. As soon as I submitted the upgrade order, all my Geocities site was deleted. I didn't even get to use the FTP "feature" to download the files into a backup. If I had known that would happen, I would have saved the money and used the <a href="http://www.downthemall.net/">DownloadThemAll!</a> Firefox addon to just download the view links in the <em>free</em> File Manager in an automated way.</p>
<p>When I read the policy to discontinue the premium service, I don't even get a refund on the unpaid days I won't use. I won't use them because I yanked my decade-old account in my disgust. I had previously included Yahoo! in my list of webhosts as the cheap option when people ask me where to host, but I do not recommend places I have bad experiences with. Currently, my list of recommendations is reduced to <a href="http://www.pair.com/">Pair</a>, <a href="http://csoft.net/">Cubesoft</a>, and <a href="http://www.joyent.com/">Joyent</a>. People ask why each of those are so expensive; I don't think they're expensive at all. You get what you pay for. In the case of Geocities, I have paid and have nothing.</p>
<p>As I reflect on what I've done with regards to this, I can't help but be comforted with my decision since Yahoo! is all mangled up with talks of getting sold or merging with other big monster companies. I'm especially not fond of the prospect of Microsoft getting even larger.</p>
<p>Publicly traded websites like Yahoo! are, if they haven't already, losing their way in the wake of finding ways to grow. I wonder why not more owners don't just find a comfortable size and sell or spin off the rest.</p>
<p>So for anyone who knows what my old Yahoo!/Geocities account was, I have finally shed it, all the spam it's mail account received, and the last remnant of the nickname from my online life.</p>    ]]></summary>
    <content type="html"><![CDATA[<p>I signed up for a free website with Geocities in 1997 and shortly thereafter discovered and became part of the Community Leader program. We made websites and "patrolled" our local "communities" for good and bad content. Award programs, forums, and lots of friends were made. Geocities even thanked us Community Leaders by giving us a distribution of stock when they went public, expanding the available disk space in our homepages, and sent us t-shirts.</p>
<p>In 1999, Yahoo! bought Geocities, dismantled the group of <em>volunteer</em> Community Leaders, and buried the whole concept of communities of neighborhoods and blocks that made Geocities so unique.</p>
<p>I moved off to college and left most of what I knew about the old Geocities behind, but I did occasionally reference the webpages I created over the years, even still today. When I asked out the girl who is now my wife, I created a HTML file about it on my Geocities site, which is now gone. I even had someone at my new job find my Geocities site through Google about 2 weeks ago when they were searching for some information I had published there.</p>
<p>Tonight, I decided to finally upgrade to the premium service for Geocities to get FTP access to my files. I've been reluctant to do it for years, but gave it a whirl anyway. As soon as I submitted the upgrade order, all my Geocities site was deleted. I didn't even get to use the FTP "feature" to download the files into a backup. If I had known that would happen, I would have saved the money and used the <a href="http://www.downthemall.net/">DownloadThemAll!</a> Firefox addon to just download the view links in the <em>free</em> File Manager in an automated way.</p>
<p>When I read the policy to discontinue the premium service, I don't even get a refund on the unpaid days I won't use. I won't use them because I yanked my decade-old account in my disgust. I had previously included Yahoo! in my list of webhosts as the cheap option when people ask me where to host, but I do not recommend places I have bad experiences with. Currently, my list of recommendations is reduced to <a href="http://www.pair.com/">Pair</a>, <a href="http://csoft.net/">Cubesoft</a>, and <a href="http://www.joyent.com/">Joyent</a>. People ask why each of those are so expensive; I don't think they're expensive at all. You get what you pay for. In the case of Geocities, I have paid and have nothing.</p>
<p>As I reflect on what I've done with regards to this, I can't help but be comforted with my decision since Yahoo! is all mangled up with talks of getting sold or merging with other big monster companies. I'm especially not fond of the prospect of Microsoft getting even larger.</p>
<p>Publicly traded websites like Yahoo! are, if they haven't already, losing their way in the wake of finding ways to grow. I wonder why not more owners don't just find a comfortable size and sell or spin off the rest.</p>
<p>So for anyone who knows what my old Yahoo!/Geocities account was, I have finally shed it, all the spam it's mail account received, and the last remnant of the nickname from my online life.</p><a href="http://ypn-rss.overture.com/rss/31384/1241/click/"><img src="http://ypn-rss.overture.com/rss/31384/1241/img/?url=http%3A%2F%2Fdeekayen.net%2Fbah-humbug-yahoo&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>Confidential GPL?</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/confidential-gpl" />
    <id>http://deekayen.net/confidential-gpl</id>
    <published>2008-04-08T02:23:40+00:00</published>
    <updated>2008-04-08T02:23:40+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="Drupal" />
    <category term="open source" />
    <summary type="html"><![CDATA[<p>I just dumped all over a someone who wanted me to do some work on their Drupal site and probably in the process walked away from doing work with them because the wanted me to sign a confidentiality agreement.</p>
<p>I have only ever signed a confidentiality agreement once, and it was when I did some work for Google. I only did it then because I thought it would be cool to say I worked for Google. I think then the agreement was 13 pages, so when this prospect sent me a 5 page agreement, I didn't think it'd be an issue until I read things like systems, inventions, computer software programs, consultants, employees qualifying as confidential information. They also had a clause where I would have to return all copies of anything to them when we cease business dealings.</p>
<p>So, I simply declined to sign, mentioned something about using reasonable judgment, and tried to explain why open source and Drupal continue to succeed. By tying my hands on what I would be able to discuss when debugging or what improvements to contrib modules I could give back, I'd be participating in hampering the optimal future success of the client and not doing my part to "pay" for the free software I so easily download.</p>
<p>I've said before, and it falls on deaf ears, if you make your living from an open source project, it's only right to give back to ensure its survival. That's why I've committed to <a href="http://association.drupal.org/donors">financial donations</a> every week alongside <a href="http://drupal.org/user/972/track/code">my code contributions</a>.</p>
<p><a href="http://drupal4hu.com/node/93">Release your code, it's worthless anyways</a> takes a slightly over dramatic view of it, but your code and attempts to keep it confidential are and old-fashioned effort that is no longer optimal. It is what you do with that code that is the new way of becoming an internet success. Use the open source environment as a resource for receiving other free contributions, bug reports and fixes and you'll outperform those who have the expensive in-house budgets to keep it all secret.</p>    ]]></summary>
    <content type="html"><![CDATA[<p>I just dumped all over a someone who wanted me to do some work on their Drupal site and probably in the process walked away from doing work with them because the wanted me to sign a confidentiality agreement.</p>
<p>I have only ever signed a confidentiality agreement once, and it was when I did some work for Google. I only did it then because I thought it would be cool to say I worked for Google. I think then the agreement was 13 pages, so when this prospect sent me a 5 page agreement, I didn't think it'd be an issue until I read things like systems, inventions, computer software programs, consultants, employees qualifying as confidential information. They also had a clause where I would have to return all copies of anything to them when we cease business dealings.</p>
<p>So, I simply declined to sign, mentioned something about using reasonable judgment, and tried to explain why open source and Drupal continue to succeed. By tying my hands on what I would be able to discuss when debugging or what improvements to contrib modules I could give back, I'd be participating in hampering the optimal future success of the client and not doing my part to "pay" for the free software I so easily download.</p>
<p>I've said before, and it falls on deaf ears, if you make your living from an open source project, it's only right to give back to ensure its survival. That's why I've committed to <a href="http://association.drupal.org/donors">financial donations</a> every week alongside <a href="http://drupal.org/user/972/track/code">my code contributions</a>.</p>
<p><a href="http://drupal4hu.com/node/93">Release your code, it's worthless anyways</a> takes a slightly over dramatic view of it, but your code and attempts to keep it confidential are and old-fashioned effort that is no longer optimal. It is what you do with that code that is the new way of becoming an internet success. Use the open source environment as a resource for receiving other free contributions, bug reports and fixes and you'll outperform those who have the expensive in-house budgets to keep it all secret.</p><a href="http://ypn-rss.overture.com/rss/31384/1238/click/"><img src="http://ypn-rss.overture.com/rss/31384/1238/img/?url=http%3A%2F%2Fdeekayen.net%2Fconfidential-gpl&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>Government deficits</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/government-deficits" />
    <id>http://deekayen.net/government-deficits</id>
    <published>2008-03-22T16:13:58+00:00</published>
    <updated>2008-03-22T16:15:12+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="debt" />
    <category term="deficit" />
    <category term="economy" />
    <category term="government" />
    <category term="spending" />
    <summary type="html"><![CDATA[<p>Last night I read a point of view by <a type="amzn" asin="0764134191">Walter J. Wessels</a> on the fiscal policy, government spending and taxation. He talked about the Laffer curve and how it is a part of the guideline for our progressive tax system. The progressive tax system where rich pay more is a kind of built-in stabilizer for the economy since if someone were to become unemployed or take a lesser paying job in an economic downturn, their relative change in their impact on GDP wouldn't be as bad as far as taxes are concerned.</p>
<p>What I was more concerned about was the impact of government deficits. The formula for it is quite simple:</p>
<blockquote><p>
Government spending = Tax revenues + Deficit
</p>
</p></blockquote>
<p>The US government (read: the US citizens) have several trillion dollars of debt now, <a href="http://www.reuters.com/article/bondsNews/idUSN0754579020071107">over 9 trillion</a> according to the Treasury. With economic growth, people earning more a week than their grandparents, does that debt matter?</p>
<p>The theory goes that eventually that debt, sold as government bonds, will have to be paid back. From what I can tell, there will always be some amount of government bonds sold on the market, which is not mentioned as part of this theory. Considering that the debt will all have to be paid back, the citizens would have to be collectively saving the amount that is accumulating as public debt.</p>
<p>Just taking some rough numbers, I see the public has been saving roughly $200 billion a year <a href="http://www.bankrate.com/brm/news/sav/20060308a1.asp">according to the St. Louis Federal Reserve Bank</a>. On the other hand, the US National Debt Clock estimates the national debt increasing at $1.65 billion per day. 1.65*365 = $602 billion of debt accumulation per year (a gap of $400 billion between what people are saving to have in reserve to have for paying off the national debt versus what is being accumulated.</p>
<p>Still, perhaps that doesn't matter. Economists have come to the conclusion that a deficit that stimulates the economy out of a recession into full employment will be a benefit, not a burden.  So then we should examine were employment has been.</p>
<p>The <a href="http://data.bls.gov/PDQ/servlet/SurveyOutputServlet?series_id=LNS14000000&amp;data_tool=%2522EaG%2522">Bureau of Labor Statistics unemployment chart</a> shows over the last 10 years or so that we've been accumulating debt, we have already been hovering around full employment rates since 5 percent is considered to be about full employment level since some people will always be quitting a job to look for a better one or inefficient companies get self-weeded out of the economy.</p>
<p>So what happens then when the government is stimulating the economy with tax cuts, more active open market operations from the Fed, and so on? According to my reading, deficits incurred when the economy is near full employment can be harmful. If people were to stop buying government bonds to renew the outstanding pubic debt and fund the new projected debts in social programs like medicare, the only possible outcomes are for the government to reduce spending, increase taxes to pay for spending as it happens, attract international investment, or print more money. Printing more money is the one thing that will absolutely lead to inflation.</p>
<p>We have attracted lots of international investment over the years. You might recall just recently the US dollar fell pretty sharply against the Euro. People were dumping their investments here from international sources. A falling dollar makes it harder for US citizens to buy all the products that have moved overseas to be produced because we have to spend more dollars across the exchange rate.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Last night I read a point of view by <a type="amzn" asin="0764134191">Walter J. Wessels</a> on the fiscal policy, government spending and taxation. He talked about the Laffer curve and how it is a part of the guideline for our progressive tax system. The progressive tax system where rich pay more is a kind of built-in stabilizer for the economy since if someone were to become unemployed or take a lesser paying job in an economic downturn, their relative change in their impact on GDP wouldn't be as bad as far as taxes are concerned.</p>
<p>What I was more concerned about was the impact of government deficits. The formula for it is quite simple:</p>
<blockquote><p>
Government spending = Tax revenues + Deficit
</p></blockquote>
<p>The US government (read: the US citizens) have several trillion dollars of debt now, <a href="http://www.reuters.com/article/bondsNews/idUSN0754579020071107">over 9 trillion</a> according to the Treasury. With economic growth, people earning more a week than their grandparents, does that debt matter?</p>
<p>The theory goes that eventually that debt, sold as government bonds, will have to be paid back. From what I can tell, there will always be some amount of government bonds sold on the market, which is not mentioned as part of this theory. Considering that the debt will all have to be paid back, the citizens would have to be collectively saving the amount that is accumulating as public debt.</p>
<p>Just taking some rough numbers, I see the public has been saving roughly $200 billion a year <a href="http://www.bankrate.com/brm/news/sav/20060308a1.asp">according to the St. Louis Federal Reserve Bank</a>. On the other hand, the US National Debt Clock estimates the national debt increasing at $1.65 billion per day. 1.65*365 = $602 billion of debt accumulation per year (a gap of $400 billion between what people are saving to have in reserve to have for paying off the national debt versus what is being accumulated.</p>
<p>Still, perhaps that doesn't matter. Economists have come to the conclusion that a deficit that stimulates the economy out of a recession into full employment will be a benefit, not a burden.  So then we should examine were employment has been.</p>
<p>The <a href="http://data.bls.gov/PDQ/servlet/SurveyOutputServlet?series_id=LNS14000000&amp;data_tool=%2522EaG%2522">Bureau of Labor Statistics unemployment chart</a> shows over the last 10 years or so that we've been accumulating debt, we have already been hovering around full employment rates since 5 percent is considered to be about full employment level since some people will always be quitting a job to look for a better one or inefficient companies get self-weeded out of the economy.</p>
<p>So what happens then when the government is stimulating the economy with tax cuts, more active open market operations from the Fed, and so on? According to my reading, deficits incurred when the economy is near full employment can be harmful. If people were to stop buying government bonds to renew the outstanding pubic debt and fund the new projected debts in social programs like medicare, the only possible outcomes are for the government to reduce spending, increase taxes to pay for spending as it happens, attract international investment, or print more money. Printing more money is the one thing that will absolutely lead to inflation.</p>
<p>We have attracted lots of international investment over the years. You might recall just recently the US dollar fell pretty sharply against the Euro. People were dumping their investments here from international sources. A falling dollar makes it harder for US citizens to buy all the products that have moved overseas to be produced because we have to spend more dollars across the exchange rate.</p>
<a href="http://ypn-rss.overture.com/rss/31384/1236/click/"><img src="http://ypn-rss.overture.com/rss/31384/1236/img/?url=http%3A%2F%2Fdeekayen.net%2Fgovernment-deficits&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>Automate unchecking checkboxes</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/automate-unchecking-checkboxes" />
    <id>http://deekayen.net/automate-unchecking-checkboxes</id>
    <published>2008-03-17T21:03:36+00:00</published>
    <updated>2008-03-18T16:00:51+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="checkbox" />
    <category term="Drupal" />
    <category term="greasemonkey" />
    <summary type="html"><![CDATA[<p>I'm doing some testing of an upgrade for a site from <a href="http://drupal.org/">Drupal</a> 4.7.x to 5.x. As part of the major version upgrades in Drupal, you're supposed to disable all the modules you have installed. Since I got tired of unchecking boxes, I used the <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a> addon for <a href="http://www.mozilla.com/">Firefox</a> 2 to do it for me.</p>
<p>Once the addon is installed, right click on the monkey face in your status bar and make a new user script.</p>
<pre>
name: Uncheck Boxes
namespace: uncheck_boxes
description: Unchecks all checkboxes that are enabled by default
include: <a href="http://yourtestlocation/admin/modules" title="http://yourtestlocation/admin/modules">http://yourtestlocation/admin/modules</a>
</pre><p>
When you hit ok, your default text editor will ask you for script content.</p>
<p>
<div class="codeblock"><code>// ==UserScript==&lt;br /&gt;// @name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Uncheck Boxes&lt;br /&gt;// @namespace&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uncheck_boxes&lt;br /&gt;// @description&amp;nbsp;&amp;nbsp;&amp;nbsp; Unchecks all checkboxes enabled by default&lt;br /&gt;// @include&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;http://davidnorman.local/test25/admin/modules&quot; title=&quot;http://davidnorman.local/test25/admin/modules&quot;&gt;http://davidnorman.local/test25/admin/modules&lt;/a&gt;&lt;br /&gt;// ==/UserScript==&lt;br /&gt;&lt;br /&gt;var chkboxes=document.getElementsByTagName(&amp;#039;input&amp;#039;)&lt;br /&gt;for (var i=0; i &amp;lt; chkboxes.length; i++) {&lt;br /&gt;&amp;nbsp; if (chkboxes[i].type==&amp;quot;checkbox&amp;quot;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; chkboxes[i].checked=false&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}</code></div>
</p>
<p>That's it! Reload your modules page and all the checkboxes should be unchecked by default. When you're done disabling, you can right click the monkey face and uncheck your Uncheck Boxes script, disable Greasemonkey, or leave it available for other sites you want to uncheck by default.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I'm doing some testing of an upgrade for a site from <a href="http://drupal.org/">Drupal</a> 4.7.x to 5.x. As part of the major version upgrades in Drupal, you're supposed to disable all the modules you have installed. Since I got tired of unchecking boxes, I used the <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a> addon for <a href="http://www.mozilla.com/">Firefox</a> 2 to do it for me.</p>
<p>Once the addon is installed, right click on the monkey face in your status bar and make a new user script.</p>
<pre>
name: Uncheck Boxes
namespace: uncheck_boxes
description: Unchecks all checkboxes that are enabled by default
include: <a href="http://yourtestlocation/admin/modules" title="http://yourtestlocation/admin/modules">http://yourtestlocation/admin/modules</a>
</pre><p>
When you hit ok, your default text editor will ask you for script content.</p>
<p><div class="codeblock"><code>// ==UserScript==<br />// @name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Uncheck Boxes<br />// @namespace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uncheck_boxes<br />// @description&nbsp;&nbsp;&nbsp; Unchecks all checkboxes enabled by default<br />// @include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://davidnorman.local/test25/admin/modules" title="http://davidnorman.local/test25/admin/modules">http://davidnorman.local/test25/admin/modules</a><br />// ==/UserScript==<br /><br />var chkboxes=document.getElementsByTagName(&#039;input&#039;)<br />for (var i=0; i &lt; chkboxes.length; i++) {<br />&nbsp; if (chkboxes[i].type==&quot;checkbox&quot;) {<br />&nbsp;&nbsp;&nbsp; chkboxes[i].checked=false<br />&nbsp; }<br />}</code></div></p>
<p>That's it! Reload your modules page and all the checkboxes should be unchecked by default. When you're done disabling, you can right click the monkey face and uncheck your Uncheck Boxes script, disable Greasemonkey, or leave it available for other sites you want to uncheck by default.</p>
<a href="http://ypn-rss.overture.com/rss/31384/1235/click/"><img src="http://ypn-rss.overture.com/rss/31384/1235/img/?url=http%3A%2F%2Fdeekayen.net%2Fautomate-unchecking-checkboxes&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>My Firefox2 addons</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/my-firefox2-addons" />
    <id>http://deekayen.net/my-firefox2-addons</id>
    <published>2008-03-17T17:11:52+00:00</published>
    <updated>2008-04-05T20:15:32+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="firefox" />
    <summary type="html"><![CDATA[<p>I've been using <a href="http://arvidaxelsson.se/qute/">Qute</a> as my theme for probably years now. I have tried others, but I keep coming back to Qute. The rest of this list is extensions.</p>
<ol>
<li><a href="http://adblockplus.org/">Adblock Plus</a> Turned off most of the time, but doesn't load ads on webpages when it is enabled.</li>
<li style="font-weight: bold"><a href="http://autocopy.mozdev.org/">Autocopy</a> Copies text you highlight in Firefox to the clipboard automatically.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/1478">Clipboard Save As</a> Save the clipboard as a file.</li>
<li><a href="http://www.iosart.com/firefox/colorzilla/">ColorZilla</a> For those rare times I do website themeing and want to know what a hex color value is on a different website I like.</li>
<li><a href="http://cookieswap.mozdev.org/">CookieSwap</a> Switch users on the same website without having to logout.</li>
<li><a href="http://www.customizegoogle.com/">CustomizeGoogle</a> My favorite options: turn off Google's tracking cookies but still be logged in, removes ads from google.com pages, adds links to competitors, refuse cookies from Google Analytics (though I also let NoScript refuse those), and auto-switch to https where possible.</li>
<li><a href="http://www.gness.com/distrust/">Distrust</a> For when I want to minimize traces of my browsing for a short period of time.</li>
<li style="font-weight: bold"><a href="http://www.downthemall.net/">DownThemAll!</a> I originally installed this to download all the MP3s on webpage I subscribed to without having to click 50 links (it let me just download everything with .mp3 ink the link very easily). Now I use it because it saves download location favorites, has a nicer download queue than Firefox's default, and has some resume functionality I can interact with.</li>
<li><a href="http://www.getfirebug.com/">Firebug</a> Just standard to the web developer's toolkit now. I most often use it with <a href="http://developer.yahoo.com/yslow/">YSlow</a> for optimizing page loading performance. It's supposed to help with javascript debugging, too, but I can't speak to that.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/2109">FEBE</a> It backs up your Firefox config and addons. I think it might only be useful if you're afraid your hard drive will crash and Firefox will stop allowing downloads of addons to replace them at the same time.</li>
<li style="font-weight: bold"><a href="http://fireftp.mozdev.org/">FireFTP</a> FTP Client that's actually pretty good.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/1882">Formfiller</a> Fills in repetitive forms more easily.</li>
<li style="font-weight: bold"><a href="http://foxyproxy.mozdev.org/">FoxyProxy</a> I used to use <a href="http://freehaven.net/~squires/torbutton/">Torbutton</a> instead of this, but FoxyProxy has a configuration wizard to setup for working with Tor and it lets you set white and blacklist rules for sites you want to be proxied. This was especially an issue for me when I wouldn't want my localhost/127.0.0.1/davidnorman.local requests to go through privoxy or I wanted to send traffic I didn't trust with a random Tor exit server.</li>
<li><a href="http://www.google.com/tools/firefox/sendtophone/">Google Send to Phone</a> Sends text messages for free.</li>
<li><a href="http://www.greasespot.net/">Greasemonkey</a> A quick way to write interface modifications for webpages if you're handy at scripting.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/3899">Hackbar</a> A toolbar for shortcuts to creating tests for SQL injections.</li>
<li><a href="http://www.iopus.com/imacros/firefox/">iMacros for Firefox</a> When I was selecting and submitting a form over and over again, this was a cool way to record what I did one time, then just replay it for each new test.</li>
<li><a href="http://www.kevinfreitas.net/extensions/measureit/">MeasureIt</a> A pixel ruler. There's also one in the <a href="http://chrispederick.com/work/web-developer/">Web Developer</a> addon, but this one gets added to the bottom left of the status bar for easy finding next to the <a href="http://www.iosart.com/firefox/colorzilla/">ColorZilla</a> and <a href="http://www.gusprevas.com/palettegrabber/">Palette Grabber</a> buttons.</li>
<li><a href="http://noscript.net/">NoScript</a> Blocks Javascript, Flash, Java, and suspicious redirects by default.</li>
<li><a href="http://www.gnuman.ru/pte/">Page Title Eraser</a> Useful when you're taking a screenshot and don't want the recipient to know where the website is (e.g. intranet, client who hasn't paid, etc)</li>
<li style="font-weight: bold"><a href="http://pasteandgo2.mozdev.org/">Paste and Go 2</a> One of the simple pleasure addons that allowes you to right-click in the address bar, select "Paste and go 2" and you instantly load the page without having to click go or hit enter.</li>
<li><a href="http://www.stardrifter.org/refcontrol/">refcontrol</a> Control who you send Referrer headers to.</li>
<li style="font-weight: bold"><a href="http://trac.arantius.com/wiki/Extensions/Resurrect">Resurrect Pages</a> When a page is Not Found, this will add links to various Internet archives and search engine caches to find an old version of the URL.</li>
<li style="font-weight: bold"><a href="http://www.screengrab.org/">Screen Grab!</a> Save a webpage as an image (screenshot). Saves as a PNG. Not much to say, but it's a great tool; I use it often.</li>
<li style="font-weight: bold"><a href="http://exaltations.net/weblogs/christefano/a_more_secure_drupal_org">securedrupalorg</a> Automatically redirects requests from <a href="http://drupal.org/user" title="http://drupal.org/user">http://drupal.org/user</a> to <a href="https://drupal.org/user" title="https://drupal.org/user">https://drupal.org/user</a>.</li>
<li style="font-weight: bold"><a href="http://labs.beffa.org/sendreferer/">Send Referer</a> By default, turns off sending Referers to webpages unless you select to open the link by right clicking to select the Open Links with Referer Header option.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/4336">Snap Links</a> Right-click drag over a group of links and open them all in new tabs automatically. Doesn't work on Mac, but I like it on Linux and Windows.</li>
<li style="font-weight: bold"><a href="https://addons.mozilla.org/en-US/firefox/addon/3275">Split Pannel</a> Like the split screen you might know better from MS Word. Lets you use the side panel as a website browser so you can view two pages next to each other. <a href="http://piro.sakura.ne.jp/xul/_splitbrowser.html.en">Split Browser</a> has more features, but I've pinpointed it as the cause for my Firefox crashing lots.</a></li>
<li style="font-weight: bold"><a href="http://tmp.garyr.net/">Tab Mix Plus</a> Instead of having my tabs spill off the screen when I open lots, I stack them in rows. It also has features for freezing, protecting, locking, reloading, recovering, resizing, renaming, and other things to tabs.</li>
<li style="font-weight: bold"><a href="https://addons.mozilla.org/en-US/firefox/addon/2063">Timestamp Converter</a> Popup mini app for converting UNIX timestamps to something readable or vice versa.</li>
<li><a href="http://dev.deboot.sk/firefox/timestampdecode/">Timestamp Decode</a> Does the same thing as <a href="https://addons.mozilla.org/en-US/firefox/addon/2063">Timestamp Converter</a>, but based on text you highlight. It's hard to remember I have this option, so I'm not sure I've actually used it.</li>
<li><a href="http://www.contrex.ca/gecko/">Unhide Passwords</a> Lets you see the text in a password field instead of just asterisks. <a href="http://chrispederick.com/work/web-developer/">Web Developer</a> has something similar, but this addon is turned on all password fields all the time. Unfortunately, it doesn't catch every password field and convert it to plaintext.</li>
<li><a href="http://www.chrisfinke.com/addons/url-fixer/">URL Fixer</a> Auto-fixes common typos in the URL bar.</li>
<li><a href="http://www.fnxweb.com/software-mozilla">URL Link</a> Visit a URL by right clicking on it when the website author didn't make it clickable (by wrapping it in a HREF tag).</li>
<li><a href="http://chrispederick.com/work/user-agent-switcher/">User Agent Switcher</a> If you've never tried it, sometimes websites show different content if you pretend to be Googlebot.</li>
<li style="font-weight: bold"><a href="http://chrispederick.com/work/web-developer/">Web Developer</a> If you're a web developer, you're probably already nodding your head about just how essential this addon is.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/3960">Xdebug Helper</a> I had to modify this one's XPI source to get it working. Worth the trouble if you use Xdebug.</li>
<li><a href="http://developer.yahoo.com/yslow/">YSlow</a> Gives you advice on how to optimize your webpage.</li>
<li><a href="http://www.zend.com/">Zend Studio Toolbar</a> Debug helper. A must if you're using Zend Studio to step through files.</li>
</ol>
    ]]></summary>
    <content type="html"><![CDATA[<p>I've been using <a href="http://arvidaxelsson.se/qute/">Qute</a> as my theme for probably years now. I have tried others, but I keep coming back to Qute. The rest of this list is extensions.</p>
<ol>
<li><a href="http://adblockplus.org/">Adblock Plus</a> Turned off most of the time, but doesn't load ads on webpages when it is enabled.</li>
<li style="font-weight: bold"><a href="http://autocopy.mozdev.org/">Autocopy</a> Copies text you highlight in Firefox to the clipboard automatically.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/1478">Clipboard Save As</a> Save the clipboard as a file.</li>
<li><a href="http://www.iosart.com/firefox/colorzilla/">ColorZilla</a> For those rare times I do website themeing and want to know what a hex color value is on a different website I like.</li>
<li><a href="http://cookieswap.mozdev.org/">CookieSwap</a> Switch users on the same website without having to logout.</li>
<li><a href="http://www.customizegoogle.com/">CustomizeGoogle</a> My favorite options: turn off Google's tracking cookies but still be logged in, removes ads from google.com pages, adds links to competitors, refuse cookies from Google Analytics (though I also let NoScript refuse those), and auto-switch to https where possible.</li>
<li><a href="http://www.gness.com/distrust/">Distrust</a> For when I want to minimize traces of my browsing for a short period of time.</li>
<li style="font-weight: bold"><a href="http://www.downthemall.net/">DownThemAll!</a> I originally installed this to download all the MP3s on webpage I subscribed to without having to click 50 links (it let me just download everything with .mp3 ink the link very easily). Now I use it because it saves download location favorites, has a nicer download queue than Firefox's default, and has some resume functionality I can interact with.</li>
<li><a href="http://www.getfirebug.com/">Firebug</a> Just standard to the web developer's toolkit now. I most often use it with <a href="http://developer.yahoo.com/yslow/">YSlow</a> for optimizing page loading performance. It's supposed to help with javascript debugging, too, but I can't speak to that.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/2109">FEBE</a> It backs up your Firefox config and addons. I think it might only be useful if you're afraid your hard drive will crash and Firefox will stop allowing downloads of addons to replace them at the same time.</li>
<li style="font-weight: bold"><a href="http://fireftp.mozdev.org/">FireFTP</a> FTP Client that's actually pretty good.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/1882">Formfiller</a> Fills in repetitive forms more easily.</li>
<li style="font-weight: bold"><a href="http://foxyproxy.mozdev.org/">FoxyProxy</a> I used to use <a href="http://freehaven.net/~squires/torbutton/">Torbutton</a> instead of this, but FoxyProxy has a configuration wizard to setup for working with Tor and it lets you set white and blacklist rules for sites you want to be proxied. This was especially an issue for me when I wouldn't want my localhost/127.0.0.1/davidnorman.local requests to go through privoxy or I wanted to send traffic I didn't trust with a random Tor exit server.</li>
<li><a href="http://www.google.com/tools/firefox/sendtophone/">Google Send to Phone</a> Sends text messages for free.</li>
<li><a href="http://www.greasespot.net/">Greasemonkey</a> A quick way to write interface modifications for webpages if you're handy at scripting.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/3899">Hackbar</a> A toolbar for shortcuts to creating tests for SQL injections.</li>
<li><a href="http://www.iopus.com/imacros/firefox/">iMacros for Firefox</a> When I was selecting and submitting a form over and over again, this was a cool way to record what I did one time, then just replay it for each new test.</li>
<li><a href="http://www.kevinfreitas.net/extensions/measureit/">MeasureIt</a> A pixel ruler. There's also one in the <a href="http://chrispederick.com/work/web-developer/">Web Developer</a> addon, but this one gets added to the bottom left of the status bar for easy finding next to the <a href="http://www.iosart.com/firefox/colorzilla/">ColorZilla</a> and <a href="http://www.gusprevas.com/palettegrabber/">Palette Grabber</a> buttons.</li>
<li><a href="http://noscript.net/">NoScript</a> Blocks Javascript, Flash, Java, and suspicious redirects by default.</li>
<li><a href="http://www.gnuman.ru/pte/">Page Title Eraser</a> Useful when you're taking a screenshot and don't want the recipient to know where the website is (e.g. intranet, client who hasn't paid, etc)</li>
<li style="font-weight: bold"><a href="http://pasteandgo2.mozdev.org/">Paste and Go 2</a> One of the simple pleasure addons that allowes you to right-click in the address bar, select "Paste and go 2" and you instantly load the page without having to click go or hit enter.</li>
<li><a href="http://www.stardrifter.org/refcontrol/">refcontrol</a> Control who you send Referrer headers to.</li>
<li style="font-weight: bold"><a href="http://trac.arantius.com/wiki/Extensions/Resurrect">Resurrect Pages</a> When a page is Not Found, this will add links to various Internet archives and search engine caches to find an old version of the URL.</li>
<li style="font-weight: bold"><a href="http://www.screengrab.org/">Screen Grab!</a> Save a webpage as an image (screenshot). Saves as a PNG. Not much to say, but it's a great tool; I use it often.</li>
<li style="font-weight: bold"><a href="http://exaltations.net/weblogs/christefano/a_more_secure_drupal_org">securedrupalorg</a> Automatically redirects requests from <a href="http://drupal.org/user" title="http://drupal.org/user">http://drupal.org/user</a> to <a href="https://drupal.org/user" title="https://drupal.org/user">https://drupal.org/user</a>.</li>
<li style="font-weight: bold"><a href="http://labs.beffa.org/sendreferer/">Send Referer</a> By default, turns off sending Referers to webpages unless you select to open the link by right clicking to select the Open Links with Referer Header option.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/4336">Snap Links</a> Right-click drag over a group of links and open them all in new tabs automatically. Doesn't work on Mac, but I like it on Linux and Windows.</li>
<li style="font-weight: bold"><a href="https://addons.mozilla.org/en-US/firefox/addon/3275">Split Pannel</a> Like the split screen you might know better from MS Word. Lets you use the side panel as a website browser so you can view two pages next to each other. <a href="http://piro.sakura.ne.jp/xul/_splitbrowser.html.en">Split Browser</a> has more features, but I've pinpointed it as the cause for my Firefox crashing lots.</a></li>
<li style="font-weight: bold"><a href="http://tmp.garyr.net/">Tab Mix Plus</a> Instead of having my tabs spill off the screen when I open lots, I stack them in rows. It also has features for freezing, protecting, locking, reloading, recovering, resizing, renaming, and other things to tabs.</li>
<li style="font-weight: bold"><a href="https://addons.mozilla.org/en-US/firefox/addon/2063">Timestamp Converter</a> Popup mini app for converting UNIX timestamps to something readable or vice versa.</li>
<li><a href="http://dev.deboot.sk/firefox/timestampdecode/">Timestamp Decode</a> Does the same thing as <a href="https://addons.mozilla.org/en-US/firefox/addon/2063">Timestamp Converter</a>, but based on text you highlight. It's hard to remember I have this option, so I'm not sure I've actually used it.</li>
<li><a href="http://www.contrex.ca/gecko/">Unhide Passwords</a> Lets you see the text in a password field instead of just asterisks. <a href="http://chrispederick.com/work/web-developer/">Web Developer</a> has something similar, but this addon is turned on all password fields all the time. Unfortunately, it doesn't catch every password field and convert it to plaintext.</li>
<li><a href="http://www.chrisfinke.com/addons/url-fixer/">URL Fixer</a> Auto-fixes common typos in the URL bar.</li>
<li><a href="http://www.fnxweb.com/software-mozilla">URL Link</a> Visit a URL by right clicking on it when the website author didn't make it clickable (by wrapping it in a HREF tag).</li>
<li><a href="http://chrispederick.com/work/user-agent-switcher/">User Agent Switcher</a> If you've never tried it, sometimes websites show different content if you pretend to be Googlebot.</li>
<li style="font-weight: bold"><a href="http://chrispederick.com/work/web-developer/">Web Developer</a> If you're a web developer, you're probably already nodding your head about just how essential this addon is.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/3960">Xdebug Helper</a> I had to modify this one's XPI source to get it working. Worth the trouble if you use Xdebug.</li>
<li><a href="http://developer.yahoo.com/yslow/">YSlow</a> Gives you advice on how to optimize your webpage.</li>
<li><a href="http://www.zend.com/">Zend Studio Toolbar</a> Debug helper. A must if you're using Zend Studio to step through files.</li>
</ol>
<a href="http://ypn-rss.overture.com/rss/31384/1234/click/"><img src="http://ypn-rss.overture.com/rss/31384/1234/img/?url=http%3A%2F%2Fdeekayen.net%2Fmy-firefox2-addons&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>Event spam</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/event-spam" />
    <id>http://deekayen.net/event-spam</id>
    <published>2008-03-17T13:22:06+00:00</published>
    <updated>2008-03-17T13:28:23+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="calendar" />
    <category term="spam" />
    <summary type="html"><![CDATA[<p>I received a new kind of spam today in my <a href="http://mail.google.com/mail/">gmail</a> account. It is an event invitation to participate in a 419 African deposit scam <em>and</em> apparently get my identity stolen in the process. Since I read my gmail in <a href="http://www.mozilla.com/thunderbird/">Thunderbird</a> and have the <a href="http://www.mozilla.org/projects/calendar/lightning/">Lightning</a> add-on installed, all I needed to do was hit the accept button on the invitation to blast a message of receipt to the spammer. Now, I'll find out how to report this new spam type.</p>
<blockquote><p>
David Norman, you are invited to</p>
<p>Title: NOTIFICATION OF REQUEST
Time: Mon Mar 17 15:00 - 16:00 (Timezone: Eastern Time)
Calendar: David Norman
Description: Dear Friend,</p>
<p>I want you to assist me and my partner to receive a package which we are working on how to move it out of our country down to your country,and we promise to give you 30% of the package.</p>
<p>We only need: (1) Your full name (2) Your address (3) Mobile Telephone number (4) Your international passport number or Photograph for us to make the deposit with your name.</p>
<p>The flight will be living with the package this weekend that is why we need your assistance for us to make sure the package live immediately.</p>
<p>The content of the package is $15 million U.S dollars our company Sell Bloc, Crude Oil want to send this money to our customers in Europe through a security company and it was declare personal effect. We want to divert the money to you so that we all will shear it,So we want you to send us the needed information for us to deposit the money with your name to the security company that will be living with the package.</p>
<p>Please we are sorry if we have offended you for the assistance,but we believe the business will change our life. I wait your reply with the information so that we will deposit it with your name as the rightful beneficiary and after that we give you the: Goods Number, Code,The Tracking Number.</p>
<p>Hoping to hear from you.</p>
<p>Thanks and God bless us,</p>
<p>Dr.Graham Douglas</p>
<p>You can view this event at <a href="http://www.google.com/calendar/event?action=VIEW&amp;eid=dGVvcnNodWxtOG1pYm10M2F1ZDhnaGxtb2cgZGVla2F5ZW5AbQ&amp;tok=MjUjZ3JhaGFtZG91Z2xhczEyQGdtYWlsLmNvbWI4NGEzYjAyOTNjYWZjYTY5YjQ0NWUxNmZkYzI0YzE5MGZiZTdlNWY&amp;ctz=America%2FNew_York&amp;hl=en" title="http://www.google.com/calendar/event?action=VIEW&amp;eid=dGVvcnNodWxtOG1pYm10M2F1ZDhnaGxtb2cgZGVla2F5ZW5AbQ&amp;tok=MjUjZ3JhaGFtZG91Z2xhczEyQGdtYWlsLmNvbWI4NGEzYjAyOTNjYWZjYTY5YjQ0NWUxNmZkYzI0YzE5MGZiZTdlNWY&amp;ctz=America%2FNew_York&amp;hl=en">http://www.google.com/calendar/event?action=VIEW&amp;eid=dGVvcnNodWxtOG1pYm1...</a></p>
<p>You can also view your calendar at <a href="http://www.google.com/calendar/" title="http://www.google.com/calendar/">http://www.google.com/calendar/</a></p>
<p>You are receiving this email at the account <a href="mailto:x@gmail.com">x@gmail.com</a> because you are subscribed for invitations on calendar David Norman.</p>
<p>To stop receiving these notifications, please log in to <a href="http://www.google.com/calendar/" title="http://www.google.com/calendar/">http://www.google.com/calendar/</a> and change your notification settings for this calendar.
</p>
</p></blockquote>    ]]></summary>
    <content type="html"><![CDATA[<p>I received a new kind of spam today in my <a href="http://mail.google.com/mail/">gmail</a> account. It is an event invitation to participate in a 419 African deposit scam <em>and</em> apparently get my identity stolen in the process. Since I read my gmail in <a href="http://www.mozilla.com/thunderbird/">Thunderbird</a> and have the <a href="http://www.mozilla.org/projects/calendar/lightning/">Lightning</a> add-on installed, all I needed to do was hit the accept button on the invitation to blast a message of receipt to the spammer. Now, I'll find out how to report this new spam type.</p>
<blockquote><p>
David Norman, you are invited to</p>
<p>Title: NOTIFICATION OF REQUEST
Time: Mon Mar 17 15:00 - 16:00 (Timezone: Eastern Time)
Calendar: David Norman
Description: Dear Friend,</p>
<p>I want you to assist me and my partner to receive a package which we are working on how to move it out of our country down to your country,and we promise to give you 30% of the package.</p>
<p>We only need: (1) Your full name (2) Your address (3) Mobile Telephone number (4) Your international passport number or Photograph for us to make the deposit with your name.</p>
<p>The flight will be living with the package this weekend that is why we need your assistance for us to make sure the package live immediately.</p>
<p>The content of the package is $15 million U.S dollars our company Sell Bloc, Crude Oil want to send this money to our customers in Europe through a security company and it was declare personal effect. We want to divert the money to you so that we all will shear it,So we want you to send us the needed information for us to deposit the money with your name to the security company that will be living with the package.</p>
<p>Please we are sorry if we have offended you for the assistance,but we believe the business will change our life. I wait your reply with the information so that we will deposit it with your name as the rightful beneficiary and after that we give you the: Goods Number, Code,The Tracking Number.</p>
<p>Hoping to hear from you.</p>
<p>Thanks and God bless us,</p>
<p>Dr.Graham Douglas</p>
<p>You can view this event at <a href="http://www.google.com/calendar/event?action=VIEW&amp;eid=dGVvcnNodWxtOG1pYm10M2F1ZDhnaGxtb2cgZGVla2F5ZW5AbQ&amp;tok=MjUjZ3JhaGFtZG91Z2xhczEyQGdtYWlsLmNvbWI4NGEzYjAyOTNjYWZjYTY5YjQ0NWUxNmZkYzI0YzE5MGZiZTdlNWY&amp;ctz=America%2FNew_York&amp;hl=en" title="http://www.google.com/calendar/event?action=VIEW&amp;eid=dGVvcnNodWxtOG1pYm10M2F1ZDhnaGxtb2cgZGVla2F5ZW5AbQ&amp;tok=MjUjZ3JhaGFtZG91Z2xhczEyQGdtYWlsLmNvbWI4NGEzYjAyOTNjYWZjYTY5YjQ0NWUxNmZkYzI0YzE5MGZiZTdlNWY&amp;ctz=America%2FNew_York&amp;hl=en">http://www.google.com/calendar/event?action=VIEW&amp;eid=dGVvcnNodWxtOG1pYm1...</a></p>
<p>You can also view your calendar at <a href="http://www.google.com/calendar/" title="http://www.google.com/calendar/">http://www.google.com/calendar/</a></p>
<p>You are receiving this email at the account <a href="mailto:x@gmail.com">x@gmail.com</a> because you are subscribed for invitations on calendar David Norman.</p>
<p>To stop receiving these notifications, please log in to <a href="http://www.google.com/calendar/" title="http://www.google.com/calendar/">http://www.google.com/calendar/</a> and change your notification settings for this calendar.
</p></blockquote><a href="http://ypn-rss.overture.com/rss/31384/1233/click/"><img src="http://ypn-rss.overture.com/rss/31384/1233/img/?url=http%3A%2F%2Fdeekayen.net%2Fevent-spam&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>Drupalcon Boston 2008 Day 3</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/drupalcon-boston-2008-day-3" />
    <id>http://deekayen.net/drupalcon-boston-2008-day-3</id>
    <published>2008-03-06T05:44:05+00:00</published>
    <updated>2008-03-10T21:43:54+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="2008" />
    <category term="Boston" />
    <category term="DrupalCon" />
    <summary type="html"><![CDATA[<p><a href="http://www.flickr.com/photos/deekayen/2313384008/" title="Michael Goldsmith and Adrian Rousseau by David Norman, on Flickr"><img src="http://farm4.static.flickr.com/3189/2313384008_61aa5fdcaa_m.jpg" width="240" height="180" alt="Michael Goldsmith and Adrian Rousseau" style="float: right" /></a>I talked for a while to <a href="https://drupal.org/user/1337">Adrian Rousseau</a> from Bryght/<a href="http://www.raincitystudios.com/">Raincity</a> and Michael Goldsmith. Adrian decided that as he's done upgrade contracts for involving CCK, he's phasing out or reducing use of CCK in their sites (where possible).</p>
<p>He mentioned some nice APIs for <a href="http://drupal.org/project/cck">CCK</a>2 are coming, and would work nicely with <a href="http://drupal.org/project/views">Views</a>, but writing custom modules is faster in some cases when custom output is needed and the views support is roughly equivalent, granted all the <a href="http://drupal.org/node/132845">node_example.module</a> hooks are implemented to expose the fields to Views.</p>
<p>I asked if how they use CCK if at all anymore then, and they said it was good for prototyping.</p>
<p>At <a href="http://www.classicgraphics.com/">Classic Graphics</a>, we have built a custom engine that directly queries a custom content type's tables. While using the content.module API functions should have probably be done in the first place, there are a lot of special case reasons the direct query was done and I can't imagine having to rewrite those 50-line queries every time CCK changes database structure.</p>
<p>This has had me thinking, instead of venturing into the world of 100% shared fields in CCK and the uncertainty of how <a href="http://drupal.org/node/108753">field group nesting</a> would get implemented and/or committed, maybe it's time to open the idea realm to consider the occasional custom content module. I spend more time re-rolling the nesting patch than I do actually making progress on it.</p>
<p>If we were to venture down that road, then how do we handle CCK <a href="http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/cck/nodereference.module">nodereference</a>/rolereference/<a href="http://drupal.org/project/usernode">usernode</a>/<a href="http://drupal.org/project/date">date</a> type fields? I think once the CCK handler stuff gets chopped out of those modules, you're left with just a few tiny functions that could roll into custom modules. That removes community maintenance though. It's an difficult tradeoff.</p>
<p>I talked it over with <a href="http://drupal.org/user/202205">Chris</a> and I think he's starting to think I'm really crazy now. Even I'm getting a feeling like it's hard to make up my mind. I think at least for upgrading our existing sites at <a href="http://www.classicgraphics.com/">Classic Graphics</a> to Drupal 5, we can/should stay with CCK since I think it's still fairly straightforward from 4.7. For Drupal 6, that might be a place to consider this custom content type coded module idea instead of CCK.</p>
<p>I also overheard a discussion from someone trying to plug their consulting services that's related to yesterday's session about development workflow. As an example of what type of experience he offered, a possible solution to the issue of sandbox to dev to test/staging to live, he writes as much config as he can in code. Instead of configuring blocks and menus through the GUI, he writes them in code like <a href="http://api.drupal.org/api/function/hook_menu">hook_menu()</a> and <a href="http://api.drupal.org/api/function/hook_block">hook_block()</a>. Then the SVN update to the live site takes care of a lot of the clicking configuration. It puts more dependencies on developers (translate in this guy's case: followup consulting), but his solution isn't totally without merit. The harder part is deciding whether or not that's an unacceptable burden to repeatedly ask developers to *create more* maintain and revise as opposed to allowing room for creating new and better. Again, I think this idea falls into the category of *a* solution, not The Solution.</p>
<p>My evening was spent in the Drupal Association meeting for the Permanent Members. I'm sure the important parts of the meeting will be covered in the various sessions the association will have tomorrow. I got some photos.</p>
<p>When I got back to the hotel, <a href="http://www.knitgeeklife.com/">Nikki Henninger</a> and <a href="http://alligatorsneeze.com/">Brenda Boggs</a> were in the Royal Sonesta Business Center to get some Internet (it's not working in the rooms). Nikki and I had a short talk about when we worked and then stopped working at <a href="http://trellon.com/">Trellon</a>. We seem to share some of the same observations from our time there. Cheers to <a href="http://www.disobey.com/">morbus</a>, who was also a fun partial topic of the conversation.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p><a href="http://www.flickr.com/photos/deekayen/2313384008/" title="Michael Goldsmith and Adrian Rousseau by David Norman, on Flickr"><img src="http://farm4.static.flickr.com/3189/2313384008_61aa5fdcaa_m.jpg" width="240" height="180" alt="Michael Goldsmith and Adrian Rousseau" style="float: right" /></a>I talked for a while to <a href="https://drupal.org/user/1337">Adrian Rousseau</a> from Bryght/<a href="http://www.raincitystudios.com/">Raincity</a> and Michael Goldsmith. Adrian decided that as he's done upgrade contracts for involving CCK, he's phasing out or reducing use of CCK in their sites (where possible).</p>
<p>He mentioned some nice APIs for <a href="http://drupal.org/project/cck">CCK</a>2 are coming, and would work nicely with <a href="http://drupal.org/project/views">Views</a>, but writing custom modules is faster in some cases when custom output is needed and the views support is roughly equivalent, granted all the <a href="http://drupal.org/node/132845">node_example.module</a> hooks are implemented to expose the fields to Views.</p>
<p>I asked if how they use CCK if at all anymore then, and they said it was good for prototyping.</p>
<p>At <a href="http://www.classicgraphics.com/">Classic Graphics</a>, we have built a custom engine that directly queries a custom content type's tables. While using the content.module API functions should have probably be done in the first place, there are a lot of special case reasons the direct query was done and I can't imagine having to rewrite those 50-line queries every time CCK changes database structure.</p>
<p>This has had me thinking, instead of venturing into the world of 100% shared fields in CCK and the uncertainty of how <a href="http://drupal.org/node/108753">field group nesting</a> would get implemented and/or committed, maybe it's time to open the idea realm to consider the occasional custom content module. I spend more time re-rolling the nesting patch than I do actually making progress on it.</p>
<p>If we were to venture down that road, then how do we handle CCK <a href="http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/cck/nodereference.module">nodereference</a>/rolereference/<a href="http://drupal.org/project/usernode">usernode</a>/<a href="http://drupal.org/project/date">date</a> type fields? I think once the CCK handler stuff gets chopped out of those modules, you're left with just a few tiny functions that could roll into custom modules. That removes community maintenance though. It's an difficult tradeoff.</p>
<p>I talked it over with <a href="http://drupal.org/user/202205">Chris</a> and I think he's starting to think I'm really crazy now. Even I'm getting a feeling like it's hard to make up my mind. I think at least for upgrading our existing sites at <a href="http://www.classicgraphics.com/">Classic Graphics</a> to Drupal 5, we can/should stay with CCK since I think it's still fairly straightforward from 4.7. For Drupal 6, that might be a place to consider this custom content type coded module idea instead of CCK.</p>
<p>I also overheard a discussion from someone trying to plug their consulting services that's related to yesterday's session about development workflow. As an example of what type of experience he offered, a possible solution to the issue of sandbox to dev to test/staging to live, he writes as much config as he can in code. Instead of configuring blocks and menus through the GUI, he writes them in code like <a href="http://api.drupal.org/api/function/hook_menu">hook_menu()</a> and <a href="http://api.drupal.org/api/function/hook_block">hook_block()</a>. Then the SVN update to the live site takes care of a lot of the clicking configuration. It puts more dependencies on developers (translate in this guy's case: followup consulting), but his solution isn't totally without merit. The harder part is deciding whether or not that's an unacceptable burden to repeatedly ask developers to *create more* maintain and revise as opposed to allowing room for creating new and better. Again, I think this idea falls into the category of *a* solution, not The Solution.</p>
<p>My evening was spent in the Drupal Association meeting for the Permanent Members. I'm sure the important parts of the meeting will be covered in the various sessions the association will have tomorrow. I got some photos.</p>
<p>When I got back to the hotel, <a href="http://www.knitgeeklife.com/">Nikki Henninger</a> and <a href="http://alligatorsneeze.com/">Brenda Boggs</a> were in the Royal Sonesta Business Center to get some Internet (it's not working in the rooms). Nikki and I had a short talk about when we worked and then stopped working at <a href="http://trellon.com/">Trellon</a>. We seem to share some of the same observations from our time there. Cheers to <a href="http://www.disobey.com/">morbus</a>, who was also a fun partial topic of the conversation.</p>
<a href="http://ypn-rss.overture.com/rss/31384/1231/click/"><img src="http://ypn-rss.overture.com/rss/31384/1231/img/?url=http%3A%2F%2Fdeekayen.net%2Fdrupalcon-boston-2008-day-3&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>Drupalcon Boston 2008 Day 2</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/drupalcon-boston-2008-day-2" />
    <id>http://deekayen.net/drupalcon-boston-2008-day-2</id>
    <published>2008-03-05T04:24:27+00:00</published>
    <updated>2008-03-05T15:06:19+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="2008" />
    <category term="Boston" />
    <category term="DrupalCon" />
    <summary type="html"><![CDATA[<p>During the sessions and events at DrupalCon Boston 2008, some smaller meetings were taking place in the hallway and in the Birds of a Feather room. I got to the conference late again because we had some additional trouble navigating the Boston roads this morning, so when I arrived, I was part-way though a meeting with <a href="http://www.buytaert.net/">Dries Buytaert</a>, <a href="http://www.webchick.net/">Angie Byron</a>, Dmitri Gaskin, <a href="http://www.angrydonuts.com/">Earl Miles</a>, <a href="http://esmerel.livejournal.com/">Lynette Miles</a>, Sprout Miles, <a href="http://drupal4hu.com/">Károly Négyesi</a>, <a href="http://www.tejasa.com/">Moshe Weitzman</a>, <a href="http://www.blkmtn.org/">Steven Peck</a>, and some others (I'm getting tired of listing people). It was big enough to have a hard time hearing people if they spoke too softly.</p>
<p><a href="http://www.flickr.com/photos/deekayen/2309731687/" title="Mini BoF by David Norman, on Flickr"><img src="http://farm4.static.flickr.com/3020/2309731687_b3dff1a4d2_m.jpg" width="240" height="180" alt="Mini BoF" style="float: right" /></a>The topic of the morning was the unit testing Dries announced he would like to have in place for Drupal 7 during his State of Drupal keynote. The meeting didn't appear to end with anything concrete, but there did seem to be a general consensus that <a href="http://drupal.org/project/simpletest">Simpletest</a> could remain something in-use, but an additional level of testing would be needed for checking the interactions between modules.</p>
<p>The discussion also occasionally strayed into the project module where they talked about bug handling and git repository links. Someone raised the idea of automatic cross-posting of duplicate issues. Right now the standard procedure is to mark an issue duplicate and paste a link to the older/correct issue, but pasting the link of the duplicate is often not done in the main issue, so tracking down the duplicate is sometimes impossible. Angie said stuff like that wasn't helping when she tried to go back and find that one issue in a sea of thousands.</p>
<p><a href="http://boston2008.drupalcon.org/session/updating-and-upgrading-live-sites">Updating and upgrading live sites</a> is what I went to in the early afternoon. It started small, but over-grew the table. People were standing four levels deep away from the table at times. I imagine trying to hear was a problem going beyond that. The big issue was how to get newly configured data from development, testing, and staging to a production site. Some discussion tried to steer to ideas for getting fresh copies of live to developers, but that really wasn't the biggest concern of the group.</p>
<p><a href="http://www.flickr.com/photos/deekayen/2311852974/" title="Dave Cohen by David Norman, on Flickr"><img src="http://farm4.static.flickr.com/3030/2311852974_75f27e731e_m.jpg" width="240" height="180" alt="Dave Cohen" style="float: right" /></a><a href="http://www.dave-cohen.com/">Dave Cohen</a> proposed to keep the first 1000 IDs of nodes and taxonomies reserved for developers to use. All new content on a live site would essentially start from 1000. That way, when you create a new node that you want to make your front page, you can make it on your development server, save the configuration to start at that node number that's less than 1000, and duplicate those in the reserved id space on production.</p>
<p>Another participant said she had already thought of the idea, but she's already up to 5000 of the 10000 node IDs she reserved. She also apparently has an elaborate set of scripts for downloading a snapshot of the live site, diffing it to her development copy, and merging the information. She said to accomplish it, she has had to revoke editing permissions to users before she takes the database snapshot for diffing and turn off <a href="http://httpd.apache.org/">Apache</a> when she dumps the new database back to the live site with the merged data. It sounded to me like she was the only person in that role of responsibility, so it wouldn't probably scale very well to larger groups. She also had some methodology she used to decide which tables got diffed and how it would be done.</p>
<p>A gentleman from France had a hard time conversing, but got across the point that his group uses an even/odd system of id reservations. It scales (theoretically) infinitely large when compared to the block-style reservation, but I'm not sure how much hackery you really have to do to make such a thing possible.</p>
<p><a href="http://boston2008.drupalcon.org/user/1349">Ori Pekelman</a> was one person that touched on using SVN for various things. He does a cron to update the development server with SVN about every 20 minutes. He proposed to Dave Cohen doing a code sprint to write something that would automate synchronizing development and live. Dave and I had to agree that we came to some solutions for specific issues people had in the group, but not The Solution that would solve all the problems of incremented database identifiers. The macro engine of the  <a href="http://drupal.org/project/devel">devel module</a> was identified as one tool, but not for most situations where new node IDsIDs and site configuration collided. I suggested perhaps a Drupal diff tool for node table changes might be necessary to tell an import what exactly should be inserted, overwritten, and/or deleted.</p>
<p>I also discovered Dave Cohen had modified one of his <a href="http://drupal.org/project/workflow">workflow module</a> implementations to disallow editing a node in specific workflow states. I mentioned at <a href="http://www.classicgraphics.com/">Classic Graphics</a> we're doing node privacy and field privacy by role and workflow state. His reaction to more field control was hard to interpret. He said he basically <a href="http://api.drupal.org/api/function/hook_form_alter">hook_form_alter()</a>ed away the <code>$form</code> content since his module was a custom implementation of a content type. It still showed the edit tab, but instead of a form, it showed a <a href="http://api.drupal.org/api/function/drupal_set_message">drupal_set_message()</a> with instructions on what the user is supposed to be doing instead of form editing. While his solution doesn't require the core hack I have been using at work to node.module, his doesn't seem to allow for proper privacy checks when other modules use the access API. He did mention he thought <a href="http://api.drupal.org/api/function/hook_node_grants">hook_node_grants()</a> was worth exploring. For example, by adding a core patch to node.module, what we're doing allows the standard access check to return false on something like whether or not to display an edit link in a <a href="http://drupal.org/project/views">view</a>. <a href="http://blackboot.biz/">Bryan Stalcup</a> calls it our our explicit deny.</p>
<p>I ended the afternoon with another talk lead by <a href="http://www.garfieldtech.com/">Larry Garfield</a> with <a href="http://www.buytaert.net/">Dries Buytaert</a>, <a href="http://www.angrydonuts.com/">Earl Miles</a>, Dmitri Gaskin, <a href="http://jaspan.com/">Barry Jaspan</a>, <a href="http://drupal.org/user/53081">Brandon Bergren</a> and others. Much of the conversation was between Larry, Earl, and Dries and a lot of it went over the heads of people like myself who haven't looked at either the new database patch for Drupal 7 or the new Views.</p>
<p><a href="http://www.flickr.com/photos/deekayen/2311851926/" title="Database API BoF by David Norman, on Flickr"><img src="http://farm3.static.flickr.com/2194/2311851926_3f31af4fc8_m.jpg" width="240" height="180" alt="Database API BoF" style="float: left" /></a>Larry's session covered some of the new PDO features he and Károly wrote and what requirements the new core Views would have at the database layer. Apparently <a href="http://drupal.org/user/39030">Andy Kirkham</a> did some benchmarking of the proposed DB code and it was at minimum on par in speed with the current database code. It also has some auto magic for query building and backwards compatibility with Drupal 6-style database code. The engine also allows for querying from multiple databases of different types. That means the node tables could remain in MySQL while the cache tables live in SQLite. Postgres isn't written yet, but apparently separate engines are still needed for special handling on database-specific quirks.</p>
<p><a href="http://www.flickr.com/photos/deekayen/2311042985/" title="Database API BoF by David Norman, on Flickr"><img src="http://farm3.static.flickr.com/2061/2311042985_0f0915d3b6_m.jpg" width="240" height="180" alt="Database API BoF" style="float: right" /></a>Dries thought it was a good idea to make sure the new DB code had functionality to stream blobs from a database. The examples he gave were streaming videos and immediately printing page cache instead of buffering it through Drupal/PHP. Someone also asked about whether that would then allow all files stored in on the filesystem in /files to be in the database so the privacy to them could be controlled at a user level, which naturally could also include any of the other access control modules out there like <a href="http://drupal.org/project/acl">ACL</a> and <a href="http://drupal.org/project/node_privacy_byrole">node_privacy_byrole</a>. The idea of storing all of /files in a SQLite database received grumbles around the table, which was noted by Dmitri.</p>
<p>Dries grabbed Barry from somewhere to talk about Earl's <a href="http://drupal.org/project/schema">Schema</a> requirements in Drupal 7. Earl was asking for a structure within the Schema API to allow for schema definitions that wouldn't actually create tables in the database so he would be able to create a kind of virtual table for querying fields out of tables as a table of their own in a view, giving profiles as an example where each profile field would be treated as a table. Earl also wanted to be able to read default values from the schema definitions of all table types. In particular blobs are an issue in MySQL because blobs cannot have a default value and defining one as part of the schema for the definition of how to create the table wouldn't make sense. Barry admitted he was perhaps too strict on the rules, but he would write special cases during table creation to ignore default values on fields where no default should be set. That way Views would have a setting to pre-fill the Views forms with. Postgres apparently fails queries that have a default value set for blob fields rather than ignoring it, which could be a significant problem for a module that tries to create a table with such a definition during its installation.</p>
<p>Barry also strayed off into discussing fields in <a href="http://drupal.org/project/cck">CCK</a>, and Schema API, specifically CCK field splitting, which I've just recently been dipping my toe into CCK source, starting a <a href="http://drupal.org/node/108753">patch to nest field groups</a>. Earl at first agreed with me that fields have a good reason for staying all in the same table, but when he realized he used shared fields for images, he backed away from fighting a CCK system where all fields are split away from the main content table all the time. It's also impossible to argue against Barry's note that even on the content types where fields aren't shared, multivalue fields still need their own table. The part I don't know enough about is the discussion that CCK makes a new SELECT query for each field on an un-shared content type anyway. I think that's more of just a design problem that could be resolved with some well thought out code cleanup as opposed to feature destruction, but that opinion gained no traction in the discussion. The discussion seems to have already reached it's decisions in that arena, at least for revision 1, whatever that happens to mean. Earl thought there was a limit to the number of JOINs MySQL can do, but nobody seemed to think that was a big issue. I think unless a technical limitation is found other than the obvious potential overhead for huge JOINs brings, there's enough momentum to proceed with having fields only stored in separate tables. I didn't think it was the best time to mention the <a href="http://cvs.drupal.org/viewvc.py/drupal/contributions/sandbox/deekayen/modules/cck_table_despliter/">cck_table_despliter module</a> I wrote one night after having exploded CCK tables that had hard queries depending on their unified structure.</p>
<p>On a somewhat unrelated note, I removed my laptop from my bag a coupe times at the conference. Most of the time people keep their attention to themselves, but during Larry's BoF, the guy sitting next to me kept trying to read my screen. He couldn't because had my brightness turned down and I use a <a href="http://solutions.3m.com/wps/portal/3M/en_US/ComputerFilter/Home/">3M privacy filter</a>. I've sometimes been annoyed that it reduces the brightness on my screen by a noticeable amount, but it has acted as a nice screen protector when I've accidently spit on my screen while talking or splashed a drink nearby. The last two days it's been nice to have the privacy. I will buy one for every one of my next laptops. I have to admit, I couldn't keep my eyes from wandering to other laptops during sessions and BoFs either. For example, I know Earl was reading an article on CNN.com about Hillary and Obama during Larry's BoF and during Dries keynote, <a href="http://drupal.org/user/94675">Narayan Newton</a> was talking in IRC a lot about what was going on with the messed up wireless Internet access at the conference center and the slowness of <a href="http://drupal.org/">drupal.org</a> from it.</p>
<p>I'm sure a participant of one of the events will get around to reading this. I wrote it all from memory, so feel free to correct me.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>During the sessions and events at DrupalCon Boston 2008, some smaller meetings were taking place in the hallway and in the Birds of a Feather room. I got to the conference late again because we had some additional trouble navigating the Boston roads this morning, so when I arrived, I was part-way though a meeting with <a href="http://www.buytaert.net/">Dries Buytaert</a>, <a href="http://www.webchick.net/">Angie Byron</a>, Dmitri Gaskin, <a href="http://www.angrydonuts.com/">Earl Miles</a>, <a href="http://esmerel.livejournal.com/">Lynette Miles</a>, Sprout Miles, <a href="http://drupal4hu.com/">Károly Négyesi</a>, <a href="http://www.tejasa.com/">Moshe Weitzman</a>, <a href="http://www.blkmtn.org/">Steven Peck</a>, and some others (I'm getting tired of listing people). It was big enough to have a hard time hearing people if they spoke too softly.</p>
<p><a href="http://www.flickr.com/photos/deekayen/2309731687/" title="Mini BoF by David Norman, on Flickr"><img src="http://farm4.static.flickr.com/3020/2309731687_b3dff1a4d2_m.jpg" width="240" height="180" alt="Mini BoF" style="float: right" /></a>The topic of the morning was the unit testing Dries announced he would like to have in place for Drupal 7 during his State of Drupal keynote. The meeting didn't appear to end with anything concrete, but there did seem to be a general consensus that <a href="http://drupal.org/project/simpletest">Simpletest</a> could remain something in-use, but an additional level of testing would be needed for checking the interactions between modules.</p>
<p>The discussion also occasionally strayed into the project module where they talked about bug handling and git repository links. Someone raised the idea of automatic cross-posting of duplicate issues. Right now the standard procedure is to mark an issue duplicate and paste a link to the older/correct issue, but pasting the link of the duplicate is often not done in the main issue, so tracking down the duplicate is sometimes impossible. Angie said stuff like that wasn't helping when she tried to go back and find that one issue in a sea of thousands.</p>
<p><a href="http://boston2008.drupalcon.org/session/updating-and-upgrading-live-sites">Updating and upgrading live sites</a> is what I went to in the early afternoon. It started small, but over-grew the table. People were standing four levels deep away from the table at times. I imagine trying to hear was a problem going beyond that. The big issue was how to get newly configured data from development, testing, and staging to a production site. Some discussion tried to steer to ideas for getting fresh copies of live to developers, but that really wasn't the biggest concern of the group.</p>
<p><a href="http://www.flickr.com/photos/deekayen/2311852974/" title="Dave Cohen by David Norman, on Flickr"><img src="http://farm4.static.flickr.com/3030/2311852974_75f27e731e_m.jpg" width="240" height="180" alt="Dave Cohen" style="float: right" /></a><a href="http://www.dave-cohen.com/">Dave Cohen</a> proposed to keep the first 1000 IDs of nodes and taxonomies reserved for developers to use. All new content on a live site would essentially start from 1000. That way, when you create a new node that you want to make your front page, you can make it on your development server, save the configuration to start at that node number that's less than 1000, and duplicate those in the reserved id space on production.</p>
<p>Another participant said she had already thought of the idea, but she's already up to 5000 of the 10000 node IDs she reserved. She also apparently has an elaborate set of scripts for downloading a snapshot of the live site, diffing it to her development copy, and merging the information. She said to accomplish it, she has had to revoke editing permissions to users before she takes the database snapshot for diffing and turn off <a href="http://httpd.apache.org/">Apache</a> when she dumps the new database back to the live site with the merged data. It sounded to me like she was the only person in that role of responsibility, so it wouldn't probably scale very well to larger groups. She also had some methodology she used to decide which tables got diffed and how it would be done.</p>
<p>A gentleman from France had a hard time conversing, but got across the point that his group uses an even/odd system of id reservations. It scales (theoretically) infinitely large when compared to the block-style reservation, but I'm not sure how much hackery you really have to do to make such a thing possible.</p>
<p><a href="http://boston2008.drupalcon.org/user/1349">Ori Pekelman</a> was one person that touched on using SVN for various things. He does a cron to update the development server with SVN about every 20 minutes. He proposed to Dave Cohen doing a code sprint to write something that would automate synchronizing development and live. Dave and I had to agree that we came to some solutions for specific issues people had in the group, but not The Solution that would solve all the problems of incremented database identifiers. The macro engine of the  <a href="http://drupal.org/project/devel">devel module</a> was identified as one tool, but not for most situations where new node IDsIDs and site configuration collided. I suggested perhaps a Drupal diff tool for node table changes might be necessary to tell an import what exactly should be inserted, overwritten, and/or deleted.</p>
<p>I also discovered Dave Cohen had modified one of his <a href="http://drupal.org/project/workflow">workflow module</a> implementations to disallow editing a node in specific workflow states. I mentioned at <a href="http://www.classicgraphics.com/">Classic Graphics</a> we're doing node privacy and field privacy by role and workflow state. His reaction to more field control was hard to interpret. He said he basically <a href="http://api.drupal.org/api/function/hook_form_alter">hook_form_alter()</a>ed away the <code>$form</code> content since his module was a custom implementation of a content type. It still showed the edit tab, but instead of a form, it showed a <a href="http://api.drupal.org/api/function/drupal_set_message">drupal_set_message()</a> with instructions on what the user is supposed to be doing instead of form editing. While his solution doesn't require the core hack I have been using at work to node.module, his doesn't seem to allow for proper privacy checks when other modules use the access API. He did mention he thought <a href="http://api.drupal.org/api/function/hook_node_grants">hook_node_grants()</a> was worth exploring. For example, by adding a core patch to node.module, what we're doing allows the standard access check to return false on something like whether or not to display an edit link in a <a href="http://drupal.org/project/views">view</a>. <a href="http://blackboot.biz/">Bryan Stalcup</a> calls it our our explicit deny.</p>
<p>I ended the afternoon with another talk lead by <a href="http://www.garfieldtech.com/">Larry Garfield</a> with <a href="http://www.buytaert.net/">Dries Buytaert</a>, <a href="http://www.angrydonuts.com/">Earl Miles</a>, Dmitri Gaskin, <a href="http://jaspan.com/">Barry Jaspan</a>, <a href="http://drupal.org/user/53081">Brandon Bergren</a> and others. Much of the conversation was between Larry, Earl, and Dries and a lot of it went over the heads of people like myself who haven't looked at either the new database patch for Drupal 7 or the new Views.</p>
<p><a href="http://www.flickr.com/photos/deekayen/2311851926/" title="Database API BoF by David Norman, on Flickr"><img src="http://farm3.static.flickr.com/2194/2311851926_3f31af4fc8_m.jpg" width="240" height="180" alt="Database API BoF" style="float: left" /></a>Larry's session covered some of the new PDO features he and Károly wrote and what requirements the new core Views would have at the database layer. Apparently <a href="http://drupal.org/user/39030">Andy Kirkham</a> did some benchmarking of the proposed DB code and it was at minimum on par in speed with the current database code. It also has some auto magic for query building and backwards compatibility with Drupal 6-style database code. The engine also allows for querying from multiple databases of different types. That means the node tables could remain in MySQL while the cache tables live in SQLite. Postgres isn't written yet, but apparently separate engines are still needed for special handling on database-specific quirks.</p>
<p><a href="http://www.flickr.com/photos/deekayen/2311042985/" title="Database API BoF by David Norman, on Flickr"><img src="http://farm3.static.flickr.com/2061/2311042985_0f0915d3b6_m.jpg" width="240" height="180" alt="Database API BoF" style="float: right" /></a>Dries thought it was a good idea to make sure the new DB code had functionality to stream blobs from a database. The examples he gave were streaming videos and immediately printing page cache instead of buffering it through Drupal/PHP. Someone also asked about whether that would then allow all files stored in on the filesystem in /files to be in the database so the privacy to them could be controlled at a user level, which naturally could also include any of the other access control modules out there like <a href="http://drupal.org/project/acl">ACL</a> and <a href="http://drupal.org/project/node_privacy_byrole">node_privacy_byrole</a>. The idea of storing all of /files in a SQLite database received grumbles around the table, which was noted by Dmitri.</p>
<p>Dries grabbed Barry from somewhere to talk about Earl's <a href="http://drupal.org/project/schema">Schema</a> requirements in Drupal 7. Earl was asking for a structure within the Schema API to allow for schema definitions that wouldn't actually create tables in the database so he would be able to create a kind of virtual table for querying fields out of tables as a table of their own in a view, giving profiles as an example where each profile field would be treated as a table. Earl also wanted to be able to read default values from the schema definitions of all table types. In particular blobs are an issue in MySQL because blobs cannot have a default value and defining one as part of the schema for the definition of how to create the table wouldn't make sense. Barry admitted he was perhaps too strict on the rules, but he would write special cases during table creation to ignore default values on fields where no default should be set. That way Views would have a setting to pre-fill the Views forms with. Postgres apparently fails queries that have a default value set for blob fields rather than ignoring it, which could be a significant problem for a module that tries to create a table with such a definition during its installation.</p>
<p>Barry also strayed off into discussing fields in <a href="http://drupal.org/project/cck">CCK</a>, and Schema API, specifically CCK field splitting, which I've just recently been dipping my toe into CCK source, starting a <a href="http://drupal.org/node/108753">patch to nest field groups</a>. Earl at first agreed with me that fields have a good reason for staying all in the same table, but when he realized he used shared fields for images, he backed away from fighting a CCK system where all fields are split away from the main content table all the time. It's also impossible to argue against Barry's note that even on the content types where fields aren't shared, multivalue fields still need their own table. The part I don't know enough about is the discussion that CCK makes a new SELECT query for each field on an un-shared content type anyway. I think that's more of just a design problem that could be resolved with some well thought out code cleanup as opposed to feature destruction, but that opinion gained no traction in the discussion. The discussion seems to have already reached it's decisions in that arena, at least for revision 1, whatever that happens to mean. Earl thought there was a limit to the number of JOINs MySQL can do, but nobody seemed to think that was a big issue. I think unless a technical limitation is found other than the obvious potential overhead for huge JOINs brings, there's enough momentum to proceed with having fields only stored in separate tables. I didn't think it was the best time to mention the <a href="http://cvs.drupal.org/viewvc.py/drupal/contributions/sandbox/deekayen/modules/cck_table_despliter/">cck_table_despliter module</a> I wrote one night after having exploded CCK tables that had hard queries depending on their unified structure.</p>
<p>On a somewhat unrelated note, I removed my laptop from my bag a coupe times at the conference. Most of the time people keep their attention to themselves, but during Larry's BoF, the guy sitting next to me kept trying to read my screen. He couldn't because had my brightness turned down and I use a <a href="http://solutions.3m.com/wps/portal/3M/en_US/ComputerFilter/Home/">3M privacy filter</a>. I've sometimes been annoyed that it reduces the brightness on my screen by a noticeable amount, but it has acted as a nice screen protector when I've accidently spit on my screen while talking or splashed a drink nearby. The last two days it's been nice to have the privacy. I will buy one for every one of my next laptops. I have to admit, I couldn't keep my eyes from wandering to other laptops during sessions and BoFs either. For example, I know Earl was reading an article on CNN.com about Hillary and Obama during Larry's BoF and during Dries keynote, <a href="http://drupal.org/user/94675">Narayan Newton</a> was talking in IRC a lot about what was going on with the messed up wireless Internet access at the conference center and the slowness of <a href="http://drupal.org/">drupal.org</a> from it.</p>
<p>I'm sure a participant of one of the events will get around to reading this. I wrote it all from memory, so feel free to correct me.</p>
<a href="http://ypn-rss.overture.com/rss/31384/1230/click/"><img src="http://ypn-rss.overture.com/rss/31384/1230/img/?url=http%3A%2F%2Fdeekayen.net%2Fdrupalcon-boston-2008-day-2&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>Anyone can help Drupal</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/anyone-can-help-drupal" />
    <id>http://deekayen.net/anyone-can-help-drupal</id>
    <published>2008-02-14T14:34:35+00:00</published>
    <updated>2008-02-14T14:34:35+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="Drupal" />
    <category term="Drupal Association" />
    <summary type="html"><![CDATA[<p>If you like Drupal, but you don't really know how so many people are able to <a href="http://drupal.org/node/10259">contribute</a> on average 4 new modules <em>a day</em>, or use their creativity to <a href="http://drupal.org/node/196218">create a new theme</a>, <a href="http://drupal.org/project/issues">patch a bug</a>, or something else. There's a commitment I have taken on that doesn't take any thought, learning, or insight.</p>
<p>I have made a commitment to <a href="http://association.drupal.org/donate">donate</a> to the Drupal Association every week (I get paid every week). The budget is the big item on the Drupal Association's plate and the <a href="http://buytaert.net/drupal-association-2008-wishlist">Drupal 2008 wishlist</a>, voted on by members of drupal.org, is a big point of guidance for that budget. Make the same commitment and you'll help ensure things like updates to hardware, a drupal.org redesign, and conferences of various sizes can grow.</p>    ]]></summary>
    <content type="html"><![CDATA[<p>If you like Drupal, but you don't really know how so many people are able to <a href="http://drupal.org/node/10259">contribute</a> on average 4 new modules <em>a day</em>, or use their creativity to <a href="http://drupal.org/node/196218">create a new theme</a>, <a href="http://drupal.org/project/issues">patch a bug</a>, or something else. There's a commitment I have taken on that doesn't take any thought, learning, or insight.</p>
<p>I have made a commitment to <a href="http://association.drupal.org/donate">donate</a> to the Drupal Association every week (I get paid every week). The budget is the big item on the Drupal Association's plate and the <a href="http://buytaert.net/drupal-association-2008-wishlist">Drupal 2008 wishlist</a>, voted on by members of drupal.org, is a big point of guidance for that budget. Make the same commitment and you'll help ensure things like updates to hardware, a drupal.org redesign, and conferences of various sizes can grow.</p><a href="http://ypn-rss.overture.com/rss/31384/1227/click/"><img src="http://ypn-rss.overture.com/rss/31384/1227/img/?url=http%3A%2F%2Fdeekayen.net%2Fanyone-can-help-drupal&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>DrupalCon excitement</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/drupalcon-excitement" />
    <id>http://deekayen.net/drupalcon-excitement</id>
    <published>2008-01-17T16:37:51+00:00</published>
    <updated>2008-01-17T17:27:37+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="Boston" />
    <category term="conference" />
    <category term="Drupal Association" />
    <category term="DrupalCon" />
    <summary type="html"><![CDATA[<div style="float: right"><a href="http://boston2008.drupalcon.org/"><img src="http://deekayen.net/sites/deekayen.net/files/drupalcon_02_jp.jpg" height="124" width="124" alt="DrupalCon Boston 2008" border="0" /></a></div>
<p>With the upcoming release of Drupal 6, <a href="http://boston2008.drupalcon.org/">DrupalCon Boston 2008</a> promises to unleash a flood of cool new stuff.</p>
<p>With <a href="http://drupal.org/node/172152">Actions</a> in core, <a href="http://drupal.org/project/workflow_ng">workflow-ng</a> taking a new twist on <a href="http://drupal.org/project/workflow">Workflow</a>, <a href="http://drupal.org/project/views">Views2</a> and <a href="http://drupal.org/project/panels">Panels2</a>, additions to the <a href="http://drupal.org/project/devel">devel</a> module for themers, upgrades to jQuery, new database <a href="http://drupal.org/node/146843">Schema API</a>, a fresh Drupal Association <a href="http://association.drupal.org/about/staff">board</a>, things look bright. I might make this the first Drupal or PHP conference I ever attempt to attend.</p>
<p><a href="http://boston2008.drupalcon.org/drupalcon-boston-sponsorships">Sponsorship</a> opportunities are still available and I expect the attendance to be sold out, especially since admission is &#188; the cost of <a href="http://tek.phparch.com/">php|tek</a>. Maybe your sponsorship will even attract a bright new employee to your organization. Only the best are at DrupalCon.</p>
    ]]></summary>
    <content type="html"><![CDATA[<div style="float: right"><a href="http://boston2008.drupalcon.org/"><img src="http://deekayen.net/sites/deekayen.net/files/drupalcon_02_jp.jpg" height="124" width="124" alt="DrupalCon Boston 2008" border="0" /></a></div>
<p>With the upcoming release of Drupal 6, <a href="http://boston2008.drupalcon.org/">DrupalCon Boston 2008</a> promises to unleash a flood of cool new stuff.</p>
<p>With <a href="http://drupal.org/node/172152">Actions</a> in core, <a href="http://drupal.org/project/workflow_ng">workflow-ng</a> taking a new twist on <a href="http://drupal.org/project/workflow">Workflow</a>, <a href="http://drupal.org/project/views">Views2</a> and <a href="http://drupal.org/project/panels">Panels2</a>, additions to the <a href="http://drupal.org/project/devel">devel</a> module for themers, upgrades to jQuery, new database <a href="http://drupal.org/node/146843">Schema API</a>, a fresh Drupal Association <a href="http://association.drupal.org/about/staff">board</a>, things look bright. I might make this the first Drupal or PHP conference I ever attempt to attend.</p>
<p><a href="http://boston2008.drupalcon.org/drupalcon-boston-sponsorships">Sponsorship</a> opportunities are still available and I expect the attendance to be sold out, especially since admission is &#188; the cost of <a href="http://tek.phparch.com/">php|tek</a>. Maybe your sponsorship will even attract a bright new employee to your organization. Only the best are at DrupalCon.</p>
<a href="http://ypn-rss.overture.com/rss/31384/1224/click/"><img src="http://ypn-rss.overture.com/rss/31384/1224/img/?url=http%3A%2F%2Fdeekayen.net%2Fdrupalcon-excitement&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>Go Green and get 5.01% APY</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/go-green-and-get-501-apy" />
    <id>http://deekayen.net/go-green-and-get-501-apy</id>
    <published>2008-01-02T18:49:11+00:00</published>
    <updated>2008-01-02T19:13:09+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="banking" />
    <category term="checking" />
    <category term="checks" />
    <category term="coastal federal credit union" />
    <category term="debit card" />
    <category term="go green" />
    <category term="interest" />
    <category term="money" />
    <category term="visa" />
    <summary type="html"><![CDATA[<p><a href="http://www.coastalfcu.org/gogreen/"><img src="http://deekayen.net/sites/deekayen.net/files/coastalfcu-gogreen.jpg" height="60" width="222" alt="" border="0" style="float: right" /></a></p>
<p><a href="http://www.coastalfcu.org/">Coastal Federal Credit Union</a> is offering 5.01% APY on their new <a href="http://www.coastalfcu.org/gogreen/">Go Green checking</a> account as of January 2, 2008. It's not a promotional rate on their existing interest checking, it's a new account type.</p>
<p>What's the catch? You must make 25 debit card transactions per month on the account (PIN, signature, or electronic). In months you don't make 25 debit card transactions, you revert to the 0.6% rate of the standard interest bearing account. As soon as you make 25 transactions again, you make high yields.</p>
<blockquote><p>
Go Green Checking is simply tied to using your debit card a minimum of 25 times per month. We felt all the other requirements were a nuisance and just got in the way.</p>
<p>- <a href="http://coastalfcu.custhelp.com/cgi-bin/coastalfcu.cfg/php/enduser/std_adp.php?p_faqid=1180&amp;p_created=1196370183&amp;p_sid=FBSYuMUi&amp;p_lva=&amp;p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NTYmcF9wcm9kcz0wJnBfY2F0cz0mcF9wdj0mcF9jdj0mcF9wYWdlPTEmcF9zZWFyY2hfdGV4dD1nbyBncmVlbg**&amp;p_li=&amp;p_topview=1">Coastal FAQ</a>
</p>
</p></blockquote>
<p>You still get online account access, <a href="http://coastalfcu.custhelp.com/cgi-bin/coastalfcu.cfg/php/enduser/std_adp.php?p_faqid=1177&amp;p_created=1196368675&amp;p_sid=FBSYuMUi&amp;p_lva=&amp;p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NTYmcF9wcm9kcz0wJnBfY2F0cz0mcF9wdj0mcF9jdj0mcF9wYWdlPTEmcF9zZWFyY2hfdGV4dD1nbyBncmVlbg**&amp;p_li=&amp;p_topview=1">can still write checks</a>, <a href="http://coastalfcu.custhelp.com/cgi-bin/coastalfcu.cfg/php/enduser/std_adp.php?p_faqid=1179&amp;p_created=1196369781&amp;p_sid=FBSYuMUi&amp;p_lva=&amp;p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NTYmcF9wcm9kcz0wJnBfY2F0cz0mcF9wdj0mcF9jdj0mcF9wYWdlPTEmcF9zZWFyY2hfdGV4dD1nbyBncmVlbg**&amp;p_li=&amp;p_topview=1">direct deposit is not required</a>, can see branch tellers, teller-by-mail, call the 24/7 call center, use the e-payments site (<a href="https://global1.onlinebank.com/cgi-forte/fortecgi.exe/frte_cs0?BankTag=612coastal&amp;TemplateName=Login.htm&amp;ServiceName=webteller">c-Pay</a>), and there are <a href="http://coastalfcu.custhelp.com/cgi-bin/coastalfcu.cfg/php/enduser/std_adp.php?p_faqid=1172&amp;p_created=1196193761&amp;p_sid=FBSYuMUi&amp;p_lva=&amp;p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NTYmcF9wcm9kcz0wJnBfY2F0cz0mcF9wdj0mcF9jdj0mcF9wYWdlPTEmcF9zZWFyY2hfdGV4dD1nbyBncmVlbg**&amp;p_li=&amp;p_topview=1">no account minimums</a> like with their standard interest bearing account.</p>
<p>When I asked why they're doing such a thing, they're trying to encourage people to write fewer checks because it's much less expensive for the credit union to process a debit card transaction than it is when you write a check. Since credit unions like Coastal are owned by the account holders (as compared to banks being owned by stockholders), Coastal is able to pass on the savings as higher interest rates to the account holders. Oh, and there's also the added environmental benefits in paper savings.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p><a href="http://www.coastalfcu.org/gogreen/"><img src="http://deekayen.net/sites/deekayen.net/files/coastalfcu-gogreen.jpg" height="60" width="222" alt="" border="0" style="float: right" /></a></p>
<p><a href="http://www.coastalfcu.org/">Coastal Federal Credit Union</a> is offering 5.01% APY on their new <a href="http://www.coastalfcu.org/gogreen/">Go Green checking</a> account as of January 2, 2008. It's not a promotional rate on their existing interest checking, it's a new account type.</p>
<p>What's the catch? You must make 25 debit card transactions per month on the account (PIN, signature, or electronic). In months you don't make 25 debit card transactions, you revert to the 0.6% rate of the standard interest bearing account. As soon as you make 25 transactions again, you make high yields.</p>
<blockquote><p>
Go Green Checking is simply tied to using your debit card a minimum of 25 times per month. We felt all the other requirements were a nuisance and just got in the way.</p>
<p>- <a href="http://coastalfcu.custhelp.com/cgi-bin/coastalfcu.cfg/php/enduser/std_adp.php?p_faqid=1180&amp;p_created=1196370183&amp;p_sid=FBSYuMUi&amp;p_lva=&amp;p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NTYmcF9wcm9kcz0wJnBfY2F0cz0mcF9wdj0mcF9jdj0mcF9wYWdlPTEmcF9zZWFyY2hfdGV4dD1nbyBncmVlbg**&amp;p_li=&amp;p_topview=1">Coastal FAQ</a>
</p></blockquote>
<p>You still get online account access, <a href="http://coastalfcu.custhelp.com/cgi-bin/coastalfcu.cfg/php/enduser/std_adp.php?p_faqid=1177&amp;p_created=1196368675&amp;p_sid=FBSYuMUi&amp;p_lva=&amp;p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NTYmcF9wcm9kcz0wJnBfY2F0cz0mcF9wdj0mcF9jdj0mcF9wYWdlPTEmcF9zZWFyY2hfdGV4dD1nbyBncmVlbg**&amp;p_li=&amp;p_topview=1">can still write checks</a>, <a href="http://coastalfcu.custhelp.com/cgi-bin/coastalfcu.cfg/php/enduser/std_adp.php?p_faqid=1179&amp;p_created=1196369781&amp;p_sid=FBSYuMUi&amp;p_lva=&amp;p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NTYmcF9wcm9kcz0wJnBfY2F0cz0mcF9wdj0mcF9jdj0mcF9wYWdlPTEmcF9zZWFyY2hfdGV4dD1nbyBncmVlbg**&amp;p_li=&amp;p_topview=1">direct deposit is not required</a>, can see branch tellers, teller-by-mail, call the 24/7 call center, use the e-payments site (<a href="https://global1.onlinebank.com/cgi-forte/fortecgi.exe/frte_cs0?BankTag=612coastal&amp;TemplateName=Login.htm&amp;ServiceName=webteller">c-Pay</a>), and there are <a href="http://coastalfcu.custhelp.com/cgi-bin/coastalfcu.cfg/php/enduser/std_adp.php?p_faqid=1172&amp;p_created=1196193761&amp;p_sid=FBSYuMUi&amp;p_lva=&amp;p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NTYmcF9wcm9kcz0wJnBfY2F0cz0mcF9wdj0mcF9jdj0mcF9wYWdlPTEmcF9zZWFyY2hfdGV4dD1nbyBncmVlbg**&amp;p_li=&amp;p_topview=1">no account minimums</a> like with their standard interest bearing account.</p>
<p>When I asked why they're doing such a thing, they're trying to encourage people to write fewer checks because it's much less expensive for the credit union to process a debit card transaction than it is when you write a check. Since credit unions like Coastal are owned by the account holders (as compared to banks being owned by stockholders), Coastal is able to pass on the savings as higher interest rates to the account holders. Oh, and there's also the added environmental benefits in paper savings.</p>
<a href="http://ypn-rss.overture.com/rss/31384/1222/click/"><img src="http://ypn-rss.overture.com/rss/31384/1222/img/?url=http%3A%2F%2Fdeekayen.net%2Fgo-green-and-get-501-apy&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>New hook_theme() in Drupal 6</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/new-hooktheme-drupal-6" />
    <id>http://deekayen.net/new-hooktheme-drupal-6</id>
    <published>2007-11-21T15:14:11+00:00</published>
    <updated>2007-11-21T17:31:32+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <summary type="html"><![CDATA[<p>As of Drupal 6, when you're writing modules, you might find the <code>theme()</code> function doesn't work as you expect. Whereas before you'd pass a parameter to the <code>theme()</code> function that told it which theme_* function to call, now you have to register the theme_* function for it to actually get called.</p>
<p>Not doing so probably results in mysterious data loss during execution for most implementations. I've known about it for some time now and still forget to register my theme_* functions.</p>
<p>There are so few examples at the moment on how to register theme functions, I wrote a stub module with just enough code to show the registration at work. I've made it available for download as a .tgz for you to play around with on your own.</p>    ]]></summary>
    <content type="html"><![CDATA[<p>As of Drupal 6, when you're writing modules, you might find the <code>theme()</code> function doesn't work as you expect. Whereas before you'd pass a parameter to the <code>theme()</code> function that told it which theme_* function to call, now you have to register the theme_* function for it to actually get called.</p>
<p>Not doing so probably results in mysterious data loss during execution for most implementations. I've known about it for some time now and still forget to register my theme_* functions.</p>
<p>There are so few examples at the moment on how to register theme functions, I wrote a stub module with just enough code to show the registration at work. I've made it available for download as a .tgz for you to play around with on your own.

<div class="codeblock"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/**<br /> * @file<br /> * Demonstration of theme function registration for Drupal 6<br /> *<br /> * @author David Kent Norman<br /> */<br /><br />/**<br /> * hook_menu()<br /> *<br /> * @return array<br /> */<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">themedemo_menu</span><span style="color: #007700">() {<br /><br />&nbsp; </span><span style="color: #0000BB">$items </span><span style="color: #007700">= array();<br /><br />&nbsp; </span><span style="color: #0000BB">$items</span><span style="color: #007700">[</span><span style="color: #DD0000">'themedemo'</span><span style="color: #007700">] = array(<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #DD0000">'title' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Theme Demo for Drupal 6'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #DD0000">'page callback' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'drupal_get_form'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #DD0000">'page arguments' </span><span style="color: #007700">=&gt; array(</span><span style="color: #DD0000">'themedemo_example'</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #DD0000">'access callback' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'user_access'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #DD0000">'access arguments' </span><span style="color: #007700">=&gt; array(</span><span style="color: #DD0000">'access content'</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #DD0000">'type' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">MENU_NORMAL_ITEM<br />&nbsp; </span><span style="color: #007700">);<br />&nbsp; return </span><span style="color: #0000BB">$items</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">/**<br /> * Demo form to have something to theme<br /> *<br /> * @return array<br /> */<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">themedemo_example</span><span style="color: #007700">() {<br />&nbsp; </span><span style="color: #0000BB">$form </span><span style="color: #007700">= array();<br /><br />&nbsp; </span><span style="color: #0000BB">$form</span><span style="color: #007700">[</span><span style="color: #DD0000">'example'</span><span style="color: #007700">] = array(<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #DD0000">'#title' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">t</span><span style="color: #007700">(</span><span style="color: #DD0000">'This is just an example'</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #DD0000">'#type' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'checkbox'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #DD0000">'#default_value' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">FALSE<br />&nbsp; </span><span style="color: #007700">);<br /><br />&nbsp; return </span><span style="color: #0000BB">$form</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">/**<br /> * hook_theme()<br /> * New registration function introduced in Drupal 6<br /> *<br /> * @return array<br /> */<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">themedemo_theme</span><span style="color: #007700">() {<br />&nbsp; return array(<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #DD0000">'themedemo_example' </span><span style="color: #007700">=&gt; array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #DD0000">'arguments' </span><span style="color: #007700">=&gt; array(</span><span style="color: #DD0000">'form' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">NULL</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp; )<br />&nbsp; );<br />}<br /><br /></span><span style="color: #FF8000">/**<br /> * The function that has to be registered in hook_theme()<br /> *<br /> * @param array $form<br /> * @return string<br /> */<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">theme_themedemo_example</span><span style="color: #007700">(</span><span style="color: #0000BB">$form</span><span style="color: #007700">) {<br />&nbsp; </span><span style="color: #0000BB">$form</span><span style="color: #007700">[</span><span style="color: #DD0000">'example'</span><span style="color: #007700">][</span><span style="color: #DD0000">'#description'</span><span style="color: #007700">] = </span><span style="color: #0000BB">t</span><span style="color: #007700">(</span><span style="color: #DD0000">'This description was added by the registered theme function.'</span><span style="color: #007700">);<br /><br />&nbsp; </span><span style="color: #0000BB">$output </span><span style="color: #007700">= </span><span style="color: #0000BB">drupal_render</span><span style="color: #007700">(</span><span style="color: #0000BB">$form</span><span style="color: #007700">);<br />&nbsp; return </span><span style="color: #0000BB">$output</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div></p><a href="http://ypn-rss.overture.com/rss/31384/1220/click/"><img src="http://ypn-rss.overture.com/rss/31384/1220/img/?url=http%3A%2F%2Fdeekayen.net%2Fnew-hooktheme-drupal-6&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
  <entry>
    <title>Dries makes Views a priority</title>
    <link rel="alternate" type="text/html" href="http://deekayen.net/dries-makes-views-priority" />
    <id>http://deekayen.net/dries-makes-views-priority</id>
    <published>2007-11-20T15:43:10+00:00</published>
    <updated>2007-11-20T15:52:41+00:00</updated>
    <author>
      <name>deekayen</name>
    </author>
    <category term="CCK" />
    <category term="Drupal" />
    <category term="PHP" />
    <category term="views" />
    <summary type="html"><![CDATA[<p><a href="http://www.buytaert.net/">Dries Buytaert</a>, Supreme Drupal Overlord, said today on the development@ mailing list the following:</p>
<blockquote><p>As indicated earlier, I'm _all_ for incorporating more of CCK and Views into core.  Let's make a concentrated effort for that in D7.  It doesn't mean that _all_ of CCK/Views needs to be in core, but certainly the stable and critical parts should, IMO.</p>
</p></blockquote>
<p>Barry Jaspan gets the credit for making the proper comments to receive such a reply.</p>    ]]></summary>
    <content type="html"><![CDATA[<p><a href="http://www.buytaert.net/">Dries Buytaert</a>, Supreme Drupal Overlord, said today on the development@ mailing list the following:</p>
<blockquote><p>As indicated earlier, I'm _all_ for incorporating more of CCK and Views into core.  Let's make a concentrated effort for that in D7.  It doesn't mean that _all_ of CCK/Views needs to be in core, but certainly the stable and critical parts should, IMO.</p></blockquote>
<p>Barry Jaspan gets the credit for making the proper comments to receive such a reply.</p><a href="http://ypn-rss.overture.com/rss/31384/1219/click/"><img src="http://ypn-rss.overture.com/rss/31384/1219/img/?url=http%3A%2F%2Fdeekayen.net%2Fdries-makes-views-priority&amp;pid=1426196321" border="0" /></a>    ]]></content>
  </entry>
</feed>
