<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
  <title>Mark McSpadden - Home</title>
  <id>tag:www.markmcspadden.net,2007:mephisto/</id>
  <generator uri="http://mephistoblog.com" version="0.7.3">Mephisto Noh-Varr</generator>
  
  <link href="http://www.markmcspadden.net/" rel="alternate" type="text/html" />
  <updated>2007-10-15T21:14:02Z</updated>
  <link rel="self" href="http://feeds.feedburner.com/MarkMcSpadden" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-10-15:679</id>
    <published>2007-10-15T21:12:00Z</published>
    <updated>2007-10-15T21:14:02Z</updated>
    <category term="Ruby and Rails" />
    <category term="ruby" />
    <link href="http://www.markmcspadden.net/2007/10/15/the-ruby-abandonment-threshold-survey" rel="alternate" type="text/html" />
    <title>The Ruby Abandonment Threshold Survey</title>
<content type="html">
            &lt;p&gt;If you work with Ruby, check out this survey: http://www.surveymonkey.com/s.aspx?sm=EJH5SAjDpxkqo1AodLt4iA_3d_3d&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-09-13:66</id>
    <published>2007-09-13T20:54:00Z</published>
    <updated>2007-09-13T21:04:47Z</updated>
    <category term="Miscellaneous" />
    <category term="iphone" />
    <category term="tmobile" />
    <link href="http://www.markmcspadden.net/2007/9/13/tmobile-iphone-awesomeness" rel="alternate" type="text/html" />
    <title>TMobile + iPhone = Awesomeness</title>
<content type="html">
            From my twitter feed:
	&lt;blockquote&gt;
		&lt;p&gt;I have an iphone. I have an iphone on tmobile’s voice and data network. I have an iphone on my home wifi network. I have an iphone.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;h2&gt;How it all started&lt;/h2&gt;


	&lt;p&gt;I was browsing through my feeds yesterday and came across &lt;a href="http://gizmodo.com/gadgets/exclusive/iphone-free-software-unlock-confirmed-death-star-explodes-298825.php?cpage=2"&gt;this story&lt;/a&gt; about an open source effort to unlock the iPhone. As a very happy TMobile customer, I had never considered the iPhone within my reach, but now with an open source unlock and 4GB iPhones reduced to $299, I had to give this thing a whirl.&lt;/p&gt;


	&lt;p&gt;So I head over to my local Mac store, inquire about the refund policy (14 days, 10% restocking fee if opened), buy my 4GM iphone and then head home to do some more reading. After a little bit, I decide to eat the $30 bucks and unwrap the beautiful piece of machinery. (I’m a nerd, just the hours spent on the effort are worth that small price.)&lt;/p&gt;


	&lt;h2&gt;The Resources&lt;/h2&gt;


	&lt;p&gt;By the time I write this, there may be an installer available, but in case there’s not:&lt;/p&gt;


	&lt;p&gt;Mac &lt;span class="caps"&gt;OS X 10&lt;/span&gt;.4 and iTunes version 7.4&lt;/p&gt;


Apps:
	&lt;ul&gt;
	&lt;li&gt;iFuntastic_3.03&lt;/li&gt;
		&lt;li&gt;iActivator&lt;/li&gt;
		&lt;li&gt;Installer.app&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Tutorial: &lt;a href="http://iphone.unlock.no/"&gt;http://iphone.unlock.no/&lt;/a&gt;&lt;/p&gt;


	&lt;h2&gt;The hoop jumping&lt;/h2&gt;


	&lt;p&gt;I am definitely not saying this will work for you. It did for me. If you brick your phone it’s your fault. (I’m not even sure you &lt;em&gt;can&lt;/em&gt; brick your phone, you should be able to easily restore it, but disclaimers are cool and I wanted one.)&lt;/p&gt;


	&lt;p&gt;First I connected my iPhone to my Mac, itunes came up, I canceled out of the activation. Next I fired up iFuntastic and choose the “Restore” option. This is really nice since you start clean and it gives you a file to revert back to should things go crazy. I then tried to use the “Unshackle” feature, but was unsuccessful.&lt;/p&gt;


	&lt;p&gt;I then decided to try iActivator. It worked great and after following all their instructions, I had an activated iPhone.&lt;/p&gt;


	&lt;p&gt;Now that my iPhone was activated, I could add the Installer.app to it. After I followed all those instructions, I was ready to start unlocking. I hit the tutorial about half way through step 2 (obviously I used the mac Installer.app instead of ibrickr) and used Installer to install the 3 required packages.&lt;/p&gt;


	&lt;p&gt;Next I download the required files (oops, those are at the start of Step 2) and moved them to my iphone. I moved them not using the suggested method, but instead did something else. I first joined my iphone to my wireless network. Then I used ssh to login to my iPhone and test that piece of the puzzle. Then I used a mac program called sshfs that basically mounts a drive for you via ssh. After the drive was mounted, I just did a ‘drag and drop’ for the files and folders specified in the tutorial.&lt;/p&gt;


	&lt;p&gt;I then ran all the tutorial commands, without issue, and at the end, that’s right, an iPhone on Tmobile’s network. Pretty sweet.&lt;/p&gt;


	&lt;h2&gt;Still in trial mode&lt;/h2&gt;


	&lt;p&gt;I still have 13 days to evaluate this setup to see if it’s actually feasible to maintain against the firmware and itunes updates. I’ll be sure and keep you posted!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-09-08:65</id>
    <published>2007-09-08T13:39:00Z</published>
    <updated>2007-09-08T13:59:35Z</updated>
    <category term="Ruby and Rails" />
    <category term="lsrc2007 lone star ruby conference ruby rails texas" />
    <link href="http://www.markmcspadden.net/2007/9/8/lone-star-ruby-conference-day-1" rel="alternate" type="text/html" />
    <title>Lone Star Ruby Conference Day #1</title>
<content type="html">
            &lt;p&gt;I’m in Austin at the Lone Star Ruby Conference and I gotta say Day #1 was so packed that I was too worn out to even talk about it last night. A quick breakdown before Day #2 starts…&lt;/p&gt;


	&lt;p&gt;First the Ruby:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Some great talks about Ruby as a beautiful, fun, and exciting languague&lt;/li&gt;
		&lt;li&gt;Interesting talk by James Edward Gray II about using Ruby as a Glue language to call non Ruby applications within the OS&lt;/li&gt;
		&lt;li&gt;Testing…it’s your friend. It now comes in several Ruby flavors.&lt;/li&gt;
		&lt;li&gt;Ruby community is cool. We’re nice and smart and taking the world by force.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Other Stuff:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Day #1 went from 9am until 10pm. They even served us lunch and dinner here at the conference center. So pretty much one seat for 13 hours.&lt;/li&gt;
		&lt;li&gt;I got to meet and chat with Gregg and Jason from RailsEnvy.com. The “videos”http://www.railsenvy.com these guys have made for Rails are great and, I’ve got to say, they really know their stuff.&lt;/li&gt;
	&lt;/ul&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-08-31:63</id>
    <published>2007-08-31T03:05:00Z</published>
    <updated>2007-08-31T03:11:27Z</updated>
    <category term="Financial Industry" />
    <category term="Miscellaneous" />
    <category term="fi" />
    <category term="financial industry" />
    <category term="mobile banking" />
    <link href="http://www.markmcspadden.net/2007/8/31/the-current-state-of-our-high-tech-world" rel="alternate" type="text/html" />
    <title>The current state of our "high tech" world</title>
<content type="html">
            &lt;p&gt;I was reading Jim Bruene’s &lt;a href="http://www.mobilemoneybanking.com"&gt;Mobile Money and Banking&lt;/a&gt; today an I got into his most recent article about &lt;a href="http://www.mobilemoneybanking.com/2007/08/sms_banking_will_it_work_in_th.html"&gt;&lt;span class="caps"&gt;SMS&lt;/span&gt; Banking&lt;/a&gt;. I’m interested in the subject and probably would have just stored it away in my mental file, however, Jim was offering a $5 Starbucks gift card just for posting a “substantive comment.”&lt;/p&gt;


	&lt;p&gt;Having already been to Starbucks today (and $6 poorer for it) I thought I’d share my thoughts on the impact that cell phone service providers will have on the future of &lt;span class="caps"&gt;SMS&lt;/span&gt; and Mobile web banking.&lt;/p&gt;


	&lt;p&gt;Not long after I submit my comment, Jim emails me to get my physical address so he can mail me the gift card. This exchange  struck both of us as kind of funny. We are talking about checking our bank balances and transferring money on cell phones, yet to get me a Starbucks gift card, Jim was going to have to physically go to a Starbucks&lt;sup&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt;, buy a $5 gift card, put it in an envelope, put a stamp on it, and send it half way across the country to my place. :)&lt;/p&gt;


	&lt;p&gt;Jim did point out that we’ve come a long way to get to the Starbucks gift &lt;em&gt;card&lt;/em&gt;, but it’s pretty apparent to me that we’ve still got a ways to go.&lt;/p&gt;


	&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; Starbucks does sell gift cards through their website that you can have delivered to anyone you want, however the smallest increment they offer is $15.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-08-29:60</id>
    <published>2007-08-29T10:26:00Z</published>
    <updated>2007-08-29T23:45:34Z</updated>
    <category term="Ruby and Rails" />
    <category term="Security" />
    <category term="Web Development" />
    <category term="rails" />
    <category term="rails security" />
    <category term="ruby" />
    <category term="ruby on rails" />
    <category term="security" />
    <link href="http://www.markmcspadden.net/2007/8/29/the-panic" rel="alternate" type="text/html" />
    <title>The Panic</title>
<content type="html">
            &lt;p&gt;If you’re a developer, you know what I’m talking about. You’re doing something seemingly trivial, when you see something, you’re not sure what it is, but it doesn’t look quite right. You squint at it. Then you realize, this is something bad, something big, something really big and bad.&lt;/p&gt;


You then start down a roller coaster of emotions and reactions:
	&lt;ol&gt;
	&lt;li&gt;Denial: “No, my code isn’t &lt;em&gt;really&lt;/em&gt; doing that.” &lt;/li&gt;
		&lt;li&gt;Anger: “Why is my stinking code doing this!” &lt;/li&gt;
		&lt;li&gt;Blame: “It’s got to be something wrong with a library or a bad default setting.” &lt;/li&gt;
		&lt;li&gt;Generalization: “I can’t be the only person this is happening to. Is this is happening on every site?” &lt;/li&gt;
		&lt;li&gt;Acceptance: “Ok, this is wrong and it needs to be fixed.”&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;It happened to me yesterday, while scanning the logs of an internal app looking for bugs. I started noticing something that didn’t seem quite right. My application was logging all the details of login requests, including passwords. That’s right, passwords and their associated usernames were just sitting in my log files, clear text for the world to see.&lt;/p&gt;


	&lt;p&gt;So I started the panic…all the stages flew by in a matter of minutes. Then I did the constructive thing and hit up Google for an answer. And one was right there for the taking.&lt;/p&gt;


&lt;strong&gt;If you use Ruby on Rails, you need to add this to your ApplicationController for every application you have&lt;/strong&gt;
&lt;pre&gt;&lt;code&gt;filter_parameter_logging :password, :password_confirmation&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;What does this do? Well as you probably guessed, it filters the given parameters from being logged in your log files. The request will still be logged, only the specified parameters will be logged as “[FILTERED]” instead of their actual values.&lt;/p&gt;


	&lt;p&gt;Now I know what you’re thinking, “Why isn’t this taken care of by default?” or “How did I miss this?” The first is valid, the second, well you can console yourself in the fact that for some reason it doesn’t seem to be common knowledge among rails people. Let’s fix that shall we…&lt;/p&gt;


	&lt;p&gt;&lt;small&gt;Special thanks to &lt;a href="http://baldur.snitchmedia.com/"&gt;Baldur Gudbjornsson’s blog&lt;/a&gt; for stopping the panic for me!&lt;/small&gt;&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-08-09:53</id>
    <published>2007-08-09T21:39:00Z</published>
    <updated>2007-08-09T22:09:35Z</updated>
    <category term="Announcements" />
    <category term="Financial Industry" />
    <category term="Site Launches" />
    <category term="Usability" />
    <category term="Web Development" />
    <category term="fi fi-feeds creditunion-feeds" />
    <link href="http://www.markmcspadden.net/2007/8/9/the-banktastic-feeds" rel="alternate" type="text/html" />
    <title>The Banktastic Feeds</title>
<content type="html">
            &lt;p&gt;I was doing more normal feed scan on Tuesday, when I came across an article by Robbie Wright titled &lt;a href="http://blog.cuemployee.com/2007/08/06/making-rss-easy"&gt;Making &lt;span class="caps"&gt;RSS&lt;/span&gt; Easy&lt;/a&gt;. Little did I know it would steal half of my week.&lt;/p&gt;


	&lt;p&gt;What Robbie and the world didn’t know is that at my &lt;a href="http://www.thegarlandgroup.net"&gt;day job&lt;/a&gt; I’ve been hacking away at a community site for bankers that is all about making industry specific information easier to find and use. With that in mind I started hacking away trying to aggregate FI feeds. The results are as follows:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.banktastic.com/feeds.php"&gt;Six compiled FI feeds&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;A &lt;a href="http://www.banktastic.com"&gt;splash page&lt;/a&gt; for Banktastic complete with Google Analytics&lt;/li&gt;
		&lt;li&gt;A &lt;a href="http://groups.google.com/group/banktastic-beta-announcement"&gt;mailing list&lt;/a&gt; for the Banktastic Beta Launch&lt;/li&gt;
		&lt;li&gt;A deadline for Banktastic Beta&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;The moral of the story: Don’t read Robbie’s blog :)&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-08-01:52</id>
    <published>2007-08-01T17:21:00Z</published>
    <updated>2007-08-01T18:17:30Z</updated>
    <category term="Productivity" />
    <category term="Usability" />
    <category term="email clutter usability 3_sentence_emails" />
    <link href="http://www.markmcspadden.net/2007/8/1/the-email-disclaimer" rel="alternate" type="text/html" />
    <title>The Email Disclaimer</title>
<content type="html">
            &lt;p&gt;&lt;a href="http://www.opensourcecu.com"&gt;Open Source CU&lt;/a&gt; just &lt;a href="http://opensourcecu.com/articles/2007/8/1/cutting-clutter"&gt;gave me some props&lt;/a&gt; for the little disclaimer I’ve been using at the bottom of my emails. Since a mention on &lt;span class="caps"&gt;OSCU&lt;/span&gt; usually brings in some people, I thought I’d explain and expand a little for anyone that’s interested.&lt;/p&gt;


First, the disclaimer that appears just under my name on both my personal &lt;em&gt;and professional&lt;/em&gt; emails:
&lt;blockquote&gt;
Did I just sound like a jerk? If I came across as a little short, it may be due to the fact that I am currently experimenting with different disciplines of email writing. I am currently limiting all my emails to 3 sentences or less. Sound interesting? Read more at http://three.sentenc.es and help cut down on email clutter.
&lt;/blockquote&gt;

&lt;h2&gt;Where did I start?&lt;/h2&gt;
A few months back I read &lt;a href="http://www.amazon.com/Bit-Literacy-Productivity-Information-Overload/dp/0979368103/ref=pd_bbs_sr_1/105-5680494-0047610?ie=UTF8&amp;amp;#38;s=books&amp;amp;#38;qid=1185988198&amp;amp;#38;sr=8-1"&gt;Bit Literacy by Mark Hurst&lt;/a&gt; and made a personal commitment to write shorter emails. The problem was that I didn’t really share that commitment with anyone. You’d be surprised (or maybe you wouldn’t) at how many people got upset when I started sending one and two sentence emails that ultimately lacked the “personal fluff” they were used to. I quickly abandoned the practice for fear of losing all my friends.
&lt;br /&gt;&lt;br /&gt;
&lt;h2&gt;The re-birth of the short email&lt;/h2&gt;
A few weeks ago, I came across the &lt;a href="http://three.sentenc.es/"&gt;three sentences site&lt;/a&gt; through my feed reading and was re-energized. I took a look at the 2, 4, and 5 sentence varieties but ultimately set myself on 3 and haven’t looked back. I quickly threw together the disclaimer, slapped it on my personal email, and asked permission to use it on my work emails as well. Since I work for &lt;a href="http://www.thegarlandgroup.net"&gt;one of the coolest companies out there&lt;/a&gt; I was given the “ok” and that’s where I sit today.
&lt;br /&gt;&lt;br /&gt;
&lt;h2&gt;Personal Benefits&lt;/h2&gt;
So I love writing shorter emails. Not only do I find my writing improving, but I find myself more likely to send emails. I know that if I can keep it short, there is a much better chance that my email will get read and be responded to. I do spend more time writing each email in order to get it under the 3 sentence limit, but to me it’s well worth it.

	&lt;p&gt;Hope you’ve found my little journey enlightening!&lt;/p&gt;


&lt;strong&gt;Update:&lt;/strong&gt; I just tracked down where this whole sentences thing got started and this looks like &lt;a href="http://www.mikeindustries.com/blog/archive/2007/07/fight-email-overload-with-sentences"&gt;the original&lt;/a&gt;. His disclaimer may be better than mine:
&lt;blockquote&gt;
Q: Why is this email 5 sentences or less?&lt;br /&gt;
A: http://five.sentenc.es
&lt;/blockquote&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-07-31:51</id>
    <published>2007-07-31T23:50:00Z</published>
    <updated>2007-08-01T00:07:25Z</updated>
    <category term="Books" />
    <category term="Usability" />
    <category term="books choice" />
    <link href="http://www.markmcspadden.net/2007/7/31/book-review-the-paradox-of-choice" rel="alternate" type="text/html" />
    <title>Book Review: The Paradox of Choice</title>
<content type="html">
            &lt;p&gt;I recently started and finished &lt;a href="http://www.amazon.com/Paradox-Choice-Why-More-Less/dp/0060005696/ref=pd_bbs_sr_1/105-5680494-0047610?ie=UTF8&amp;amp;#38;s=books&amp;amp;#38;qid=1185925971&amp;amp;#38;sr=8-1"&gt;The Paradox of Choice&lt;/a&gt; by Barry Schwartz and I have a hard time even explaining how good this book is. You need to buy this book. Go into the bookstore with blinders on (ignore the other choices) and get it today. Seriously.&lt;/p&gt;


	&lt;p&gt;Ok, so why do you need to read this book? Because it’s all about the mess of choices that we face everyday and how, as the the sub-sub title states, “the culture of abundance robs us of satisfaction.” There is a ton of info in this book about the way we make choices and insight into how we can be happier with the choices we make.&lt;/p&gt;


	&lt;p&gt;Now beyond just personal enlightenment, if you are someone in industry that is trying to better serve people, this is a must read. It will help you understand how people choose and why they often choose not to choose when presented with too many choices.&lt;/p&gt;


	&lt;p&gt;I’ve found this book to be extremely beneficial both personally and professionally. It has helped be happier with the daily choices I make and I think it’s helping build better websites.&lt;/p&gt;


	&lt;p&gt;Ok enough sales pitch…go buy it so we can talk about it.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-07-27:49</id>
    <published>2007-07-27T16:58:00Z</published>
    <updated>2007-07-27T17:16:25Z</updated>
    <category term="Javascript" />
    <category term="Usability" />
    <category term="delicious" />
    <category term="firefox" />
    <category term="javascript" />
    <category term="js" />
    <link href="http://www.markmcspadden.net/2007/7/27/extending-del-icio-us-via-javascript" rel="alternate" type="text/html" />
    <title>Extending Del.icio.us via Javascript</title>
<content type="html">
            &lt;p&gt;So I’m blogging more and posting more comments on blogs I read…which overall is a good thing. However, maintaining and following the conversations I get involved in via comments is super tedious. So I looked to my old friend Delicious for help in the matter.&lt;/p&gt;


	&lt;p&gt;I started by adding all the articles I’ve commented on to Delicious with appropriate tags plus two of my own homegrown tags: &lt;a href="http://del.icio.us/markmcspadden/watching"&gt;watching&lt;/a&gt; and &lt;a href="http://del.icio.us/markmcspadden/contributed"&gt;contributed&lt;/a&gt;. Why two tags? Eventually I’d like to move articles off my “watching” list, but would still like a place to track down all the conversations I’ve “contributed” to.&lt;/p&gt;


	&lt;p&gt;Next, I wanted to be able to go to my “watching” tag in Delicious and quickly open up all the links. Hmmm…there’s not really a way to do that. So my buddy JS and I spent a half hour together and made our own. Here is the finished product that you can just drag into your “Bookmark Toolbar” on FF: &lt;a&gt;&lt;span class="caps"&gt;DOAL&lt;/span&gt;: Delicious Open All Links&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Now, anytime you are viewing a page in Delicious using FF, you can easily open all the links by clicking on that bookmark.
(I don’t know what to tell you non-firefoxers…maybe someone in the comments can help you out.)&lt;/p&gt;


	&lt;p&gt;So, if you’re not a nerd, you should probably stop here. However, if you like Javascript, I’ll give you a quick walk through of what I did to get this thing going.&lt;/p&gt;


	&lt;p&gt;First, I went to my selected &lt;a href="http://del.icio.us/markmcspadden/watching"&gt;Delicious tag&lt;/a&gt; and opened up Firebug to start playing around. Using the inspect method, I see that the only “h4” tags on the page are the ones that house the links I want. Being a regular prototype user, here was my first attempt via the Firebug console: (Ok it’s not the first thing I typed, but my first real attempt)&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;$$('li.post h4 a').each(function(element) {window.open(element.href)});&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;Wow…that is good looking, sexy, one line JS! But it doesn’t work. For some reasons the “window.open” event wasn’t firing as expecting when inside the “each” function.&lt;/p&gt;


	&lt;p&gt;So I move to something like this:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;var links = $$('li.post h4 a'); 
for(var i=0; i&amp;lt;links.length; i++) {
  window.open(links[i].href)
};&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;Ah the for loop…it’s been a while. This code works in Firebug, so I condense it to one line, put “javascript:” in front of it, paste it into the address bar, and hit enter. No go. ”$$” is not a function. Crap. Assuming prototype lives everywhere is a bad assumption. Let’s try to make it work without my favorite JS library.&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;var h4s = document.getElementsByTagName("h4"); 
for(var i=0; i&amp;lt;h4s.length; i++) {
  window.open(h4s[i].getElementsByTagName("a")[0].href)
}; &lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;Sweet. This working in the address bar, and opens up the right links, but it’s causing my Delicious page to go away. Let’s fix that.&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;var h4s = document.getElementsByTagName("h4"); 
for(var i=0; i&amp;lt;h4s.length; i++) {
  window.open(h4s[i].getElementsByTagName("a")[0].href)
}; 
window.refresh();&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;That’s better. Now all you do is right click in your bookmark toolbar, choose “New bookmark”, name it and insert the one line version of the code with “javascript:” in front of it and you have a Delicious extension!&lt;/p&gt;


	&lt;p&gt;I’m open to re-writes and suggestions for better efficiency, so if you’ve got ideas, let’s hear them.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-07-25:43</id>
    <published>2007-07-25T22:54:00Z</published>
    <updated>2007-07-25T22:57:09Z</updated>
    <category term="Ruby and Rails" />
    <category term="Usability" />
    <category term="Web Development" />
    <category term="copy" />
    <category term="copywriting" />
    <category term="techie dictionary" />
    <category term="techie to human dictionary" />
    <category term="usability" />
    <link href="http://www.markmcspadden.net/2007/7/25/let-s-start-a-discussion-thread-user-to-user" rel="alternate" type="text/html" />
    <title>Let's start a discussion thread, user to user.</title>
<content type="html">
            &lt;p&gt;Seriously who talks like that? Unfortunately too many of us that build web apps speak this way through the copy we use on our sites. &lt;a href="http://www.opensourcecu.com"&gt;Trey Reeme&lt;/a&gt; recently re-inspired me to stop talking like a techie and start talking like a human.&lt;/p&gt;


	&lt;p&gt;So I’m trying to do better, but it’s not all that easy. I’ve been in tech-land a long time. So I thought I’d start a personal “techie to human dictionary” to help me out. You can checkout &lt;a href="http://www.markmcspadden.net/pages/the-techie-to-human-dictionary"&gt;this page&lt;/a&gt; to see where I’m at. (Don’t get your hopes up, there’s only 4 entries.)&lt;/p&gt;


	&lt;p&gt;I’d much appreciate any feedback or ideas! I’d really like to see this thing be a real resource…so let’s get started.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-07-24:23</id>
    <published>2007-07-24T15:47:00Z</published>
    <updated>2007-07-24T23:09:26Z</updated>
    <category term="Financial Industry" />
    <category term="bank" />
    <category term="banking" />
    <category term="barcampbankseattle" />
    <category term="financial" />
    <category term="jesse robbins" />
    <link href="http://www.markmcspadden.net/2007/7/24/barcampbankseattle-day-2-recap" rel="alternate" type="text/html" />
    <title>BarCampBankSeattle Day 2 Recap</title>
<content type="html">
            &lt;p&gt;Day 2…wow…what a day. Started with a great session on &lt;a href="http://barcampbankseattle.pbwiki.com/Day2Session1D"&gt;banker to banker collaboration&lt;/a&gt; and ended with a monumental whiteboard of promise and hope. Sound a little dramatic…maybe…but then again maybe not. The amount of space it is taking up in my mind can only be explained by something that truly is revolutionary.&lt;/p&gt;


	&lt;p&gt;Even with the picture of that whiteboard almost tattooed in my mind, the thing that sticks with me the most from Day 2, is Jesse’s unwillingness to let the rest of us settle for the Jesse Robbins solution. There were several times in our afternoon discussion where I could almost feel the room waiting to let Jesse take this project and run all the way with it, filling us in where appropriate. However, much to Jesse’s credit, that was not the path that was taken, nor was it the path that was needed. What needed to happen was a room full people talking to a whiteboard, venting frustrations and forging solutions.&lt;/p&gt;


	&lt;p&gt;And now we sit with an even greater task ahead, continuing forward without sitting in the same room and staring at each other until someone speaks. I am excited about the road ahead, not just for the promise of an open source solution to an industry issue, but also for the collaboration that will occur between bright people and experimentation of the technologies that will best facilitate this conversation.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-07-22:22</id>
    <published>2007-07-22T10:10:00Z</published>
    <updated>2007-07-24T23:11:13Z</updated>
    <category term="Financial Industry" />
    <category term="bank" />
    <category term="banking" />
    <category term="barcampbankseattle" />
    <category term="financial" />
    <link href="http://www.markmcspadden.net/2007/7/22/barcampbankseattle-day-1-recap" rel="alternate" type="text/html" />
    <title>BarCampBankSeattle Day 1 Recap</title>
<content type="html">
            &lt;p&gt;Day 1 of &lt;a href="http://barcamp.org/BarCampBankSeattle"&gt;&lt;span class="caps"&gt;BCBS&lt;/span&gt;&lt;/a&gt; was a whirlwind and honestly wore me out. (Hence I’m recapping in the morning and not last night.) It was my first BarCamp event in general and I have to say, I’m sold!&lt;/p&gt;


	&lt;p&gt;But even beyond the BarCamp experience, being trapped in a room all day with people that eat, sleep, drink, and breathe the financial industry is truly unique. I said it last night and I mention it in the sidebar of this blog, passionate people are awesome! They are contagious. For all the talk about how bad corporate cultures can become in the presence of a few bad people, I have think that just the presence of one of these people in an organization is culture changing and if you were lucky enough to have two I would expect nothing less than earthshaking innovation.&lt;/p&gt;


	&lt;p&gt;Well it’s off to Day 2!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-07-16:21</id>
    <published>2007-07-16T14:49:00Z</published>
    <updated>2007-07-24T23:11:42Z</updated>
    <category term="Announcements" />
    <category term="Financial Industry" />
    <category term="bank" />
    <category term="banking" />
    <category term="barcampbankseattle" />
    <category term="financial" />
    <link href="http://www.markmcspadden.net/2007/7/16/barcampbankseattle-here-i-come" rel="alternate" type="text/html" />
    <title>BarCampBankSeattle here I come...</title>
<content type="html">
            &lt;p&gt;It’s official, Brad and I are on a collision course with the first &lt;a href="http://barcamp.org/BarCampBank"&gt;BarCampBank&lt;/a&gt; in the US, &lt;a href="http://barcamp.org/BarCampBankSeattle"&gt;BarCampBankSeattle&lt;/a&gt;!&lt;/p&gt;


	&lt;p&gt;I’ve got so much to do to get ready for this thing that it’s stupid, so the post ends here.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-06-21:20</id>
    <published>2007-06-21T13:55:00Z</published>
    <updated>2007-07-24T23:12:29Z</updated>
    <category term="Javascript" />
    <category term="Web Development" />
    <category term="element.methods.visible" />
    <category term="element.visible" />
    <category term="javascript" />
    <category term="prototype" />
    <link href="http://www.markmcspadden.net/2007/6/21/element-methods-visible-may-not-return-what-you-would-expect" rel="alternate" type="text/html" />
    <title>Element.Methods.visible may not return what you would expect.</title>
<content type="html">
            &lt;p&gt;I was knee deep in an old php form this week, trying to clean it up a bit, hiding and showing certain questions based on the responses of earlier questions. In addition this form had over 400 lines of JS validation that I had to turn on and off based on a questions visibility. Did I mention most of the fields and labels were stuck in a table?&lt;/p&gt;


	&lt;p&gt;(Ok…I can’t complain too much, it was marked up very nice and clean.)&lt;/p&gt;


	&lt;p&gt;So I’m hacking away at this validation and I need to only validate visible fields. So naturally I try something like this:&lt;/p&gt;


&lt;pre&gt;
if($('fieldId').visible() &amp;&amp; oldConditions) {
  throw an error;
}
&lt;/pre&gt;

	&lt;p&gt;Seemed pretty simple to me…until it wasn’t working. Fields that I could not see in my browser were still being validated. If I can’t see it, doesn’t that mean it is &lt;span class="caps"&gt;NOT&lt;/span&gt; visible.&lt;/p&gt;


	&lt;p&gt;According to prototype, I’m way off. The ‘visible’ method only tests &lt;span class="caps"&gt;THE SINGLE ELEMENT&lt;/span&gt; it is called on for the “style.display == ‘none’” without regard to that element’s ancestors. The problem was, my fields were visible, but the cells that contained them were not. What to do?&lt;/p&gt;


	&lt;p&gt;Extend prototpye of course! After a google and &lt;a href="http://drnicwilliams.com/2006/09/09/extend-prototype-dollar-yourself/"&gt;a quick read of a short article&lt;/a&gt; this is what I came up with:&lt;/p&gt;


&lt;pre&gt;
Element.Methods.truelyVisible = function(element) {
  var visibleBoolean = element.visible();
  element.ancestors().each(function(el){ 
    if(!el.visible()) { visibleBoolean = false; }
  });
  return visibleBoolean;
};

Element.addMethods();
&lt;/pre&gt;

	&lt;p&gt;Quickly, it runs through an element’s ancestor’s checking them for visibility and then returning where the element can actually be seen or not. Now you can do &lt;code&gt;$('elementId').truelyVisible()&lt;/code&gt; and get whether or not an element can actually be seen in the browser. Hope you enjoy!&lt;/p&gt;


	&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;b&gt;PS. Looking at it a day later, it could probably be more efficient like this:&lt;/b&gt;&lt;/p&gt;


&lt;pre&gt;
Element.Methods.truelyVisible = function(element) {
  var visibleBoolean = element.visible();
  if(visibleBoolean) {
    element.ancestors().each(function(el){ 
      if(!el.visible()) { visibleBoolean = false; }
    });
  }
  return visibleBoolean;
};

Element.addMethods();
&lt;/pre&gt;

	&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;b&gt;&lt;span class="caps"&gt;PPS&lt;/span&gt;. It gets even better…I should blog code more often:&lt;/b&gt;&lt;/p&gt;


&lt;pre&gt;
Element.Methods.truelyVisible = function(element) {
  return (element.visible() &amp;&amp; !element.ancestors().any(function(el){ return !el.visible(); })) 
};

Element.addMethods();
&lt;/pre&gt;
          </content>  </entry>
  <entry xml:base="http://www.markmcspadden.net/">
    <author>
      <name>markmcspadden</name>
    </author>
    <id>tag:www.markmcspadden.net,2007-05-04:19</id>
    <published>2007-05-04T11:55:00Z</published>
    <updated>2007-07-24T23:13:22Z</updated>
    <category term="Announcements" />
    <category term="Financial Industry" />
    <category term="Web Development" />
    <category term="bank" />
    <category term="garlandgroup" />
    <category term="risk" />
    <category term="risk assessment" />
    <category term="riskkey" />
    <link href="http://www.markmcspadden.net/2007/5/4/riskkey-launched" rel="alternate" type="text/html" />
    <title>RiskKey Launched!</title>
<content type="html">
            &lt;p&gt;There are not enough exclamation marks in the world to follow that title. I’m so happy to finally have this app up and running and waiting for the world to embrace it.&lt;/p&gt;


	&lt;p&gt;Ok…so it’s really not targeted at the whole world…just the world of Financial Institutions and their Risk Assessments. (But that’s still a good sized world!)&lt;/p&gt;


	&lt;p&gt;Check out the full announcement at: &lt;a href="http://blog.riskkey.com"&gt;blog.riskkey.com&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;I hope to follow this launch with several posts about my experience over the last month in trying to push this thing to launch. Should be some fun JS, RoR, and UI discussion!&lt;/p&gt;
          </content>  </entry>
</feed>
