Thursday, August 23, 2012

Code Explorer (Packaged) App

Turn Source Quicklinks into a packaged app. It can use <browser> to embed the Chromium code search and have a custom toolbar that allows switching to SVN history, blame, etc. It can also log recently pulled up docs in a sidebar, support looking up files by name.

Wednesday, July 18, 2012

Credit card reader Chrome extension

The Square card reader converts the magnetic stripe on a credit card to audio. Using the getUserMedia() API from WebRTC, it should be possible to get at that audio data (via WebAudio). mslib is a library for decoding this magnetic stripe data (blog posts with more details). It could be incorporate via NaCl. Rhombus is another project that does this (albeit Java-based).

One possible application is in a Chrome extension that implements payment form filling out by swiping a card.

Saturday, June 16, 2012

Atop

Atop is an ASCII full-screen performance monitor that is capable of reporting the activity of all processes (even if processes have finished during the interval), daily logging of system and process activity for long-term analysis, highlighting overloaded system resources by using colors, etc. At regular intervals, it shows system-level activity related to the CPU, memory, swap, disks, and network layers, and for every active process it shows the CPU utilization, the memory growth, priority, username, state, and exit code.

Saturday, June 2, 2012

What are some time-saving tips that every Linux user should know? - Quora

What are some time-saving tips that every Linux user should know?

Thursday, May 24, 2012

Git BBEdit Package

A BBEdit package to make working with Git easier.

Foundation Icons Fonts

Custom icon sets that are stored in a handy web font.

Friday, May 18, 2012

Monday, May 7, 2012

Mosh

Remote terminal application that allows roaming, supports intermittent connectivity, and provides intelligent local echo and line editing of user keystrokes.


Mosh is a replacement for SSH. It's more robust and responsive, especially over Wi-Fi, cellular, and long-distance links.

Friday, April 27, 2012

Lights Out

iPhone app that lets you put nearby Macs to sleep (discovery can be handled via Bonjour). Unlike iShutdown or Control!, it shouldn't require installing a special daemon on the Mac that's to be controlled. iSleep claims to do this via Remote Login (i.e. ssh), but the reviews seem mixed. If remote Apple events are still possible, then it should be feasible via that. If not (or as an alternative), whatever mechanism Apple Remote Desktop uses could be used here too.

Monday, April 23, 2012

apt-file and finding Ubuntu packages

apt-file can find which packages include a specific file. Ubuntu Packages Search also provides a web UI.

Thursday, April 19, 2012

Freeze inactive background Chrome tabs

In the vein of the Firefox extension Dormancy, build a Chrome extension that frees up resources used by background tabs that haven't been accessed in a while. Using the chrome.tabs.onUpdated event, an LRU list could be maintained. Inactive tabs would have a screenshot taken via chrome.tabs.captureVisibleTab, and the tab would then be navigated to a chrome-extension:// URL that shows that screenshot (thus making all inactive tabs live in the extension's process, instead of separate renderer ones). When the tab is re-selected, history.back() could be used to back to the live page (by using history traversal, form/scroll position restore is invoked, retaining as much of the state as possible).

Optionally, there could be a browser action that displays the total/live/frozen tab count, in the same way that Tab Count does.

Wednesday, April 11, 2012

Derby

MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers.

Monday, March 12, 2012

Pretty-print inline diffs in emails

Rietveld (and presumably other code review tools) inline diffs in emails. Even if they don't, they generally have a URL that points at the review. A Gmail gadget could be written that inlines the diffs (if not already inline), and pretty-prints them (with syntax highlighting).

GitHubDiff does something like this for GitHub emails.

Wednesday, March 7, 2012

TodoMVC

TodoMVC is a project which offers the same Todo application implemented using MV* concepts in most of the popular JavaScript MV* frameworks of today.


Solutions look and feel the same, have a common simple feature-set and make it easy for you to compare the syntax and structure of different frameworks so you can select the one you feel the most comfortable with.

Monday, March 5, 2012

Aleph

Google has shut down Code Search and the Social Graph API. Replicating those services outside of Google is hard; they presuppose a scalable, well-oiled crawling/indexing/serving machine. Only Google has been able to release interesting n-gram data (from books too).

Along the same lines, the HTTP Archive tracks 55K URLs (with a goal of 1M by the end of 2012). W3Techs also only looks at the Alexa top 1 million. Presumably this is because crawling is hard. If Foursquare wanted to know how many pages have a link to a foursquare.com URL, would they want to crawl the whole web?

"Aleph" would be an infrastructure company that offers a few services:

  1. Large (billion and up) archive of sites on the internet. This would include not just raw HTML, but the full set of resources necessary to recreate that page (think crawling with headless WebKit and capturing all HTTP requests).
  2. Ability to do quick (semi-interactive) analyses over the crawl data that has been pre-processed (think regular expressions, or Dremel-like queries for attributes).
  3. Ability to run arbitrary MapReduces over the data (see ZeroVM for a way to do this safely).
  4. Ability to import new datasets (whether web-like or not)

For the web index to be useful for some applications, it would need to have a PageRank-like attribute per page to expose importance (and/or a number of visits/traffic).

In theory the Internet Archive has a lot of this data. They make their data available "at no cost to researchers, historians, and scholars," thus their willingness to license is unclear.

As for the name, the Aleph was a MacGuffin-like device from Mona Lisa Overdrive that a large copy of the Internet stored.

Update on 5/7/2012: Blekko appears to offer basic grepping functionality.

Update on 2/24/2013: CommonCrawl is a non-profit with 6 billion pages indexed and available for MapReduce.

Monday, February 27, 2012

The Locker Project

A Locker is a container for personal data, which gives the owner the ability to control how it's protected and shared. It retrieves and consolidates data from multiple sources, to create a single collection of the things you see and do online: the photos you take, the places you visit, the links you share, contact details for the people you communicate with, and much more. It also provides flexible APIs for developers to build rich applications with access to all of this information.

The Locker Project is an open source development effort, permissively licensed, and sponsored by Singly. Singly provides a personal data service based on this technology, and also welcomes its use by anyone for any purpose.

Sunday, February 12, 2012

MVC Framework for Node — Matador

Matador is a clean, organized framework for Node.js architected to suit MVC enthusiasts. It gives you a well-defined development environment with flexible routing, easy controller mappings, and basic request filtering.

krillapps

CodeRunner: Edit and run code in any programming language with just a single click. Write and test code, run scripts, work with algorithms, or simply experiment with a new coding or scripting language.

Patterns: A simple yet powerful tool for working with regular expressions. Build great patterns quickly and effortlessly with syntax coloring and with matching and replacing occurring in real time.

Monday, February 6, 2012

Building Games with Web Tools

Code


Editors


  1. Cloud9 IDE

Resources


  1. jswiki
  2. microJS



Sound


Music


  1. Noteflight (brief tutorial on how to write music for games)
  2. Sonant Live, a tracker
  3. Aviary Roc, beat sequencer

Editing


  1. Aviary Myna

SFX


  1. jsfxr



Graphics


Pixel editors


  1. Tzigla
  2. Pixie
  3. Piq
  4. Draw!
  5. Make Pixel Art
  6. TinySprite

Voxel editors


  1. Cubescape
  2. QBlock

Vector graphics


  1. svg-edit
  2. Aviary Raven

Painting


  1. Muro
  2. Sketchpad
  3. Aviary Phoenix
  4. Pixlr

Procedural


  1. Pinello (requires facebook login)
  2. Recursion Toy
  3. Algorithm Ink

Misc


  1. Aviary Peacock, effects/filter editor
  2. Aviary Toucan, palette creation tool
  3. COLOURlovers, palette/color discovery
  4. Adobe Kuler, palette/color discovery

dpup/surface - GitHub

Surface is a JS library intended to help manage single-page applications (or "Ajaxy" apps). It promotes decoupling of components and provides tools for navigating between "screens" and integrating with the browser history.

Sunday, February 5, 2012

PhantomJS and confess.js

PhantomJS provides a headless, yet fully-featured, WebKit browser that can easily be launched off the command-line, and then scripted and manipulated with JavaScript.

confess.js is a small library that uses PhantonJS to make it easy to analyze web pages and apps for various purposes.

Monday, December 12, 2011

benvanik/node-airplay

node-airplay is a client library for Apple's AirPlay remote playback protocol. It implements a simple AirPlay device browser using mdns and command interface.

CodeKit

CodeKit automatically compiles Less, Sass, Stylus & CoffeeScript files. It effortlessly combines, minifies and error-checks Javascript. It optimizes images, auto-reloads your browser and lets you use the same files across many projects.

Monday, December 5, 2011

Ugorji Nwoke: Dev Tool for GO AppEngine

Alternative development runtime/SDK for Go App Engine that relies less on the Python SDK.

Responsive IMGs

Part 1, Part 2, and Part 3 on images delivered using the HTML IMG tag that come from different sources depending the screen size. See also this post on media queries.

Saturday, December 3, 2011

UILayer

UILayer provides a JavaScript API on top of WebKit for working with the concept of layers. Instead of manipulating DOM elements using a myriad of mixed concepts, you go though a single, well defined API.

Sunday, November 27, 2011

glfx.js

Adjust photos in your browser in realtime with glfx.js, an image effects library powered by WebGL. It uses your graphics card for image effects that would be impossible to apply in real-time with JavaScript alone.

Saturday, November 26, 2011

ProdEagle - Welcome

ProdEagle allows you to monitor your (App Engine) web applications in real-time using beautiful graphs and alerts without harming the performance of your application!

Sunday, November 13, 2011

Workshop / Chrome Experiments

  • dat.GUI: A lightweight graphical user interface for changing variables in JavaScript. Rather than modify variables manually in your code, use dat.GUI to modify them during execution.
  • three.js: A lightweight 3D engine. Three.js makes it easy to render graphics with canvas, svg, and WebGL.
  • stats.js: A JavaScript performance widget. Stats.js adds a simple info box to your page displaying frames per second (FPS) or, with a mouse click, the milliseconds required to render the frame.

Saturday, October 29, 2011

Saturday, September 24, 2011

Bootstrap, from Twitter

Bootstrap is a toolkit from Twitter designed to kickstart development of webapps and sites. It includes base CSS and HTML for typography, forms, buttons, tables, grids, navigation, and more.

Tuesday, September 13, 2011

TameJS

Tame (or "TameJs") is an extension to JavaScript, written in JavaScript, that makes event programming easier to write, read, and edit. Tame is very easy to use in Node and other V8 projects

Saturday, September 10, 2011

Glyphish

Icons for mobile apps

NounProject

The Noun Project collects, organizes and adds to the highly recognizable symbols that form the world's visual language, so we may share them in a fun and meaningful way.

Friday, August 12, 2011

Performance Data from our Fieldrunners WebGL Demo

Using custom events in Google Analytics to gather client-side performance data.

Wednesday, July 27, 2011

nowjs for Node

Directly call remote functions in Javascript: NowJS creates a magic namespace 'now', accessible by server and client. Functions and variables added to now are automatically synced, in real-time. Call client functions from the server and server functions from client.

Monday, July 18, 2011

SceneJS - WebGL Scene Graph Library

SceneJS is an open source 3D engine for JavaScript which provides a JSON-based API for defining and manipulating 3D scenes on WebGL.

Thursday, July 14, 2011

Cocos2D JavaScript

Cocos2d-javascript is a 2D game/graphics engine based on cocos2d-iphone but designed to run in the web browser. It uses the latest features available in HTML 5 allowing real-time rendering of 2D graphics.

Monday, July 11, 2011

NClosure

Server-side Google Closure with Node.js. A fork of node-goog (which seems dormant).

Sunday, June 26, 2011

Google App Engine Mini Profiler

gae_mini_profiler is a quick drop-in WSGI app that provides ubiquitous profiling of your existing GAE projects. It exposes both RPC statistics and standard profiling output for users of your choosing on your production site. Only requests coming from users of your choosing will be profiled, and others will not suffer any performance degradation.

Friday, June 24, 2011

SocketStream

SocketStream is a new full stack web framework built around the Single-page Application paradigm. It embraces websockets, in-memory datastores (Redis), and client-side rendering to provide an ultra-responsive experience.

Monday, June 13, 2011

Perceptual Image Difference Utility

PerceptualDiff is an image comparison utility that makes use of a computational model of the human visual system to compare two images.

Monday, June 6, 2011

Sitebricks

Sitebricks is a simple set of libraries for web applications. Sitebricks focuses on early error detection, low-footprint code, and fast development. Powered by Guice, it also balances idiomatic Java with an emphasis on concise code.

Sunday, June 5, 2011

Apache Lucy

Apache Lucy is full-text search engine library written in C and targeted at dynamic languages. It is a 'loose C' port of Apache Lucene.

Thursday, May 26, 2011

youtube-dl

Small command-line program to download videos from YouTube.com and a few more sites.

jiminoc/goose - GitHub

HTML content/article extractor

Sunday, May 22, 2011

Scrollability

Native scrolling for mobile web apps... or at least the closest thing to it! Scrollability is a single script, it's small, and it has no external dependencies. Drop it into your page, add a few CSS classes to scrollable elements, and scroll away.

The Dynamics of Scrolling | MacResearch

"This got me wondering how difficult it would be to reproduce Apple’s momentum scrolling on your own in JavaScript. Is the reason no web developers mimic native scrolling that it is too difficult, or is it just laziness or the expectation that it is very difficult that stops them? Or is JavaScript just not up to the task? To find out, I decided to try. About 3 hours and 100 lines of JavaScript later, I have my answer."

Saturday, May 14, 2011

Google App Engine Blog: Introducing ProtoRPC for writing App Engine Web Services in Python

ProtoRPC makes it easy to write consistent, reliable web interfaces that can be used, for example, to do the following:

  • Create AJAX URL end-points for use by dynamic web pages and forms.
  • Provide simple and understandable server-to-server communications.
  • Become a back-end for command-line tools or other non-web based clients.

MTR

mtr combines the functionality of the 'traceroute' and 'ping' programs in a single network diagnostic tool.

As mtr starts, it investigates the network connection between the host mtr runs on and a user-specified destination host. After it determines the address of each network hop between the machines, it sends a sequence ICMP ECHO requests to each one to determine the quality of the link to each machine. As it does this, it prints running statistics about each machine.

Monday, April 11, 2011

Crafty - JavaScript Game Engine

A lightweight, modular JavaScript game engine to easily produce high quality games. Includes a large variety of components such as animation, event management, redraw regions, collision detection, sprites and more.

Sunday, April 3, 2011

MaxSquare: a fast and simple algorithm for maximizing photo thumbnail sizes

MaxSquare is an algorithm which calculates the optimal grid size for a collection of n images such that each image is allocated the largest possible square cell.

Wednesday, March 30, 2011

Coded Exposure Photography (Flutter Shutter Deblur, SIGGRAPH 2006)

In a conventional single-exposure photograph, moving objects or moving cameras cause motion blur. The exposure time defines a temporal box filter that smears the moving object across the image by convolution. This box filter destroys important high-frequency spatial details so that deblurring via deconvolution becomes an ill-posed problem.

Rather than leaving the shutter open for the entire exposure duration, we "flutter'' the camera's shutter open and closed during the chosen exposure time with a binary pseudo-random sequence. The flutter changes the box filter to a broad-band filter that preserves high-frequency spatial details in the blurred image and the corresponding deconvolution becomes a well-posed problem. We demonstrate that manually-specified point spread functions are sufficient for several challenging cases of motion-blur removal including extremely large motions, textured backgrounds and partial occluders.

Monday, March 28, 2011

Remote git diffs with bbdiff

  1. See previous post about key exchange.
  2. Add the following to .gitconfig:
    [diff]
        tool = "bbdiff"
    [difftool]
        prompt = false
    [difftool "bbdiff"]
        cmd = /home/mihaip/bin/bbdiff "$REMOTE" "$LOCAL"
    
  3. Create bbdiff on the remote machine with the following contents:
    #!/bin/sh
    
    source_machine=${SSH_CLIENT%% *}
    for arg in "$@"
    do
      readlink -fn $arg
      if [[ $arg == /tmp/* ]]
      then
        scp $arg mihaip@$source_machine:$arg
      fi
      echo -n " "
    done | xargs ssh mihaip@$source_machine /usr/local/bin/bbdiff --wait --resume
    

Saturday, March 26, 2011

Google Application Utilities for Python

Same set of utilities used to build and run internal Python apps at Google:

  • Simple application startup integrated with python-gflags.
  • Subcommands for command-line applications.
  • Option to drop into pdb on uncaught exceptions.
  • Helper functions for dealing with files.
  • High-level profiling tools.
  • Timezone-aware wrappers for datetime.datetime classes.
  • Improved TestCase with many of the same methods as unittest2, plus helpful flags for test startup.
  • google_test setuptools command for running tests.
  • Helper module for creating application stubs.

Friday, March 25, 2011

xStats

xStats provides simple charts to help monitor your code performance.

  • FPS: Frames rendered per second. The higher the number the better.
  • MS: Milliseconds needed to render a frame. The lower the number the better.
  • MEM: Megabytes of memory used. Make sure it doesn't keep incrementing.

Editing files remotely

  1. See previous post about key exchange and get_source_machine
  2. Install FUSE and SSHFS.
  3. Ideally, mount the remote directories you're interested to the same path on your Mac. Most recently I've used:
    sshfs mihaip@snowberry.local:/D \
        /D \
        -oauto_cache,reconnect,volname=snowberry-mihaip
    
  4. Add the following to your .bashrc:
    bbedit() {
      source_machine=$(get_source_machine)
      for arg in "$@"
      do
        readlink -fn $arg
        echo -n " "
      done | xargs ssh mihaip@$source_machine /usr/local/bin/bbedit
    }
    

Growl notifications from other machines

  1. Install growlnotify
  2. Set up public keys so that the other machine can SSH into the Mac without prompting
  3. Add the following to .bashrc:
    get_source_machine() {
      echo ${SSH_CLIENT%% *}
    }
    
    function growlnotify() {
      if [ "$AT_HOME" = "true" ]; then return; fi
      source_machine=$(get_source_machine)
      ssh mihaip@$source_machine /usr/local/bin/growlnotify \
          -n "command-notifier" \
          -m \"[$PWD]\" \"$1\" 2> /dev/null
    }
    
  4. In the Growl PrefPane, the notifications can be styled for the command-notifier "Application." (I like Music Video)

Wednesday, March 23, 2011

Using the Google V8 Javascript Engine in Java

V8 Java Bridge that allows any JavaScript code to run and call back to any provided Java methods.

Monday, March 14, 2011

JVM Crash in Development App Engine server after Mac OS X Java SE 6 Update 4

Restoring the previous JDK (from Time Machine) to /System/Library/Java/JavaVirtualMachines/1.6.0.3.jdk and pointing Eclipse at it worked for me.

Sunday, March 13, 2011

Backbone.js

Backbone supplies structure to JavaScript-heavy applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing application over a RESTful JSON interface.

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.

Underscore provides 60-odd functions that support both the usual functional suspects: map, select, invoke — as well as more specialized helpers: function binding, javascript templating, deep equality testing, and so on. It delegates to built-in functions, if present, so modern browsers will use the native implementations of forEach, map, reduce, filter, every, some and indexOf.

CoffeeScript

CoffeeScript is a little language that compiles into JavaScript. Underneath all of those embarrassing braces and semicolons, JavaScript has always had a gorgeous object model at its heart. CoffeeScript is an attempt to expose the good parts of JavaScript in a simple way.

The golden rule of CoffeeScript is: 'It's just JavaScript'. The code compiles one-to-one into the equivalent JS, and there is no interpretation at runtime. You can use any existing JavaScript library seamlessly (and vice-versa). The compiled output is readable and pretty-printed, passes through JavaScript Lint without warnings, will work in every JavaScript implementation, and tends to run as fast or faster than the equivalent handwritten JavaScript.

Friday, March 11, 2011

d3.js

D3 allows you to bind arbitrary data to a Document Object Model (DOM), and then apply data-driven transformations to the document. As a trivial example, you can use D3 to generate a basic HTML table from an array of numbers. Or, use the same data to create an interactive SVG bar chart with smooth transitions and interaction.

Tuesday, March 8, 2011

Monday, March 7, 2011

Chef - Opscode

Chef is an open source systems integration framework built to bring the benefits of configuration management to your entire infrastructure.

Thursday, March 3, 2011

boilerpipe

The boilerpipe library provides algorithms to detect and remove the surplus 'clutter' (boilerplate, templates) around the main textual content of a web page.

Instance/web API running at http://boilerpipe-web.appspot.com/.

Wednesday, March 2, 2011

visionmedia/express - GitHub

Fast (and small) server-side JavaScript web development framework built on node and Connect.

Sunday, February 27, 2011

Varnish: Notes from the Architect

"I have spent many years working on the FreeBSD kernel, and only rarely did I venture into userland programming, but when I had occation to do so, I invariably found that people programmed like it was still 1975."

Monday, February 14, 2011

Watir

"Watir, pronounced water, is an open-source (BSD) family of Ruby libraries for automating web browsers. It allows you to write tests that are easy to read and maintain. It is simple and flexible."

Used by Facebook.

Graphite - Enterprise Scalable Realtime Graphing

Graphite is a highly scalable real-time graphing system. As a user, you write an application that collects numeric time-series data that you are interested in graphing, and send it to Graphite's processing backend, carbon, which stores the data in Graphite's specialized database. The data can then be visualized through Graphite's web interfaces.

Used by Etsy.

Etsy also has StatsD (blog post) which is a daemon that increments/times can be sent to, which aggregates them and sends them to Graphite.

Friday, February 4, 2011

ack 1.94 -- better than grep, a source code search tool for programmers

"ack is a tool like grep, designed for programmers with large trees of heterogeneous source code."

Unicode code converter

Convert input text to various representations and escaping levels.

Also related: Text Escaping and Unescaping in JavaScript.

Sunday, January 16, 2011

sam-mccall/node-plate

Syntactic sugar for running async functions in sequence.

Also Do.

Friday, December 31, 2010

web-page-replay

"Record web pages using a local DNS and a local web server which act as proxies and records performance metrics in addition to the actual resources."

Saturday, December 25, 2010

Node Inspector

dannycoates/node-inspector - GitHub: "Node Inspector is a debugger interface for nodeJS using the WebKit Web Inspector."

Thursday, December 23, 2010

Introducing Knockout, a UI library for JavaScript

Knockout is a JavaScript library that makes it easier to create rich, desktop-like user interfaces with JavaScript and HTML, using observers to make your UI automatically stay in sync with an underlying data model. It works particularly well with the MVVM pattern, offering declarative bindings somewhat like Silverlight but without the browser plugin.

Tuesday, December 21, 2010

CSS Timing Bookmarklet

This bookmarklet loads this script which uses querySelectorAll on all the selectors in loaded stylesheets and then sorts their eval time.

Thursday, November 25, 2010

DNode

substack's dnode at master - GitHub: "DNode lets you expose a JavaScript function so that it can be called from another machine using a simple JSON-based network protocol. That’s relatively straight-forward... but DNode is designed for asynchronous environments, and so also lets you pass callback functions which will be translated in to references and used to make remote method invocations back to your original client. And to top it off, there’s a browser client library so you can perform the same trick over a WebSocket between a browser and a server."

Monday, November 15, 2010

creationix's step

A simple control-flow library for node.JS that makes parallel execution, serial execution, and error handling painless.

Monday, July 5, 2010

JSRegexTeststand v2

Simple single-page app that assists in dynamically developing and testing JavaScript regular expressions. Think of it as a REPL for JavaScript regexes.

Saturday, June 19, 2010

jsctags

ctags-compatible code indexing solution for JavaScript

Thursday, April 22, 2010

Akihabara

Set of libraries, tools and presets to create pixelated indie-style 8/16-bit era games in Javascript.

Thursday, April 15, 2010

Node.js


Evented I/O for V8 JavaScript.

Thursday, April 1, 2010

Easy Performance Profiling with Appstats

Easy Performance Profiling with Appstats

Monday, March 29, 2010

App Engine JavaScript SDK

"App Engine for JavaScript! With App Engine, you can build web applications using the JavaScript programming language, and take advantage of the many libraries, tools and frameworks for JavaScript that professional developers use to build world-class web applications. Your JavaScript application runs on Google's scalable infrastructure on top of Java and Rhino, and uses large-scale persistent storage and services."

Sunday, March 28, 2010

Recipe: CloudKit

"CloudKit is Jon Crosby’s neato web app that vends schemaless-but-versioned JSON objects via a RESTful web API."

objectify-appengine - Project Hosting on Google Code

"Objectify-Appengine provides the thinnest convenient layer which addresses these issues, yet preserves the elegance of get, put, delete, and query."

MongoDB

JSON key-value store

Saturday, March 27, 2010

Using a Caching Proxy Server for Web Demos

Simple python caching proxy server: run your test once against the proxy server in 'record' mode, and then after that you can use the server for consistent local playback.

Super Awesome Buttons with CSS3 and RGBA

Mercurial: The Definitive Guide

Alternative Mercurial guide.

Friday, March 19, 2010

Hg Init: a Mercurial tutorial by Joel Spolsky

For when I want to actually learn a DVCS:

Mercurial is a modern, open source, distributed version control system, and a compelling upgrade from older systems like Subversion. In this user-friendly, six-part tutorial, Joel Spolsky teaches you the key concepts.

Thursday, March 18, 2010

Gecko Memory Profiler

Add-on appears to be stuck at Firefox 3.5-only though.

Labs/Memory Profiler - MozillaWiki: "Memory Profiler is an experimental Labs project that attempts to make debugging memory use in web pages easier.

For more information about the tool's design and rationale, see Atul's blog post entitled Web Application Memory Profiling, Take Two."