Loose Bits Thoughts on distributed systems, cloud computing, and the intersection of law and technology.


- Writing a Technical Book, Part 4 - Marketing & Beyond

In the fourth and final post in my series on writing a technical book, I review marketing my book and everything else that happens post-publication once the book goes out into the wild.

- Writing a Technical Book, Part 3 - Publication

In the third post in my series on writing a technical book, I reflect on all of the work after the book was written to actually getting the book on real and virtual shelves and out to the public at large.

- Backbone.js with React Views

On Nov. 18, 2014, I presented a talk at the Seattle ReactJS Meetup on creating Backbone.js applications with React components, enabling more efficient DOM rendering, server-side rendering, and other nifty possibilities.

- Making JavaScript Tests Fast, Easy, & Friendly

Making JavaScript Tests Fast, Easy, & Friendly is a presentation I gave at CascasdiaJS 2014 that focuses on creating processes and environments that help developers actually write and run application tests.

- chai-jq - jQuery Assertions for Chai

chai-jq is a plugin for the Chai test assertion framework that adds a set of jQuery specific assertions for JavaScript application testing.

- Writing a Technical Book, Part 2 - Authoring

In the second post in my series on writing a technical book, I walk through my experiences writing the six chapters that would eventually comprise Backbone.js Testing. I discuss the ups and downs of working with a time-sensitive publisher, finding the time and motivation to write, and honing the material down into an actual book.

- Learn Frontend Testing

I lead an Oct. 16, 2013 workshop on testing frontend JavaScript applications for the SeattleJS meetup. My presentation covered the basics of test development and architecture using Mocha, Chai, Sinon.JS and PhantomJS.

- Packt Holiday eBook Sale

Packt has a 50% off discount for the holidays through Oct. 17th.

- Backbone.js Testing - Book Contest

Win a free copy of Backbone.js Testing! Packt Publishing's marketing team is interested in getting your feedback on my recently published book with a contest giveaway.

- Sphinx Bootstrap Theme 0.3.0 - Bootstrap v3 and more!

The "spinx-bootstrap-theme" integrates Twitter Bootstrap with Python Sphinx. Version 0.3.0 adds support for Bootstrap 3 and many new other additions.

- Writing a Technical Book, Part 1 - Starting the Project

In a series of posts, I walk through my adventure in writing my first technical book, Backbone.js Testing. My first post discusses the process of connecting with a publisher, planning the book, signing the contract and starting work.

- Book Announcement - Backbone.js Testing

Backbone.js Testing is a forthcoming book that covers all aspects of test development for Backbone.js application with practical examples using the Mocha, Chai and Sinon.JS libraries. The book's current publication date is set for late June 2013.

- Node.js in Production

Curiosity Media runs the world’s largest Spanish learning website, SpanishDict.com, backed by many Node.js applications. In a presentation to the May 8, 2013 Seattle Node.js meetup, I discuss the the good, the bad, and the ugly technical details of running Node.js services for over a year in production.

- Sphinx Bootstrap Theme 0.2.0 - Now with Bootswatch!

The "spinx-bootstrap-theme" integrates Twitter Bootstrap with Python Sphinx. New version 0.2.0 adds support for Bootswatch themes and customizations to the vanilla Bootstrap appearance.

- Sphinx Bootstrap Theme 0.1.6 - Bootstrap and Other Updates

The "spinx-bootstrap-theme" plugin integrates Twitter Bootstrap with the Sphinx documentation tool. Version 0.1.6 is the latest upgrade with a new Bootstrap version, various fixes and many UI improvements.

- Sphinx Bootstrap Theme Updates - Mobile, Dropdowns, and More

The "spinx-bootstrap-theme" plugin integrates Twitter Bootstrap with the Sphinx documentation tool. Version 0.1.0 adds new features including responsive (mobile-friendly) design, better dropdown navigation menu support, deployment from the PyPI repository and an upgrade to Twitter Bootstrap v2.2.1.

- Shared JavaScript Code with AMD/RequireJS

The advent of JavaScript on the backend (with Node.js) has made full stack JavaScript applications increasingly popular. RequireJS is dependency management framework that simplifies frontend asset management, and provides hooks for shared frontend (browser) and backend (Node.js) code. In my presentation to the November 11, 2012 Node.DC meetup, I introduce how to develop shared JavaScript libraries with AMD/RequireJS.

- Deck.js Starter

Deck.js is a framework for creating modern HTML presentations using JavaScript and CSS, with a rich theme and plugin ecosystem. Deck.js Starter is a collection of some various extensions and enhancements that I use for various slide decks.

- Responsive Web Design with Twitter Bootstrap

Bootstrap is a front-end web framework for fast, intuitive and consistent web design. Loose Bits recently transitioned over to Bootstrap from an ad-hoc collection of frameworks and utilities, and now has a unified, responsive experience on web, tablet and mobile platforms.

- 5 Things I Like About CoffeeScript

CoffeeScript is programming language that compiles to JavaScript. I gave a short survey talk about a few CoffeeScript features that I really like to the August 15, 2012 Node.DC meetup.

- Better Data Slinging with Node.js Readable/Writable Streams and Pipes

Node.js streams offer efficient and programmer-friendly means of binding together data inputs and outputs. Writing your own readable and/or writable streams can provide an enormous amount of flexibility and power over normal callback-style data wrangling, and all without too much extra programming effort.

- Getting Started with Node.js in the Cloud - Presentation

On March 20, 2012, we launched the NovaNode meetup with two talks. I gave a short talk on deploying Node.js applications to the cloud. I have now placed my presentation and demo source code online.

- Return-Oriented Programming - Systems, Languages, and Applications

The ACM Transactions of Information and System Security (TISSEC) recently published a paper I co-authored with some UCSD folks in grad school discussing the creation and evolution of return-oriented programming, a computer exploit designed to defeat certain classes of systems security.

- NovaNode Inaugural Meetup - Getting Started with Node.js in the Cloud

We're kicking off the new NovaNode - Northern Virginia Node.js - meetup on March 20 with two talks. My talk will focus on rapid application development and deployment to the cloud. Come learn how to create and scale your asynchronous web applications!

- Async.js Presentation for Joint Node.DC / DC jQuery Meetup

Async.js is a control flow library for Node.js and the browser. I gave the following presentation to the Feb. 20, 2012 joint meetup for Node.DC and DC jQuery.

- Authenticated, Static Web Sites on Google App Engine

Google App Engine provides an easy framework for hosting a static site and providing extensible user authentication based on Google Apps or OpenID accounts. This makes App Engine a great (and inexpensive) resource for quickly hosting static HTML content limited to an appropriate user domain.

- Twitter Bootstrap Theme for Sphinx

The "spinx-bootstrap-theme" plugin brings the awesomeness of the Twitter Bootstrap CSS/JS framework to the Sphinx documentation tool as an easy-to-install plugin.

- Sunny.js Presentation and Demo Server

My presentation on the Sunny.js cloud library for the DC Node.js October meetup. Also includes a simple web proxy server (backed by a cloud datastore) for gluing together cloud and HTTP web requests.

- Sunny.js, a Cloud Library for Node.js

Sunny.js is a cloud datastore client for Node.js that provides an event-based interface to various cloud stores (AWS S3, Google Storage) for fast, cloud-agnostic programming. It includes Node.js niceties such as a Read/WriteStream implementation, and offers cloud features like arbitrary metadata / request headers and SSL support.

- Pivot Faceting (Decision Trees) in Solr 1.4.

Pivot faceting, a feature introduced in Solr 4.0, can be approximated in Solr 1.4 using a few non-standard facet field/query features (and a little bit of hackery).

- How I Learned to Stop Worrying and Love the Static Blog

Loose Bits' journey from Blogger to GitHub using Jekyll.

- ConstantDict, Yet Another Python Enumeration Pattern

ConstantDict is a Python enumeration pattern using class variables with straightforward construction, and a terse syntax.

- Extending Django Settings with Derived Attributes and Methods

Extend the Django settings module with derived / inferred attributes at runtime.

- Django Cloud Browser

Introducing Django Cloud Browser, a portable Django application for viewing and navigating a cloud (AWS, Rackspace, etc.) datastore, with admin / normal user interfaces, and pseudo-directory inference.

- Browserless AJAX Testing with Rhino and Envjs, Part 2.

Test DOM manipulation in your jQuery/AJAX JavaScript code without a browser using Rhino and Env.js.

- Browserless AJAX Testing with Rhino and Envjs, Part 1.

Test your jQuery/AJAX JavaScript code using QUnit without a browser using Rhino and Env.js.

- Rackspace Cloud Files and Pseudo-Directories

Discuss Rackspace Cloud Files implied or "pseudo-" directories for storage objects and different API programming options.

- Celery Logging with Python Logging Handlers

Use Python standard library logging handlers with the Celery distributed task queue.

- Rackspace Cloud Files and Servicenet

Examine tips, tricks and best practices with Rackspace's "servicenet" Cloud Files API option for free bandwidth to Cloud Servers in the same datacenter.

- Distributed Task Locking in Celery

Create distributed task locks for the Celery message queue using Redis and Python decorators.