Sunday, November 01, 2009

An introduction to HTML5

An introduction to HTML5: "
Another good intro into what HTML5 is... and isn't.

Saturday, October 31, 2009

INSIGHT: UI that looked sexy in Photoshop almost always

INSIGHT: UI that looked sexy in Photoshop almost always: "

UI that looked sexy in Photoshop almost always looks overdesigned when we try it for real in the browser. Here’s a hypothesis. Simple and useful designs just don’t seem good enough when they are dead pixels. They need to be brought to life before they can be appreciated. Until that happens we overcompensate with garnish.



"

Friday, October 30, 2009

try ruby! (in your browser)

try ruby! (in your browser): "Got 15 minutes? Give Ruby a shot right now!
Ruby is a programming language from Japan (available at ruby-lang.org) which is revolutionizing the web. The beauty of Ruby is found in its balance between simplicity and power.

Try out Ruby code in the prompt above. In addition to Ruby's builtin methods, the following commands are available:"

ooc

ooc: "ooc is a modern, object-oriented, functional-ish, high-level, low-level, sexy programming language. it's translated to pure C with a source-to-source compiler. it strives to be powerful, modular, extensible, portable, yet simple and fast."

Facebook Seattle Engineering Road Show: Mike Shroepfer on Engineering at Scale at Facebook

Interesting discussion by Microsoft's Dare Obasanjo about Facebook's architecture which services 200+ million users.

There are three key mantras that describe Facebook’s engineering culture

  1. Move Fast and Break Things – The company encourages people to take risks and innovate
    even at the risk of jeopardizing the stability of the site. It is important to them
    to not become risk averse because this is often the downfall of companies as they
    grow.

  2. Huge Impact with Small Teams – Most features and underlying systems on the site are
    built by teams of one to three people. They have a metric of users per developers
    that they are particularly proud. They claim that at Facebook they have 1 developer
    for every 1.2 million users which is better than most industry leaders including Google
    (1 developer per 190,000 users), Amazon (1 developer per 96,000 users) and Microsoft
    (1 developer per 75,000). [Ed. Note – not to be defensive but this metric seems
    weird to me and it wasn’t clear how it is calculated.
    ]

  3. Be Bold and Innovative – self explanatory

How FriendFeed uses MySQL to store schema-less data - Bret Taylor's blog

How FriendFeed uses MySQL to store schema-less data - Bret Taylor's blog

Underscore.js

Underscore.js: "Underscore is a utility-belt library for JavaScript that provides a lot of the functional programming support that you would expect in Prototype.js (or Ruby), but without extending any of the built-in JavaScript objects. It's the tie to go along with jQuery's tux."

raw.jpg (1323�1486)

Internet speeds and costs around the world (click to enlarge)

Thursday, October 22, 2009

Case-Hardened Web Badges: the Live Version - kentbrewster.com

Case-Hardened Web Badges: the Live Version - kentbrewster.com
Today's Plan
Build a script that:

  • uses modern DOM methods 
  • is firewalled from the rest of the page as much as possible 
  • requires nothing more than a single line of JavaScript 
  • creates structure, presentation, and behavior layers 
  • securely passes configuration variables from the page, if needed 
  • queries an outside Web service and displays the results 
  • allows further interaction with those results, without re-drawing the page 
  • works and plays nicely with other scripts, including multiple copies of itself 
  • runs right here, right now, on your laptop 
Break out your editors, because it's time to copy and paste!

Wednesday, October 21, 2009

HTML now works

I've fixed the editor to allow entry of < and > without buggering itself up

Let's make the web faster - Google Code


type attributes

Another thing that works in HTML 5 – today – is that you can leave out all the type attributes related to MIME types. These are the attributes such as type="text/css"or type="text/javascript", which describe the type of contents the element in question contains or links to.

Instead of <style type="text/css"> you can just write <style>; instead of writing <script type="text/javascript">, you can just use <script>. You can omit type="text/css" in almost all document types actually, even in XHTML, but HTML 5 makes all this even simpler since consistent.


Thursday, October 15, 2009

Icons Set Licensed Under Creative Commons

Icons Set Licensed Under Creative Commons: "



FatCow offers a nice, CC-licensed icons set for you, with 1000 images in 16x16/ 32x32. These should come in handy if you’re creating an app. I reordered the files a bit as they were in many different numbered folders in the original zip.
[Via Reddit. Reordered zip is CC.]
[By Philipp Lenssen | Origin: Icons Set Licensed Under Creative Commons | Comments]

[Advertisement] Google books at eBay: background info on Google, AdWords, AdSense, Blogger and more..."

jQuery.sheet - My = new Object();

jQuery.sheet - My = new Object();: "What is jQuery.sheet?
jQuery.sheet gives you all sorts of possibilities when it comes to giving your web application a spreadsheet style interface with MS Excel style calculations."

Sunday, October 11, 2009

Modernizr

Modernizr: "What is Modernizr?

Have you ever wanted to do if-statements in your CSS for the availability of cool features like border-radius? Well, with Modernizr you can accomplish just that! The syntax is very intuitive, too:

.multiplebgs div p {
/* properties for browsers that
support multiple backgrounds */
}
.no-multiplebgs div p {
/* optional fallback properties
for browsers that don't */
}"

Tuesday, October 06, 2009

jqGrid Demos

jqGrid Demos

Monday, October 05, 2009

InfoQ: Persistent Data Structures and Managed References

Video Persistent Data Structures and Managed References


Interesting discussion about concurrent programming. Rich Hickey (who is the author of Clojure, a concurrent functional programming language for the JVM) gives a presentation organized around a number of programming concepts: identity, state and values. He explains how to represent composite objects as values and how to deal with change and state, as it is implemented in Clojure.

Thursday, October 01, 2009

Telstra dumps Trading Post newspaper edition for online

Telstra dumps Trading Post newspaper edition for online: "Telstra confirmed yesterday that the publication, which is owned by the telecommunications company's Sensis division, would be published solely online from the end of this month."

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.