1. links for 2006-02-01

    January 31st, 2006

  2. links for 2006-01-29

    January 28th, 2006

  3. Waterfall 2006

    January 28th, 2006

    There’s a blog post in the making about the beast that is the Waterfall approach, and the disruption that is Agile. But meanwhile, check out the one conference that you absolutely must attend to get it out of your system.

  4. links for 2006-01-28

    January 27th, 2006

  5. links for 2006-01-25

    January 24th, 2006

  6. Thunderbird Phishing Filter

    January 23rd, 2006

    thunderbird.png
    I just had to share this. This is a screenshot of Thunderbird 1.5 catching and flagging an e-mail as potential scam. The pop-up box warns me against opening what could potentially be a phishing site.

    The clue? Check out the status bar (click to enlarge). The real link goes to nick.geico.com, but the e-mail claims the link goes to mypolicy.geico.com. A classic phishing technique.
    Turns out this is actually a valid Geico URL. For some reason they think it’s a good idea to direct people to a funky URL before redirecting them to the real one. Not very helpful. But props to Thunderbird for catching it.

  7. Language barriers

    January 21st, 2006

    This picture was posted on Cara Oscura (via aj’s Den). I have no clue what the original post says, I’m guessing it’s in Spanish. Damn language barriers. Wait … I think I just figured out what the original post is about.

  8. links for 2006-01-19

    January 18th, 2006

  9. Marketing in the post-Cluetrain era

    January 18th, 2006

    You better pay attention, Tara knows what she’s talking about:

    1. A good marketer is a Community Advocate

    This means that you speak for your community to your company, not vice versa. Sounds scary, doesn’t it? Well, it is. Marketing isn’t the same as sales. It is the job of business development, sales, the C-suite, etc. to keep marketing on a path so that they can make money. Marketing drives forward with that purpose, but, in the end, has to advocate for the community in order to keep peace, balance and the rest of the stuff I mention below in check.

    Really. Trust me on this one. Someone has to. Think of it this way. It should never be an us vs. them scenario. “How do we get more people to buy our widget?” should be “Why aren’t people buying our widget? Maybe we should find out.” In the end, that will sell more widgets.

    And nine more ways to make a great product and help people find about it.

  10. Prototype adds CSS selectors

    January 18th, 2006

    From Ajaxian:

    Example: Find all elements inside elements with class “summary”, all inside the with id “page” and hide each matched tag: $$('div#page p.summary img').each(Element.hide);

    I discovered the multiple uses of CSS selectors when I bumped into behaviour. After playing with it for a while, I learned CSS selectors are extremely handy for selecting HTML elements based on their attributes. They’re easier to write than XPath expressions. Well, most of the time. They’re concise, readable and have a zero learning curve for Web developers.

    A while back I implemented CSS selectors for the Ruby Microformat parser. Microformats are all about finding semantic data in HTML. CSS selectors are all about identifying these semantics. Want to find an event? Use .event. Try writing that in XPath.

    Then, last night I played with Rails functional tests. I wrote a test case to verify a form contains an input field for the username. Rails has an assert_tag function just for that. Can you guess what this means?

    assert_tag :tag=>"input",
    :attributes=>{ :type=>"text", :name=>"username", :maxlength=>32
    :ancestor=>{ :tag=>"form",
    :ancestor=>{ :tag=>"div", :attributes=>{ :class=>"login" } }
    }

    It’s Ruby, but it’s certainly not concise, readable or fun to write. It just looks … wrong.

    So I pulled the Ruby Microformat parser library, and rewrote the same test using CSS selectors:

    assert_tag "div.login form input[type=text][name=username][maxlength=32]“

    Coupled with the new prototype library, I can now use CSS selectors to style pages, add JavaScript goodness, parse HTML, and write test cases.

    Like last year’s AJAX, CSS selectors are the best kept secret that’s making a comeback.

    Update: It must be CSS day. Here’s another good post, this time, on how not to write CSS.