Wednesday, September 30, 2009

Products | OpenX

Products | OpenX: "OpenX Hosted

Get ads up and running quickly
Minimize your infrastructure hardware and operational costs
Free for up to 100 million ad impressions per month (contact us for higher volumes and support options)"

Monday, September 28, 2009

Official Google Data APIs Blog: New Data API for Google Sites!

Official Google Data APIs Blog: New Data API for Google Sites!: "So what can you do with the Google Sites API? Glad you asked! The API supports most of the functionality found in Google Sites, which includes the ability to:


  • Retrieve, create, modify, and delete pages and content.
  • Upload/download attachments.
  • Review the revision history across a site.
  • Display recent user activity."

Sunday, September 27, 2009

PRESS RELEASE: 37SIGNALS VALUATION TOPS $100 BILLION AFTER BOLD VC INVESTMENT - (37signals)

PRESS RELEASE: 37SIGNALS VALUATION TOPS $100 BILLION AFTER BOLD VC INVESTMENT - (37signals)


37signals is now a $100 billion dollar company, according to a group of investors who have agreed to purchase 0.000000001% of the company in exchange for $1.

Founder Jason Fried informed his employees about the new deal at a recent company-wide meeting. The financing round was led by Yardstick Capital and Institutionalized Venture Partners.

In order to increase the value of the company, 37signals has decided to stop generating revenues. “When it comes to valuation, making money is a real obstacle. Our profitability has been a real drag on our valuation,” said Mr. Fried. “Once you have profits, it’s impossible to just make stuff up. That’s why we’re switching to a ‘freeconomics’ model. We’ll give away everything for free and let the market speculate about how much money we could make if we wanted to make money. That way, the sky’s the limit!”

Let’s Call It a Draw(ing Surface) - Dive Into HTML5

Let’s Call It a Draw(ing Surface) - Dive Into HTML5


A chapter from Mark Pilgrim's up and coming book on HTML5. The cool thing is that all of the images illustrating the canvas are actually done with a canvas.


HTML 5 defines the canvas element as “a resolution-dependent bitmap canvas which can be used for rendering graphs, game graphics, or other visual images on the fly.” A canvas is a rectangle in your page where you can use JavaScript to draw anything you want.
IE8*
IE7*
FX3.5
FX3.0
SAF4
SAF3
CHR3
OP10
✓
✓
✓
✓
✓
✓
✓
✓
* Internet Explorer support requires the third-party explorercanvas library.

Tuesday, September 22, 2009

3 Semantics, structure, and APIs of HTML documents — HTML 5

In HTML5 certain attributes are allowed on ALL elements, including script tags.

3 Semantics, structure, and APIs of HTML documents — HTML 5: "3.2.3 Global attributes

The following attributes are common to and may be specified on all HTML elements (even those not defined in this specification):

accesskey
class
contenteditable
contextmenu
dir
draggable
id
item
hidden
lang
itemprop
spellcheck
style
subject
tabindex
title"

An element's unique identifier can be used for a variety of purposes, most notably as a way to link to specific parts of a document using fragment identifiers, as a way to target an element when scripting, and as a way to style a specific element from CSS.




Google Code Blog: Gmail for Mobile HTML5 Series: Reducing Startup Latency

Google Code Blog: Gmail for Mobile HTML5 Series: Reducing Startup Latency: "To a user, the startup latency of an HTML 5 based application is critical. It is their first impression of the application's performance. If it's really slow, they might not even bother to wait for the app to load before navigating away. Even if your application is blazing fast after it loads, the user may never get the chance to experience it.

There are several aspects of an HTML 5 based application that contribute to startup latency:


1. Network time to fetch the application (JavaScript HTML)
2. JavaScript parse time
3. Code execution time to fetch the data and render the home page of your application"

Monday, September 21, 2009

Post-Medium Publishing

Post-Medium Publishing: "Now that the medium is evaporating, publishers have nothing left to sell. Some seem to think they're going to sell content—that they were always in the content business, really. But they weren't, and it's unclear whether anyone could be."

Friday, September 18, 2009

Google buys reCAPTCHA

Google buys reCAPTCHA to boost book scanning efforts - captcha, Google, Google books, mergers & acquistions - CIO: "Google plans to accelerate its massive efforts to scan tens of millions of books and periodicals with the acquisition on Wednesday of a company called reCAPTCHA.

ReCAPTCHA is a well-known provider of CAPTCHA technology, which is used to prevent spammers from using computers to automatically register for online services, such as Web mail accounts and Web site registrations."

Thursday, September 17, 2009

Trying to Improve YouTube's Favicon by Applying Subpixel Techniques

Trying to Improve YouTube's Favicon by Applying Subpixel Techniques: "


Miha at Typophile.com tried improving the readability of the YouTube favicon – that 16x16 thing sitting in places like the browser address bar – by going into subpixel improvements. The results are shown above (original to the left, new version to the right). Miha says YouTube’s current icon is “so unreadable” and adds, “If you want to be suprised: white text on red is not really white, it is purple & yellow!”

Tuesday, September 15, 2009

9 Ways Marketing Weasels Will Try to Manipulate You

9 Ways Marketing Weasels Will Try to Manipulate You: "


I recently read Predictably Irrational.

It's a fascinating examination of why human beings are wired and conditioned to react irrationally. We human beings are a selfish bunch, so it's all the more surprising to see how easily we can be manipulated to behave in ways that run counter to our own self-interest.

This isn't just a 'gee-whiz' observation; understanding how and why we behave irrationally is important. If you don't understand how these irrational behaviors are triggered, the marketing weasels will use them against you.


Monday, September 14, 2009

How Google Taught Me to Cache and Cash-In | High Scalability

How Google Taught Me to Cache and Cash-In | High Scalability



A user named Apathy in this thread on how Reddit scales some of their features, shares some advice he learned while working at Google and other major companies.
To be fair, I [Apathy] was working at Google at the time, and every job I held between 1995 and 2005 involved at least one of the largest websites on the planet. I didn't come up with any of these ideas, just watched other smart people I worked with who knew what they were doing and found (or wrote) tools that did the same things. But the theme is always the same:
  • Cache everything you can and store the rest in some sort of database (not necessarily relational and not necessarily centralized).

    How do you go about applying this strategy?

  • Cache everything that doesn't change rapidly. Most of the time you don't have to hit the database for anything other than checking whether the users' new message count has transitioned from 0 to (1 or more).

  • Cache everything--templates, user message status, the front page components--and hit the database once a minute or so to update the front page, forums, etc. This was sufficient to handle a site with a million hits a day on a couple of servers. The site was sold for $100K.

  • Cache the users' subreddits. Blow out the cache on update.

  • Cache the top links per subreddit. Blow out cache on update.

  • Combine the previous two steps to generate a menu from cached blocks.

  • Cache the last links. Blow out the cache on each outlink click.

  • Cache the user's friends. Append 3 characters to their name.

  • Cache the user's karma. Blow out on up/down vote.

  • Filter via conditional formatting, CSS, and an ajax update.

  • Decouple selection/ranking algorithm(s) from display.

  • Use Google or something like Xapian or
    http://lucene.apache.org/java/docs/index.html">Lucene for search.





  • Cache "for as long as memcached will stay up." That depends on how many instances you're running, what else is running, how stable the Python memcached hooks are, etc.




  • The golden rule of website engineering is that you don't try to enforce partial ordering simultaneously with your updates.




  • When running a search engine operate the crawler separately from the indexer.




  • Ranking scores are used as necessary from the index, usually cached for popular queries.




  • Re-rank popular subreddits or the front page once a minute. Tabulate votes and pump them through the ranker.




  • Cache the top 100 per subreddit. Then cache numbers 100-200 when someone bothers to visit the 5th page of a subreddit, etc.




  • For less-popular subreddits, you cache the results until an update comes in.




  • With enough horsepower and common sense, almost any volume of data can be managed, just not in realtime.




  • Never ever mix your reads and writes if you can help it.




  • Merge all the normalized rankings and cache the output every minute or so. This avoids thousands of queries per second just for personalization.




  • It's a lot cheaper to merge cached lists than build them from scratch. This delays the crushing read/write bottleneck at the database. But you have to write the code.




  • Layering caches is a clasisc strategy for milking your servers as much as possilbe. First look for an exact match. If that's not found, look for the components and build an exact match.




  • The majority of traffic on almost all websites comes from the default, un-logged-in front page or from random forum/comment/result pages. Make sure those are cached as much as possible.. If one or more of the components aren't found, regenerate those from the DB (now it's cached!) and proceed. Never hit the database unless you have to.




  • You (almost) always have to hit the database on writes. The key is to avoid hitting it for reads until you're forced to do so.




  • 5 Ways to Make Ajax Calls with jQuery

    5 Ways to Make Ajax Calls with jQuery: "
    There are at least five ways to make AJAX calls with the jQuery library. For beginners, however, the differences between each can be a bit confusing. In this tutorial, we’ll line them up and make a comparison. Additionally. we’ll review how to inspect these AJAX calls with Firebug as well.

    Friday, September 11, 2009

    Building Scalable Databases: Denormalization, the NoSQL Movement and Digg

    Building Scalable Databases: Denormalization, the NoSQL Movement and Digg: "
    Interesting but short summing up of current database practises in large scale internet sites


    Further Reading

    "SVG Web is a JavaScript library which provides SVG support on many browsers, including Internet Explorer, Firefox, and Safari. Using the library plus native SVG support you can instantly target ~95% of the existing installed web base.

    Once dropped in you get partial support for SVG 1.1, SVG Animation (SMIL), Fonts, Video and Audio, DOM and style scripting through JavaScript, and more in about a 60K library. Your SVG content can be embedded directly into normal HTML 5 or through the OBJECT tag. If native SVG support is already present in the browser than that is used, though you can override this and have the SVG Web toolkit handle things instead. No downloads or plugins are necessary other than Flash which is used for the actual rendering, so its very easy to use and incorporate into an existing web site.

    Tuesday, September 08, 2009

    SitePen Blog � JSON Namespacing

    SitePen Blog � JSON Namespacing

    JSON Hyper Schemas can be referenced from instances by Link headers or media type parameters. A simple example illustrates how JSON properties have universally locatable definitions:

    Content-Type: application/json; schema=http://www.book-warehouse.com/book-schema
    [
    {"title": "Oliver Twist", "price": 16.99},
    {"title": "Robinson Crusoe", "price": 15.99}
    ]

    This message gives the authoritative URI for the schema. With a look at the schema, we can see how each property has a corresponding definition with an authoritative URI as well:

    Content-Type: application/schema+json; schema=http://json-schema.org/hyper-schema
    { "properties": {
    "title": {"type": "string", "description": "The title of the book"},
    "price": {"type": "number", "description": "The price of the book in US"},
    }
    }

    Monday, September 07, 2009

    Raphaël 1.0 RC; Get your graphics on

    Raphaël 1.0 RC; Get your graphics on: "

    Raphaël uses the SVG W3C Recommendation and VML as a base for creating graphics. This means every graphical object you create is also a DOM object, so you can attach JavaScript event handlers or modify them later. Raphaël’s goal is to provide an adapter that will make drawing vector art compatible cross-browser and easy.
    Raphaël currently supports Firefox 3.0+, Safari 3.0+, Opera 9.5+ and Internet Explorer 6.0+.

    Friday, September 04, 2009

    Forms : Creating forms - Google Docs Help

    Forms : Creating forms - Google Docs Help

    This is a pretty neat feature I just became a ware of. Google Docs has a form designer and publisher

    Ravelry

    Ravelry:

    very interesting read. Short interview with the founder of this huge highly focused site which evidently has wide appeal. Going to send a link to this site around to some interested parties I know.
    "Possibly you’ve never heard of it. But if you know anyone who knits or crochets, ask him or (more likely) her about
    Ravelry and chances are you’re talkingt o an active member. It’s big. This is an interview with Casey Forbes, who constitutes the whole engineering staff."

    Wednesday, September 02, 2009

    webforms2 - Project Hosting on Google Code

    webforms2 -

    Project Hosting on Google Code
    : "A cross-browser implementation of the WHATWG Web Forms 2.0 specification. This specification is currently a mature working draft and has been adopted by the W3C HTML Working Group to serve as a starting point for the next version of HTML. This implementation will follow the HTML 5 specification that evolves from the W3C process."

    A List Apart: Articles: Inline Validation in Web Forms

    A very worthwhile article on Web form usability and validation.

    A List Apart: Articles: Inline Validation in Web Forms: "You can blame most forms’ poor etiquette on the way they’re built. Web forms that use a basic submit-and-refresh model of interactivity don’t respond until you hit the “submit” button—but it doesn’t have to be this way. Real-time inline validation can help people complete web forms more quickly and with less effort, fewer errors, and (surprise!) more satisfaction.

    To better understand the design considerations behind inline validation, I worked with Etre, a London-based usability firm, to test 22 average users on six variations of a typical web registration form. Aramys Miranda developed the form we used with our users, who ranged in age from 21 to 49.

    Of our six forms, the control version validated input only when someone clicked its “create account” button. The other five versions used different methods of inline validation. We measured success rates, error rates, completion times, satisfaction ratings, and standard eye-tracking metrics for each variation. We presented each form randomly to minimize familiarity bias."

    CSS minifier and alphabetiser – Barryvan

    CSS minifier and alphabetiser – Barryvan

    Web OS? Web VM? Value in both?

    Web OS? Web VM? Value in both?:

    In the vein of "Good Enuf", the much predicted Web OS is here.
    "In conclusion, I am bullish about the Web being called the ‘OS’ on certain computing devices. I am most excited about seeing this driving innovation into the Web platform as a whole, and also exploring the great side of having a platform run as a virtual machine on your hardware. Gotta love the Web :)"

    Tuesday, September 01, 2009

    HTML5 Super Friends Technical Details

    HTML5 Super Friends Technical Details

    Response Time Overview

    Response Time Overview


    0.1 second: Limit for users feeling that they are directly manipulating objects in the UI. For example, this is the limit from the time the user selects a column in a table until that column should highlight or otherwise give feedback that it's selected. Ideally, this would also be the response time for sorting the column - if so, users would feel that they are sorting the table.

    1 second: Limit for users feeling that they are freely navigating the command space without having to unduly wait for the computer. A delay of 0.2-1.0 seconds does mean that users notice the delay and thus feel the computer is "working" on the command, as opposed to having the command be a direct effect of the users' actions. Example: If sorting a table according to the selected column can't be done in 0.1 seconds, it certainly has to be done in 1 second, or users will feel that the UI is sluggish and will lose the sense of "flow" in performing their task. For delays of more than 1 second, indicate to the user that the computer is working on the problem, for example by changing the shape of the cursor.

    10 seconds: Limit for users keeping their attention on the task. Anything slower than 10 seconds needs a percent-done indicator as well as a clearly signposted way for the user to interrupt the operation. Assume that users will need to reorient themselves when they return to the UI after a delay of more than 10 seconds. Delays of longer than 10 seconds are only acceptable during natural breaks in the user's work, for example when switching tasks.

    The Good Enough Revolution

    The Good Enough Revolution: When Cheap and Simple Is Just Fine: "The attributes that now matter most all fall under the rubric of accessibility. Thanks to the speed and connectivity of the digital age, we've stopped fussing over pixel counts, sample rates, and feature lists. Instead, we're now focused on three things: ease of use, continuous availability, and low price."