Latest Acid3 Results (Microsoft Be Concerned)

Today marks the release of Firefox 3.5, an exciting update to what is arguably the best browser on the market.  Since this is a release that focuses on new and emerging web technologies, I thought it’d be an opportune time for a quick checkpoint (via the Acid3 test) on the latest and greatest from each of the camps in the browser wars.

As you can see, Firefox, Chrome, and Safari have a commanding, or rather, an embarrassingly distant lead over Internet Explorer 8, which scores a paltry 21/100.  Once again we ask: Microsft, where exactly are you getting your “facts” from?

Firefox 3.5: Acid3 Score 93/100

acid3Test_ff3.5

Safari 4: Acid3 Score 100/100

acid3Test_safari4

Chrome 2: Acid3 Score: 100/100

acid3Test_chrome2

Internet Explorer 8: Acid3 Score: 20/100

acid3Test_ie8

[Post to Twitter] Tweet This  [Post to Yahoo Buzz] Buzz This  [Post to Digg] Digg This 

Adobe Beats Microsoft To The Punch: Acrobat.com Presentations

acrobatPresentations_small

Adobe has announced the release of Acrobat.com Presentations, a Flash-based presentation application. This looks to be a capable, albeit average presentation tool. Although they beat Microsoft to the cloud with a presentation solution, I wouldn’t go so far as to say it’s best of breed. When you stack it up against the likes of third party solutions like SlideRocket, it doesn’t even come close.

This wouldn’t be the first time Adobe’s pushed out a solution that falls short of what third parties are doing with the same technology/platform. Take Photoshop.com, for example. When compared to Aviary, the differences comprise a rather wide chasm. In the case of Photoshop.com, I’ll give Adobe a little slack, since the target audience is distinctly more consumer-oriented and it wasn’t marketed as a pro design solution. Nevertheless, why couldn’t they have released a basic AND pro version?

The days of the big dogs dragging their feet are coming to a conclusion. Releases like Acrobat.com Presentations will be met with little to no fanfare, particularly when the little guys are releasing great things utilizing the same technology. Of course the likes of Adobe and Microsoft can, and likely will, assimilate these little guys and their technology, as is typically the case. But it’s a bit embarrassing for them when they don’t exercise the foresight to do the acquisition before releasing a product.

[Post to Twitter] Tweet This  [Post to Yahoo Buzz] Buzz This  [Post to Digg] Digg This 

Get Inspired At The MoCCA Festival

Earlier this month, the MoCCA Festival took place at the 69th Regiment Armory in NYC. I was introduced to the event by my girlfriend, who was exhibiting a selection of her incredible work at the show. Although I’ve visited the museum a few times, I was really unaware of what the MoCCA Festival is all about. When I stepped into the cavernous chamber of the Armory, it became clear.

The festival is a fantastically diverse showcase of art, storytelling, and imagination. When walking down the aisles it’s as though roaming through a landscape of dreams and nightmares rendered with ink on paper for posterity. From the blithe, to the surreal, to the sagacious, and twisted, the work on display delivers a mesmerizing experience. There’s nothing like being surrounded by such a mengagerie of imagery and ideas to spark one’s own creativity.

Check out the MoCCA site if you’re interested in visiting the museum or learning about the festival and the numerous other events they host.

For deeper coverage on this year’s event, Publisher’s Weekly has a nice write-up.

[Post to Twitter] Tweet This  [Post to Yahoo Buzz] Buzz This  [Post to Digg] Digg This 

Roll Your Own IDE

notepad++_codeView

Whether taking a quick note on a random task or idea, or banging out a chunk of markup for an enterprise-scale application, I often find myself relying on Notepad++ as a quick and easy way to capture stuff.  For braindumps, nothing beats it.  For those not already familiar with Notepad++, you can get more info here.

When it comes to utilizing Notepad++ as a full-fledged solution for web development, it falls short of IDEs such as Dreamweaver, Visual Studio, or Eclipse.  Each of these applications contain a host of powerful functions, utilities, and file/asset management resources that are not native to Notepad++.

For the freelancers of the world, small dev/design shops, or even established teams within larger organizations, the cost of upgrading or purchasing licenses may simply be too high.

On the other hand licensing may not be the issue at all, particularly with Eclipse.  Instead, performance, configuration, or memory-consumption headaches may be what plagues your team.  Now, before a flame war ensues on the merits of Eclipse, let me just clarify that I’m a big fan of the platform.  But, I do know I’m not the only one who’s encountered their fair share of headaches trying to get plugins (Subclipse, I’m talking to you) to behave reliably, particularly on team projects where synchronization is essential.  This also certainly isn’t to say that Dreamweaver and VS are free of such issues.

If you’re looking for a lightweight IDE that is fast, functional, and free, then rolling your own with Notepad++ might be just the solution you need.  In the following steps, I’m going to show you how to re-purpose this great little app as a self-contained IDE capable of tackling the most demanding projects.

Step 1: Download and Install

To get started, let’s first download and install all of the things you’re going to need.  I won’t go into the details of setting up a subversion server in this post since there’s plenty of documentation out there on the subject.  But if you encounter any major hurdles with it, feel free to leave a comment and I’ll see if I can answer your questions.  So, let’s get everything downloaded and installed:

Once you’ve got everything downloaded and installed,the next step is to create a repository for your project files.  Once you’ve done you’re initial commit and your project is running happily in subversion, you’re ready to start tweaking Notepad++.

Step 2: Configure Notepad++ Settings

Enable Auto-complete

There are a few adjustments you can make to get Notepad++ to behave more like the big commercial IDEs.  The first is to enable Notepad++’s auto-complete (aka IntelliSense).  Go to: Settings -> Preference… -> Backup/Auto-completion.  Check the option Enable Auto-completion on each input and make sure the radio option is set to Function completion.  Now, when you begin typing in markup, you’ll be greeted with a convenient auto-complete menu to speed things up.

Adjust Language Support (optional)

Although Notepad++ supports a LOT of languages, some developers may find it necessary to make some adjustments to the syntax highlighting in order to accommodate languages not natively supported.  For example, if you open a .Net-based ASPX or ASCX file, or a file in Adobe Flex’s MXML format, you’re not going to get syntax highlighting.  No worries, we’re going to fix that right now.

What you’ll want to do is open C:\Program Files\Notepad++\langs.xml.  The langs.xml file is where all the syntactial magic happens.

The easiest (although not totally 100% perfect) method to get Notepad++ to play with your language is to find a language that’s similar to the one you need support for.  For example, I work with ASPX files quite a bit, but most of the elements within those ASPX files are straight up HTML.  So, all I have to do is scroll down in Langs.xml and find <Language name=”html”></Language>.  In the ext param, add the extensions you want to support.  In this case, I’d add aspx and ascx (e.g. ext=”html htm dhtml xhtml shtml ascx aspx”).  Save Langs.xml and re-open any of your ASPX or ASCX files Notepad++.  You’ll be pleased to see syntax highlighting working as expected.

There are instances where this quick-and-dirty approach won’t quite work because a language simply has too many unique tags/rules/etc.  In this case you’ll want to create your own language definition in the Langs.xml.  But that’s for another post.

Step 3: Configure Notepad++ Workspace

Now that we’ve got the core settings taken care of, the last thing remaining is to adjust the workspace.  First, go up to Plugins -> Explorer -> Explorer.  This will pop up a pane that enables you to browse your local file directories without having to leave Notepad++.  Next, go up to Plugins -> FTP_synchronize -> Show FTP Folders.  This will add a tab in your file explorer view for FTP connections.  Enter your FTP login details and you can then transfer files directly to/from your web server via Notepad++.

Step 4: Get To Work!

Now it’s time to get coding.  But, you’re probably wondering about the other two things you installed (Tortoise SVN and the Compare plugin).  Now is the time they come into play.

As you begin creating and editing files in your project, Tortoise enables you to commit changes to your subversion repository, roll back changes, branch, merge, so on and so forth.  The cool part is, now that you’ve got your file explorer displaying in Notepad++, you have access to all of the Tortoise menus directly in Notepad++ as well.  Simply right-click on any file and you’ll get the Tortoise source control menu options.

Finally, the compare plugin will come in handy when you need to compare versions of a file.  Whether it’s comparing a working copy against a repository copy, or duplicate files in a local folder, the compare plugin is pretty adept at displaying differences.

That’s it!  Everything’s configured and you have yourself a shiny new IDE.  And best of all, it’s totally free.

[Post to Twitter] Tweet This  [Post to Yahoo Buzz] Buzz This  [Post to Digg] Digg This 

NY Tech Meetup – June 09 Recap: Part 2

So far we’ve looked at UpNext, Centrl, and NYSenate.gov in the June recap of NY Tech Meetup. In part 2 we’ll be looking at LiveStream, MakerBot, Mahalo, Aviary, and the Personal Democracy Forum.

LiveStream

livestream-2livestream-3

Once they hit the stage it was apparent LiveStream was a different kind of animal when it comes to live video and online broadcasting. There are a few notable players providing realtime streaming video services such as USTREAM.tv and Qik (mobile-only), but these services are comparatively pretty bare-bones: shoot a video, post a video, done. A bit utilitarian, but they do the job. Where LiveStream shines is in the robust editing capabilities and flexibility available to content creators and editors.

The first thing I noticed about a LiveStream feed was the impressively low latency. As they began broadcasting the presentation, they were simultaneously displaying the live feed on a second screen, stage left. The lag was perhaps a few seconds, at most. The feed was being delivered via their desktop client dubbed, Procaster. So what’s Procaster?

Procaster is a Windows app (Mac version coming soon) which provides a set of tools that allow you to combine a live stream simultaneously with a screencast of your desktop. The controls consist of a thumb view of your broadcast, a playback clock displaying connection speed and frame rate, 2D & 3D PiP options, and zoom controls for zooming into a specific area of a page. Procaster is an intuitive app and the camera-to-screen swapping is seamless.

On the LiveStream site broadcasters have access to a pretty robust editing suite called the “Studio”. There are a range of options for creating storyboards, managing your video assets, integrating twitter feeds, creating custom effects like lower thirds and corner bugs, cueing videos for a broadcast, and more.

There were a fewy quirky things about the Studio which took me a minute to figure out. First off, it’s all in Flash, and if you navigate around the tabs and options and click your browser’s back button you’ll be thrown out to your main account profile. That’s a bit jarring, and there are methods to support browser Back/Forward buttons functionality in Flash applications. I think it’d be time well-invested for them to support this.

Another thing that’s a bit strange are the UI controls. Don’t get me wrong, I’m all for challenging the status quo on UI conventions, but some of the form controls just don’t feel right. Take the “Channel Page Layout” option in the Channel Configuration tab. It’s essentially a radio control with the options of “Big Screen” and “Normal”. But instead of a standard radio button they use this weird slider control that implies you can select varying levels of “Big Screen” or “Normal”. These aren’t huge issues, mind you. This is about as good as live streaming gets right now, and I’m merely pointing out areas that might benefit from a little usability testing.

LiveStream offers free and pro versions of the service. The pro version gives you the ability to broadcast in widescreen HD, bypass ads or create your own, white label the product, access analytics on your broadcasts, and create private channels.

MakerBot

makerbot-1makerbot-2

What is a MakerBot? As the name would imply, it’s a friggin robot that makes stuff! That’s right, this demo consisted of showcasing a CNC device that uses a method known as “automated plastic extrusion” to fabricate objects out of ABS and HDPE plastics.

Unlike the other “rapid prototyping” solutions out there, MakerBot Industries has taken a totally different approach to this niche market. Rather then selling a customer the service of printing their 3D models (e.g. Shapeways.com), MakerBot Inudstries is selling the actual device to print the models. When you consider that the most affordable 3D printers easily skyrocket into the price range of tens of thousands of dollars, MakerBot is a steal at $750. Not to mention, it’s a tinkerer’s wet dream. Based on open source software and built with easily-upgradeable and replacable components, MakerBot is “built to be hacked” – and it looks the part.

Watching this demo made me feel like a kid again. As they booted up the device, it went through a series of chirps, whirs, and beeps that would make Robert Moog green with envy. The guys at LiveStream assisted in the demo by streaming this funny little machine to the secondary screen on stage. Unfortunately, the demo hit a bit of a snag when a stray widget fell into the MakerBot’s inner workings and brought the demo to a premature conclusion.

Regardless of technical hiccups, this was an inspiring demo. MakerBot represents more than just the novelty of creating a widget or figurine. MakerBot Industries is empowering anyone with some imagination and creativity to do what has only been in the realm of commercial manufacturers for decades. If you can think it, MakerBot can build it – or at least a scale replica of it. Currently this is called rapid prototyping, but it doesn’t take too much effort to drift off in daydreams of Star Trek’s replicator. When you’re witnessing a machine that can simultaneously produce a replacement widget for your lawnmower AND frost a cupcake, you know you’re seeing something special.

I haven’t actually been able to test a MakerBot because, unfortunately, my robot fund is running a little low in these hard economic times. Oh well, it’s sold out anyways. Hopefully the warehouse at MakerBot Industries is outfitted with enough MakerBots to fulfill the demand for more MakerBots.

You can check out some of the creations people have already made at MakerBot’s sister site, Thingiverse.com.

Mahalo

mahalo-1mahalo-2

In its second incarnation, Mahalo defines itself as a “human-powered search engine built collaboratively by a team of editors and a community of dedicated users.” The idea is that, rather than relying on software algorithms to dredge up the information you’re looking for (ala Google or Bing), users have access to the collective knowledge of crowdsourcing to find the answers they’re looking for.

The whole system is based on incentivizing the Mahalo community to deliver reliable information in return for cold, hard cash. Content managers accrue what’s called “Mahalo Dollars”. A Mahalo Dollar is worth $.75. It seems the dollar is weak even in Mahalo land.

There are a series of parameters for providing information and rating information provided by others. The higher your rating, the more content you’re able to manage and contribute to and, theoretically, the more money you make. For a complete breakdown of the content management and payment structure of the system, click here.

When conducting a search users are prompted to complete a few brief questions on what the content of their search pertained to. This helps the system “learn” about the content being searched for. Mahalo’s approach to delivering search results is to go deep rather than wide. Instead of competing against the Googles and Bings of the world in sheer volume of search results, Mahalo’s strategy is to offer more quality content up front on a given subject. The idea is that a human being has the ability to connect more of the abstract concepts and points of interest on a subject than a search algorithm is capable of.

In my brief tests with Mahalo, I found the results to be pretty decent. Most searches deliver a nice blend of direct links, images, videos, social network content (Twitter & blog results), and related pages. The problem I had with the whole experience is the presentation of the result set. It feels like one long, continuous text ad; in other words, something I’d ordinarily ignore. Not to mention they intersperse the result set with actual banner ads – by Google nonetheless. Having been diagnosed as legally ad-blind about five years back, I find the pseudo-text-ad feel of Mahalo search results challenging to view.

There’s a certain search engine’y feel that’s missing from Mahalo results. Although this may seem trivial, and one might argue that Google’s UI is incredibly basic and unadorned, it’s not a small issue. The quality of the content may be fantastic, but if the UI feels even a little askew, then the people that made “google” an official entry in Webster’s Dictionary aren’t going to be “Mahaloing” with nearly the same fervor anytime soon.

Mahalo’s method for delivering search results is much more organic to be sure, but will the humans beat the machines in the race for supreme search glory? Whatever the outcome, it’ll be interesting to watch it all unfold.

Aviary

Aviary is a name I’m sure many are already familiar with. Awesome stuff… I won’t go into too much detail since I’ve got a video, albeit grainy, covering the presentation.

[Post to Twitter] Tweet This  [Post to Yahoo Buzz] Buzz This  [Post to Digg] Digg This 

NY Tech Meetup – June 09 Recap: Part 1

This month’s NY Tech Meetup drew a record audience that filled FIT’s Haft Auditorium. So much cool stuff was showcased, that I’m not going to go too far in-depth here. Nevertheless, I’m breaking this out into two parts to keep things a little more manageable and readable. For full video coverage, click here.

It was also Internet Week here in NYC, and if you haven’t checked it out yet, make sure you do next year. It’s a great event.

UpNext

upnext-1upnext-2

UpNext is an incredibly cool mapping and search application. It’s perhaps better described as a virtual rendition of the real world. One of my favorite features is the ability to click on any building in the 3D interface and get a listing of the businesses at that location.

In my brief test for accuracy, it did come up a bit short however. When I searched for my company, Mimeo, I was presented with two results. The first result was telling me my office is on 12 W 27th Street in New York. The second result dropped me onto 460 Park Avenue.

The actual address for Mimeo is 460 Park Avenue South. That may not seem like a big difference, but when you’re dealing with a city like New York, the difference (see map below) is about 1.5 miles and 26 streets. If I was on foot and relying on UpNext to find Mimeo, I’d be a tad annoyed by the time I hit 57th and realized I should be on 31st.
View Larger Map

When I searched by Mimeo’s actual address UpNext found the correct building. But when I clicked the building for a list of the businesses inside, Mimeo wasn’t there.

So, yeah, it needs some polish, but the core application is really impressive. With some updates to their business directory, and with the addition of a feature enabling users to add/update/correct information, I think UpNext could be something great. I’m really looking forward to seeing how they evolve this app.

The application runs on Java and is currently only covering the Manhattan area. There is a mobile version available for iPhone users.

UPDATE: Danny Moon, co-founder of UpNext, reached out to let me know they’ve already corrected the issue I described in this post. So on top of having a cool product, they’re highly responsive to customer feedback. Thanks for the update, Danny.

Centrl

centrl-1centrl-2

You can imagine that UpNext would be a hard act to follow. That’s especially true when you plan on demoing another maps-based application, and one that’s merely 2D.

Enter Centrl, a location-based social networking service designed to help users find and connect with friends based on their location. The system helps you identify where friends in your network(s) are, share favorite locales, and discover new people and places.

Centrl also features “coupons” which are essentially deals happening in and around your general vicinity. You can redeem a coupon by displaying it from your mobile device when you reach the participating vendor.

The integration of these coupons into the over-arching social networking theme seemed a bit cumbersome. It left me with kind of a square-peg-in-a-round-hole feeling. Perhaps it’s a hint at a more transaction-focused service that capitalizes on the network. Right now, it still feels disjointed.

One of the problems I found with this demo was that the majority of it was a cutesy PowerPoint presentation. It had its novel ha-ha moments, but it rambled on about generic “Web 2.0″ cultural stuff that really had nothing to do with the application or service. It was more effective at reinforcing exactly why NY Tech Meetup prohibits PowerPoint presentations. I wonder how these guys got away with it.

The unfortunate byproduct of the lengthy PowerPoint presentation was that Centrl had precious little time to paint a compelling picture of their application. The demo was short and failed to deliver a cohesive vision of the product.

The Centrl service runs on the iPhone, Blackberry, and Android devices. Their site claims to support integration with Facebook, Twitter, MySpace, Hi5, Ning, Orkut, Bebo, and Friendster.

Centrl is worth keeping an eye on. There are some interesting ideas floating around there, but they need to congeal more.

NYSenate.gov

nysenategov-1nysenategov-2

Ordinarily, “progressive” isn’t a term you’d associate with the online presence of a state or federal body of government. That’s all changed. At this month’s Meetup, the NYS Senate demonstrated what governmental websites can and should be.

Taking a note from the considerable changes Obama has already spearheaded on the web, Andrew Hoppin, newly-appointed NYS Senate CIO, is delivering to the public an engaging platform for political participation. The focus is on transparency and communication to provide citizens with a forum for sharing ideas and getting more involved in legislation.

The revamp to the NY Senate website and the underlying infrastructure was no small initiative. Mr. Hoppin and his colleague detailed an array of fundamental shifts in technology and culture they had to achieve in order for the redesign to be successful. They scrapped all legacy hardware (internal, under-powered web servers) and software (LotusNotes, a command line CRM, etc.) and architected an entirely new solution utilizing open source technologies and popular social networks. The outcome is a website with a wealth of information and media, a website that encourages communication and collaboration, a website that is, dare I say, fun!

Below are some of the more interesting aspects of the NYS Senate site. I encourage you to visit and explore all of the features and services for yourself, particularly if you’re a resident of New York State.

Find My Senator – A complete index of NYS senators. Each senator has a dedicated site with announcements, a calendar of events, legislation information, photos, videos, and contact information. On top of that, the majority of senators also provide Twitter and Facebook info. That’s pretty damn cool…

Your Ideas – A section of the site dedicated to providing the public with a means of sharing ideas directly with legislators and participating in decision-making. According to the site:

@NYSenate asks YOU to share your ideas on how New York State can be better using Crowdsourcing.

Crowdsourcing tools leverage the “wisdom of crowds.” By creating a forum where large numbers of people can submit ideas and vote on them, a crowdsourcing application can gather new ideas from beyond the walls of the Capitol to make the Senate a more effective lawmaking body. Crowdsourcing will be used by the Senate’s Policy group to tap into the public to generate ideas and feedback on certain legislation. By doing so, the Senate will encourage citizen participation in the legislative process.

Be it Property Taxes, Ethics Reform or Campaign Finance the New York Senate wants to hear what YOU have to say. Share you ideas on Crowdsourcing “portals” below.

The main subjects you can participate in are:

  • Campaign Finance Reform
  • Property Taxes
  • Ethics Reform

NY Markup “Legislation Markup allows the public to comment on legislation that is under consideration. It is the virtual version of a session where legislative committees amend bill texts similar to the Federal site, www.publicmarkup.org.”

NY State Senate Blog – The blog appears to be a “catch-all” for the general happenings of the NYS Senate. Looks informative, but I find it odd they don’t provide an RSS feed. Hmmm, think I might have to tweet our new CIO on that one.

Live Senate Videos – This looks to be a pretty exhaustive index of video content. And some of the video looks pretty exhausting to watch. I’m certainly not complaining – it’s awesome that it’s there. From the mundane and tedious to the fascinating, enraging, and exciting, this archive thoroughly captures our governemnt at work.

Open Data Project – This project is a multi-part effort to increase transparency within the NYS Senate. The Plain Language Initiative simplifies legal and governmental jargon into laymen’s terms. The Open Data effort will provide the public with data in formats that are easy to download and manipulate and “empower independent people and organizations to do their own research and analysis.”

A couple other interesting tidbits I noticed about the site:

  • Running jQuery (1.2.6)
  • Designed for current Class A browsers, and only deprecated support (alternate theme/CSS) for IE6. Yay.
  • The site is at least partially running on Drupal CMS.

To Be Continued…

This wraps up the first half of the NY Tech Meetup June 09 Recap. Check back soon for Part 2.

[Post to Twitter] Tweet This  [Post to Yahoo Buzz] Buzz This  [Post to Digg] Digg This 

Quick Tip: Make Flash Play Nice With The DOM

Ever been working on a web application or site and encountered the nasty little issue of Flash floating over everything else?  No matter what you do to your markup or CSS, the Flash object just keeps appearing above everything in the page.  Forget about tweaking position properties or z-index values, it just won’t work.

The problem is often visible in blogs that embed YouTube videos and other Flash content.  Case in point, this recent post on TechCrunch.  When you mouse over any of the text links which spawn popup windows, you’ll notice the popups load under the embedded Flash video.  Very annoying.

So what’s the fix?  It’s really simple.  When embedding a Flash object, you have to add a “wmode” parameter.  After that, everything will work like a charm.

Let’s take a look at the source for the video which was embedded in the TechCrunch article.  Here’s what it looks like:

<object width="480" height="385">
  <param name="movie" value="http://www.youtube.com/v/IsV-lgnAjps&#038;hl=en&#038;fs=1&#038;"></param>
  <param name="allowFullScreen" value="true"></param>
  <param name="allowscriptaccess" value="always"></param>
  <embed src="http://www.youtube.com/v/IsV-lgnAjps&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed>
</object

The video will display fine with this code.  But when you want another element to appear above the Flash content, you’ll discover that it looks something like this:

screen_techcrunchmodalbroken

Add the wmode parameter and things begin to shape up.  Please note – you have to set wmode in TWO places; you have to add a new <param> tag and you also need to enter a wmode value in the <embed> tag.  The revised source with wmode set looks like this:

<object width="480" height="385">
  <param name="movie" value="http://www.youtube.com/v/IsV-lgnAjps&#038;hl=en&#038;fs=1&#038;"></param>
  <param name="allowFullScreen" value="true"></param>
  <param name="allowscriptaccess" value="always"></param>
  <param name="wmode" value="opaque"></param>
  <embed src="http://www.youtube.com/v/IsV-lgnAjps&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="480" height="385"></embed>
</object>

…and the output looks like this:

screen_techcrunchmodalfixed

As for why a popular tech site is pimping online dating profiles and free phones when they have absolutely nothing to do with the subject at hand, I’ll save that for another article on the problems plaguing online ad models.

[Post to Twitter] Tweet This  [Post to Yahoo Buzz] Buzz This  [Post to Digg] Digg This 

Archives