Web


So Firefox 2 is out, and it looks much like its predecessor. The upgrade was painless, nothing broke. So what, exactly, changed? Well one thing is that it has support for JavaScript 1.7, which (among other things) includes support for array comprehensions via iterators, generators, and other Pythonic things.

What caught my eye was that it supports map natively. For anyone using Prototype and getting annoyed with its performance, this could be a big thing. In a few simple tests I found that the exact same loop code runs 2-3 times faster with the native map as compared to Prototype’s implementation. If we could somehow harness that power…

I’m selling a phone on eBay for a friend, but since the last time I used eBay it seems to have been taken over by Nigerian scammers. The winning bid on my item was a scammer, and after many emails (mostly automated) from eBay and PayPal regarding this situation, here’s my response:

Hello,

I appreciate the support I’ve received so far regarding my sale of this item, however I find it lacking and I think you could do better. I feel as though I’m discussing this issue with three different entities: two branches of eBay and PayPal (which is now an eBay company). Therefore my experience is quite fragmented and, unfortunately, could be quite confusing if I didn’t already have a fairly firm grasp on what’s going on. I’d appreciate if you could deliver some of the following comments and suggestions to the appropriate person.

First I sent an email, to which yours was the reply, stating that the buyer had violated the listing terms. At this time I was relatively new to 419 scams and was under the impression that as long as the money had showed up in my account, all was good. It’s a good thing I am naturally skeptical and that I searched google for information about these scams - it was much more informative than reading the eBay support pages (particularly http://en.wikipedia.org/wiki/Advance_fee_fraud). Perhaps you could have a fairly straightforward help section titled “What to do if you believe you may be the victim of a scam”. After all, the whole reason that I didn’t notify eBay of any fraud is because I didn’t know about the possibility of this sort of scam. So I chose the next one down that made sense: violation of listing terms.

PayPal then contacted me to notify me that the payment I’d received was made with fraudulent funds. While it cautioned me to not deliver the goods or services related to those funds, it seems to me that PayPal should be able to determine what the funds were for. After all, my PayPal and eBay accounts are linked. I believe doing so would provide a more cohesive experience for the user.

Days later I received an Administrative Bid Cancellation notice regarding the item, which was, of course, a form letter and took into account neither my previous inquiry nor PayPal’s reversal of payment. I understand that machines are much cheaper than people and that it is infeasible to attach a person to every fraud case, but you should strive to make your software act with some degree of intelligence - a little effort in this area could go a long way.

Finally I received a response to my initial inquiry. This response took none of the other factors into account. It would have been very quick to look up the status of the item and see that there had been an Administrative Bid Cancellation and that, therefore, it is ill-advised to offer instructions on how to accept the bid. Again, I understand that you can’t have people spending lots of time on these things, but slightly smarter software could help a lot here.

Overall eBay has the feeling of a big company with all the good and bad that statement entails. Dealing with phishing, stolen credit cards, unauthorized bids, etc is a hard problem and I don’t envy your position. The one thing you do have under your control is your customer service, and that has lots of room for improvement. Thank you for taking the time to read this email. Feel free to contact me if you’d like any clarifications.

-bd

Having a full-time Rails job can really spur you to find out more about what’s going on in Ruby and Rails. I’ve found that I’ve learned quite a bit about what’s going on in the last month and that I’m still learning at a breakneck pace, so here goes, in no particular order:

Piston

“Vendor branch management” gem that lets you store other projects (like Rails plugins) inside your own repository while retaining the ability to update them. This is particularly useful with Rails because you don’t really want to have outbound connections fetching your svn:externals every time you do a Capistrano deploy.

All my svn:externals have been Piston-ized.

EZ-Where

A Rails plugin that allows building the ActiveRecord find options hash based on Ruby code:

Article.findwhere(:all) { |article| article.publishedat < => (from..to) }

Great for complex queries. Using this plugin in WishRadar cut about 45 lines of code that generated SQL manually into about 12 of easy-to-read ruby.

Continuous Builder

An “Official” Rails plugin to make it easy to set up continuous integration testing with email and Campfire notification support. I’ve been using this for about two weeks and it’s pretty reliable, though setting it up with a Subversion post-commit and getting migrations to run is a little tricky. My hacked continuous_builder.rb’s make method:

def make @output = cd #{@options[:application_root]} && #{@options[:bin_path]}rake db:migrate RAILS_ENV=test && #{@options[:bin_path]}rake db:migrate RAILS_ENV=development && #{@options[:bin_path]}rake #{@options[:task_name]} RAILS_ENV=test make_successful? end

To prevent Subversion from blocking when doing a commit, run scripts with STDERR redirected to STDOUT and put the process in the background:

/path/to/continuous-builder 2>&1 &

“My Rails Toolbox” Article

Wonderful list of stuff to use on a Rails site if you’re serious about going to production.

Caboo.se RDOC Documentation Project

They’ve started work on an app to make it easy to produce diffs for documentation purposes. Better Rails docs now!

FixtureScenarios

A large fixture set is very hard to manage, so a plugin to keep them in discrete ’scenarios’ making them independent and “preventing you from changing your assumptions in a dangerous way” is a great idea. Beware, though - it may not play nice with other fixture-related plugins. (in case you’re wondering, it’s better than FixtureSets)

memcached

A network-enabled memory store that basically acts like a giant hash. Good for sessions and whatever other data you need to cache in your app. See the article. Haven’t used it much but I’m looking forward to it (trying to avoid the premature optimization itch).

QueryTrace

A plugin to print a stack trace with each SQL query in your logs. This hasn’t proved invaluable yet, but I’m guessing that once we start optimizing our queries and caching, it’ll be a lifesaver.

hpricot

Fast - like C fast - forgiving HTML parsing. Yeah baby.

Rails 1.2

This will include ActiveResource, DHH’s latest code built to tackle one half of the REST web services problem, as well as some nifty enhancements to routes that will cover the other half.

RSpec

Unit testing done in a more DSLish way. Specify what should happen, and in what contexts, and you’re halfway done with your tests. Really more of a psychological helper than anything else, but that’s what good DSLs are for, right? Check it out at rubyforge. I haven’t tried this yet, but it’s on my list.

One of my biggest annoyances with Firebug was that when you are in the Inspector and wish to get an element into the console, you have to use some JS hackery in order to do it. Well, at some point this limitation was removed — or it never really existed except in my head. All you have to do is reference $1 in the console. Yay!

Well, it’s finally up. Thanks for those of you who beta tested it. You can now tell all your friends about it and how it’s changed your life etc. Cool features since the beta began are graphical tweaks, more ajaxy goodness, and (on the useful side of things) SMS integration - which just means that you can have WR tell you via text messaging on your phone that an item has reached a certain price. Also, you can find out what the price is from your phone by sending a message to WR. Cool eh?

So if you haven’t already, go sign up. I’ll wait. Really. Go now. If you find something is wrong (and there will be things wrong) email me or support at wishradar dot com. Enjoy!

I’ve found another online personality like Merlin Mann, and the results are funny. His name is Ze, or so the site says. He is, perhaps, my Fight Club alter ego since he uses a Mac, has liberal viewpoints, and had a birthday recently but, and this is where the ‘alter ego’ part really starts to matter, with the added bonus that he’s self-assured enough to broadcast himself on video doing silly things to millions of people across the globe. I am not so brave, and must restrict myself to the dry humor that flows from my head and through the keyboard, into some wires and onto your screen. That website, remember, is www.zefrank.com.

Since I do basically no form of visitor tracking on this site, I don’t know how many of you are reading this. I’m shooting for about three. So the three of you are obligated to comment on this entry and tell me who you think your Fight Club alter ego is. Doesn’t have to be someone I know about, but if you have a link to a photo or something that’d be super.

Technorati Tags: , ,

I ran across a class action lawsuit against Wikipedia today, and the letter on the front page put me into one of those moods where I just have to tell people why they’re being stupid. Here’s the letter:

Welcome!

There is a problem with the operation and functionality of Wikipedia. The basic problem is that none of the Trustees of Wikimedia Foundation, Inc., nor any of the volunteers who are connected with Wikipedia, consider themselves responsible and therefore accountable for the content.

They believe themselves to be above the law.

WikipediaClassAction.org is currently gathering complaints from the entire Internet community, including individuals, corporations, partnerships, etc., who believe that they have been defamed and or who have been or are the subject of anonymous and malicious postings to the popular online encyclopedia WikiPedia.

Alternatively, if you are aware of postings on Wikipedia that are either untrue and or potentially libellous to another, please contact them and make them aware of the offending content and this website so that they may file a complaint with our group.

Our intention and the purpose of this website is multi-fold. Specifically, we seek to achieve the following:

  • Expose the inherent faults and flaws of the Wikipedia online encyclopedia
  • Force Wikimedia Foundation Inc., through legal action, to change its current practices that permit anyone to post content to their website, without formal attribution and without recourse back to Wikimedia Foundation and or the author of the content
  • Recover substantial monetary damages, on behalf of those who have suffered as a direct result of Wikimedia’s flawed business model
  • Establish a precedent that will ensure similar websites are held responsible for their content

Recent news articles have exposed the growing problem with Wikipedia’s methods. Untrue information posted to Wikipedia, as fact, by an anonymous ‘volunteer’ (Brian Chase, 38, a resident of Nashville, TN was later exposed as the person behind the lie) suggesting that journalist John Seigenthaler had been involved in the assassinations of John and Robert Kennedy was eventually removed by Wikipedia’s co-founder Jimmy (Jimbo) Wales, but only after more than four months anguish and hard work by Seigenthaler.

If you are interested in joining in our planned lawsuit, please contact us.

Here is my response:

Hello,

I just finished reading your open letter on the home page, and wanted to address a few things that came to mind while reading it.

The style of your letter is quite inflammatory, not the fair and unbiased style you claim you would like Wikipedia to use. The guidelines posted on Wikipedia for article creation and modification point out that articles ought to be unbiased, especially on controversial issues.

You claim that the Trustees of Wikimedia Foundation and those who volunteer content do not “consider themselves responsible” and so are therefore not “accountable for the content”. I have added content to Wikipedia, and I do feel responsible and accountable for it. If I am to take your letter literally, I would have to conclude that you’ve just lied or that you would claim that I am lying now. At best your aim was to get people fired up about the situation, regardless of whether they suspend reason and rationality in doing so. The claim that “They believe themselves to be above the law” is in the same vein.

Your first aim for the lawsuit is that you wish to “expose the inherent faults and flaws of the WIkipedia online encyclopedia”. What do you believe to be the “inherent faults and flaws”? I believe it is that there is too little accountability - people ought to stand by what they say on an issue or in the article they’ve written on a scientific topic - but that doesn’t mean the system is irreparable or even legally requiring change.

Your second aim involves accountability. What measures would you have imposed to keep Wikipedia from falling prey to vandals, yet keep the anyone-is-an-author trait that has made it a great resource?

While legally speaking there may be something to your third claim, I do not know what it is. I am not extensively knowledgeable about the laws regarding libel. I like to believe that I possess common sense, however, and I believe that common sense says that seeking monetary damages in this situation is ridiculous. If my name were smeared on Wikipedia, as John Seigenthaler’s was, I’d simply edit it to reflect the truth. Why did he have to wait four months to do have someone else do this when he could have done it himself? If you are referring to a period of four months when he was not aware of it, then your letter is at best misleading and at worst an outright lie.

People who come to the site and read something like that and believe it without checking the source, or even going to the front page and seeing “Welcome to Wikipedia, the free encyclopedia that anyone can edit”, are probably not the ones you’re worried about. If you’re seeking monetary damages, you must think that a person or a business lost out on a potential customer or business deal because of it. I doubt the people who would be so gullible as to believe whatever any nice-looking website tells them are the ones conducting business deals, and I speak for myself when I say that I do not want any of them as customers.

If you wish to help improve Wikipedia’s reliability, then I believe that a lawsuit is not the best way to go about it. Make your complaints known and provide a solution or at least some discussion on the issue. If you’ve done this and received a negative response from Wikimedia, say so. This lawsuit appears to me to simply be an attempt to leech off of a successful organization and exploit its high profile for your own benefit. Am I wrong? Then tell the world why.

Brian Donovan

Much ado about nothing eh?

Technorati Tags: , ,

While I’ve yet to get a response from any of the people I contacted through Craig’s List to find an apartment in Santa Barbara, it’s only been about 30-90 minutes. Time will tell whether it’s a great idea well-executed or a great idea without a man behind the curtain. Perhaps the coolest thing about it is the RSS feed for searches.

Some of the people I contacted were of unspecified gender. If they’re female I’ve pretty much gotta rule them out (Sarah would get jealous, hehe). What percentage of my income ought to go to rent, btw? I don’t want a crappy place, but it doesn’t exactly have to be the Ritz either.

Oh, and I got a job at j2 Global. Yay me!

I read an online comic called AppleGeeks (”I think I taste QuickTime.”). One of their fans recently used a site called LuLu to print a collection of their comics. This post was originally a comment I was going to leave on the guy’s site, but turned long. Here goes:

This is an interesting topic. While Chris didn’t have any real monetary gain from this, LuLu’s did, but without the knowledge of any possible copyright infringement. Does that mean that LuLu’s is to blame because they benefitted? Does that mean that Chris is to blame for (possibly) violating copyright law and LuLu’s terms of use?

I think it’s pretty clear that LuLu’s is not to blame. Their service is viable as it is intended to be used, and holds up to the test of legality (in my mind) that many file sharing networks apparently failed.

Chris seems to have acted without the intention of harm to AG, and has since offered to do what he could to remedy the situation. That seems fair to me - all the talk of lawyers above has me somewhat nervous. Are we really so anxious to litigate in our society?

For those of you who would like to assign blame to Chris because a third party benefitted from the situation, think about this: in order for you to do anything online that could potentially violate a copyright, various ISPs (and possibly advertisers) are making money off of the traffic you bring with your activities. In this sense, any online copyright violation has the side effect that someone is profiting from it. Whether the situation changes when the third party is directly involved in the violation (as with LuLu) is yet another interesting topic.

I put together a little Ruby script adapted from a smaller script I saw somewhere on getting the balance of your Wells Fargo accounts. You can download it and use it.

You may also find the GeekTool script I put together useful. Display your account balance on your desktop, refreshed as frequently as you want!

/path/to/ruby <<"EOF"
  require '~/lib/wells_fargo.rb'
  s = WellsFargo::Session.new
  s.login 'myssn', 'mypassword'
  balance = s.extract_total(s.page.body)
  s.logout

  if balance.nil?
    puts "Could not get balance"
    File.open(File.expand_path('~/.wells_fargo_page.html'), 'w') do |f|
      f.write s.page.body
    end
  else
    puts "Wells Fargo Balance: $" + balance.to_s
  end
EOF

Next Page »