Saturday, November 29, 2008

memcached: a distributed memory object caching system

memcached: a distributed memory object caching system: "memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load."

Friday, November 28, 2008

Play! -> Another Java Web application framework

Play! -> Another Java Web application framework: "Play! is a full stack Java Web application framework including a simple stateless MVC model, objects persistence with Hibernate, a Groovy based template engine and everything you need to create a modern Web application ..."

Play!

The Play! frame work makes it easier to build Web applications with Java


Discover a clean alternative to bloated enterprise Java stacks. Play! focuses on developers productivity and targets RESTfull Architectures. Read the overview.

NINJAM - Novel Intervallic Network Jamming Architecture for Music - Main

NINJAM - Novel Intervallic Network Jamming Architecture for Music - Main:

"NINJAM is a program to allow people to make real music together via the Internet.

Every participant can hear every other participant. Each user can also tweak their personal mix to his or her liking. NINJAM is cross-platform, with clients available for Mac OS X and Windows.

NINJAM uses compressed audio which allows it to work with any instrument or combination of instruments. You can sing, play a real piano, play a real saxophone, play a real guitar with whatever effects and guitar amplifier you want, anything. If your computer can record it, then you can jam with it (as opposed to MIDI-only systems that automatically preclude any kind of natural audio collaboration1).

Since the inherent latency of the Internet prevents true realtime synchronization of the jam2, and playing with latency is weird (and often uncomfortable), NINJAM provides a solution by making latency (and the weirdness) much longer.

Latency in NINJAM is measured in measures, and that's what makes it interesting.

The NINJAM client records and streams synchronized intervals of music between participants. Just as the interval finishes recording, it begins playing on everyone else's client. So when you play through an interval, you're playing along with the previous interval of everybody else, and they're playing along with your previous interval. If this sounds pretty bizarre, it sort of is, until you get used to it, then it becomes pretty natural. In many ways, it can be more forgiving than a normal jam, because mistakes propagate differently.

Part tool, part toy, NINJAM is designed with an emphasis on musical experimentation and expression.

Some pretty good stuff (and some dreck)

NINJAM AutoSong Archive

Explaining REST

Dare Obasanjo aka Carnage4Life - Explaining REST to Damien Katz

Wednesday, November 26, 2008

Cloud Options - Amazon, Google, & Microsoft : Simpable

Cloud Options - Amazon, Google, & Microsoft : Simpable: "I have been researching various cloud offerings on and off for the last couple of months. I have primarily focused on offerings from Amazon, Google, and Microsoft.

Here is an overview and some quick opinions of what each service offers."

AWSAppEngine
Azure

Official Gmail Blog: Syncing your Google Calendar

Official Gmail Blog: Syncing your Google Calendar: "We on the Google Calendar team work hard to play well with others, so you can synchronize your calendars with a number of mobile devices and desktop applications. This way, you can choose whichever calendars you want to use and keep all of them up to date. Most of these options have been around for a while, and we're happy to announce that Google Calendar now supports the CalDAV protocol -- an evolving, open standard for calendar synchronization."

15 Beautiful High-Quality Free Fonts | Fonts | Smashing Magazine

15 Beautiful High-Quality Free Fonts | Fonts | Smashing Magazine: "Every now and again we take a look around, select “fresh” high-quality free fonts and present them to you in a brief overview. The choice is enormous, so the time you need to find them is usually the time you should be investing in your current projects. We search for them and we find them, so you don’t have to."

Aller Sans

Gmail voice and video chat

Gmail voice and video chat: 


"Chat more ways than ever from within Gmail
Look and sound your best with high quality audio and video
Get started easily -- all you need is a webcam" 

and this plugin

Tuesday, November 25, 2008

John Resig - Browser Page Load Performance

John Resig - Browser Page Load Performance

YSlow for Firebug

YSlow for Firebug: "YSlow analyzes web pages and tells you why they're slow based on the rules for high performance web sites. YSlow is a Firefox add-on integrated with the popular Firebug web development tool."

UA Profiler

UA Profiler is a tool that you can run in your browser to determine the status of a number of network-performance-specific features that tie heavily to browser page load performance.

Here's a look at the current breakdown:

Sunday, November 23, 2008

Friday, November 21, 2008

Everything is Terrible: The First Zillion is Always the Hardest

Everything is Terrible: The First Zillion is Always the Hardest: "In these tough economic times, it's important to remember how people used to lose all their money in the good old days: pointless internet companies."

ongoing � HTML5 Pain

Thus, I was delighted, on following a link from Sam’s post, to see HTML: The Markup Language by Mike Smith, which is an editor’s draft, i.e. essentially a strawman conversation-starter; it’s a nice straightforward specification of the proposed HTML5 language. I quote: “It provides the details necessary for producers of HTML content to create conformant documents. By design, it does not define related APIs nor attempt to specify how consumers of HTML content are meant to process documents.” I really like it when language specifications don’t try to pretend that they can constrain what a programmer can do with them.

Elsevier: Johnson: Gui Bloopers

Elsevier: Johnson: Gui Bloopers


UserVoice � Customer Feedback 2.0

UserVoice � Customer Feedback 2.0: "On other projects we were left frustrated and overwhelmed when trying to grasp what our users really wanted. Unorganized inboxes and clogged ticket systems ruled the day. Forums were awash with duplication, user support was impossible to determine, and valuable ideas were lost in the shuffle.
UserVoice adds structure to feedback and reduces the overhead of an honest dialog with our users — It creates a market around good ideas so we get more quality than quantity."

Monday, November 17, 2008

It's al in the beard

Why Microsoft can Blow-Off with C#?


Note to PM: 2 languages no beard. hmmm 

reglib vs jquery Demonstration

demonstration of reglib's robustness in event handling in comparison to jquery which relies on "on DOM ready" functionality and relies on tree traversal and event attachment especially after DOM manipulation has occurred.

"Let me first of all stress that I'm not trying to bust on JQuery here. JQuery does something that needs to be done, and it does it just about as well as can be done given the tool-set browsers have collectively placed at our disposal.

With that said, I'm going to go ahead and pimp the reglib way of doing things, by which I mean declarative, over the load-traverse-modify methodology, which JQuery makes so easy."

http://blogs.sun.com/greimer/entry/reglib_versus_jquery

Saturday, November 15, 2008

Gotye Hearts A Mess film clip

Gotye film clip "Animator and film clip director extraordinaire Brendan Cook has emerged from his studio with this amazing film clip for Gotye’s Hearts A Mess"

Friday, November 14, 2008

A Look at Sun.COM's New Event Delegation Library - Gregory Reimer's Weblog

A Look at Sun.COM's New Event Delegation Library - Gregory Reimer's Weblog: "We're on the brink of releasing a new JavaScript mini-library to sun.com, which we call the reg library. It provides an object named, naturally enough, reg. It stands for register. With it, you can register behaviors, like this:

reg.click('ul.foo > li > a.bar', myFunction);


Once that bit of code runs, regardless of whether the entire DOM has finished loading into the browser, click events on elements matching ul.foo > li > a.bar will be handled by myFunction, which is passed a reference to the active element and the event object. This happens without any DOM traversal, and without any events ever being attached to any elements. Even if the entire contents of document.body are subsequently overwritten by innerHTML, all those new element nodes implicitly inherit the correct behavior. No re-walking of the new DOM subtree ever occurs. No re-attachment of events ever occurs."

Projective texturing using Canvas and JavaScript

Projective texturing using Canvas and JavaScript

Perspective views are described by so-called projective transforms, which Canvas2D does not support. However, it does support arbitrary clipping masks as well as affine transforms of both entire and partial images. These can be used to do a fake projective transform: you cut up your textured surface into a bunch of smaller patches (which are almost-affine) and render each with a normal affine transform. Of course you need to place the patches just right, so as to cover any possible gaps. As long as the divisions are small enough, this looks convincingly 3D.

Drag the blue handles or change the settings to the right.

Tuesday, November 11, 2008

Tiny HTTP Proxy in Python

Tiny HTTP Proxy in Python

I wrote a tiny HTTP proxy in Python in September, 2001. It was for Python 2.1 on BeOS R5 originally, and has been working well ever since in every version of Python on almost every platform, including Mac OS X and Windows 2000/XP. I posted it to python-list on 17 June, 2003. It had been available publicly as http://mail.python.org/pipermail/python-list/2003-June/168957.html.
Now the page is gone and not found; you cannot get the code conveniently. So I write this page as its home.

Sunday, November 09, 2008

Red |

Red |
Google Groups
: "Red takes the Ruby you write and turns it into JavaScript for your browser.

The all-new Red is a Ruby-to-JavaScript transliterator backed by a custom ruby.js library designed to let your code run in the browser exactly the way Ruby would run on your machine. The JavaScript output is optimized to contain only the fraction of the ruby.js source library needed to run your code."

Saturday, November 08, 2008

Joshua Flanagan - Readable Regular Expressions

Joshua Flanagan - Readable Regular Expressions: "I was just listening to Roy Osherove talk about regular expressions on .NET Rocks. A recurring theme brought up was how hard regular expressions are to deal with. Not necessarily creating them - you can do a lot by just knowing the basics - but dealing with them after they've been written. As they mentioned on the show, your source code ends up looking like a cartoon character swearing, which is the likely response you'll get from the poor maintenance developer that has to deal with it. Regular expressions are often referred to as a 'write-only' language.

It got me thinking that this was a problem worth solving. Regular expressions are too powerful to ignore. For a certain set of problems, a regular expression can eliminate a LOT of potentially error-prone code. I cannot justify advocating avoiding regular expressions, no matter how much I value source readability. So what if we could make regular expressions readable?"

LINQ to JavaScript - Home

LINQ to JavaScript - Home: "LINQ to JavaScript (JSLINQ for short) is an implementation of LINQ to Objects implemented in JavaScript. It is built using a set of extension methods built on top of the JavaScript Array object. If you are using an Array, you can use JSLINQ.


If you don't know what LINQ is; it's a new featureset in the .NET Framework 3.5 that allows more SQL-like querying of any kind of data. In the case of LINQ to JavaScript, it provides the ability to query against Arrays.

Example Usage
var myList = [             {FirstName:"Chris",LastName:"Pearson"},             {FirstName:"Kate",LastName:"Johnson"},             {FirstName:"Josh",LastName:"Sutherland"},             {FirstName:"John",LastName:"Ronald"},             {FirstName:"Steve",LastName:"Pinkerton"}             ];              var exampleArray = From(myList).                    Where("item.FirstName == 'Chris'").                    OrderBy("item.FirstName").                    Select("item.FirstName");

Anders Nor�s' Blog : Introducing Quaere - Language integrated queryies for Java

Anders Nor�s' Blog : Introducing Quaere - Language integrated queryies for Java: "Earlier today, I unveiled the Quaere project during my talk at the JavaZone conference. Quaere is an internal domain specific language that adds a querying syntax reminiscent of SQL to Java applications. The language is modeled with basis in Microsoft’s Language Integrated Query (LINQ) project, which adds similar capabilities to a range of Microsoft .NET languages. The Quaere project allows users to use an internal DSL to filter, enumerate and create projections over a number of collections and other queryable resources using a common, expressive syntax."

LINQ: .NET Language Integrated Query

LINQ: .NET Language Integrated Query: "After two decades, the industry has reached a stable point in the evolution of object-oriented (OO) programming technologies. Programmers now take for granted features like classes, objects, and methods. In looking at the current and next generation of technologies, it has become apparent that the next big challenge in programming technology is to reduce the complexity of accessing and integrating information that is not natively defined using OO technology. The two most common sources of non-OO information are relational databases and XML.

Rather than add relational or XML-specific features to our programming languages and runtime, with the LINQ project we have taken a more general approach and are adding general-purpose query facilities to the .NET Framework that apply to all sources of information, not just relational or XML data. This facility is called .NET Language-Integrated Query (LINQ)."

Thursday, November 06, 2008

CSV Comma Separated Value File Format - How To - Creativyst - Explored,Designed,Delivered.(sm)

CSV Comma Separated Value File Format - How To - Creativyst - Explored,Designed,Delivered.(sm)

The CSV ("Comma Separated Value") file format is often used to exchange data between disparate applications. The file format, as it is used in Microsoft Excel, has become a pseudo standard throughout the industry, even among non-Microsoft platforms.

Tuesday, November 04, 2008

Sun melting down, and where's Java? | JavaWorld's Daily Brew

Sun melting down, and where's Java? | JavaWorld's Daily Brew: "Those in the Java community no doubt believe that Java is too big to fail, that Sun can't abandon it because it's too important, even if it can't tangibly be tied to anything profitable. But if Sun's investors eventually dismember the company to try to extract what value is left in it, I'm not sure where Java will fit into that plan. No doubt somebody would take over at least nominal stewardship, but we all may come to be very thankful that it's been released as open source."

Dare Obasanjo aka Carnage4Life - Windows Azure from a Developer's Perspective

Dare Obasanjo aka Carnage4Life - Windows Azure from a Developer's Perspective: "From my perspective, Windows Azure is easiest viewed as a competitor to Google App Engine. As comparisons go, Azure already brings a number of features to the table that aren't even on the Google App Engine road map. The key important feature is the ability to run background tasks instead of just being limited to writing applications that respond to Web requests. This limitation of App Engine means you can't write any application that does any serious background computation like a search engine, email service, or RSS reader on Google App Engine. So Azure can run an entire class of applications that are simply not possible on Google App Engine."


A very good introduction to Microsoft's Azure cloud platform (which is oddly named really considering that an azure sky is said to be cloudless).

Monday, November 03, 2008

Sensis concedes defeat to Google

Sensis concedes defeat to Google - theage.com.au: "From the first quarter of next year, all of Yellow's business listings - the most comprehensive directory in Australia - will be stored in Google Maps. As well, Google's search engine will power the search feature and text advertising on Sensis.com.au.

The move is being viewed as an admission by Sensis that its own WhereIs online mapping site and Sensis search engine cannot compete with Google Maps and Google search."

Turn Your Name Into a Face

Turn Your Name Into a Face

Hideous but fun.

YouTube - Intro to REST

YouTube - Intro to REST

Google's Joe Gregorio goes over the basic principles behind REST.

Sunday, November 02, 2008

Writing for Conversions

Official Google Website Optimizer Blog: Writing for Conversions


Most of the adaptations that you need to make to your writing have a single purpose: to reduce the visitor’s cognitive load. Instead of being forced to pay attention to how the information is presented, they can devote more focus to getting their intended task accomplished. By getting out of their way, you empower them to be faster, more efficient, and effective. This will lead to higher conversion rates for you, and higher satisfaction for them.

To increase the odds of a favorable outcome you need to consider the following areas of your writing:

* Structure
* Tone
* Format

Projection


Saturday, November 01, 2008

URI, XML, HTTP, REST, and the Azure Services Platform � Jon Udell

URI, XML, HTTP, REST, and the Azure Services Platform � Jon Udell: "Note also that you don’t have to use any Microsoft technologies to work with these Azure services. The demo program used LINQ, WCF, and — for the Live Mesh stuff — a wrapper library that packages the API for use by .NET software. But any technology for shredding XML and communicating over HTTP will work just fine."

Knuth: Financial Fiasco

Knuth: Recent News: "due to an unfixable security flaw in the way funds are now transferred electronically, worldwide, it is no longer safe to write personal checks"