Mark R.D. Jones

A Good Place to Work

A Good Place to Work
by Ben Horowitz
(August 18, 2012)

A few quotations from his post:

“At Opsware I used to teach a management expectations course because I deeply believed in training. In it, I made it clear that I expected every manager to meet with her people on a regular basis. I even gave instructions on how to conduct a 1:1 meeting so there could be no excuses.”

“In good organizations, people can focus on their work and have confidence that if they get their work done, good things will happen for both the company and them personally. It is a true pleasure to work in an organization such as this. Every person can wake up knowing that the work they do will be efficient, effective and make a difference both for the organization and themselves. These things make their jobs both motivating and fulfilling.”

“In a poor organization, on the other hand, people spend much of their time fighting organizational boundaries, infighting and broken processes. They are not even clear on what their jobs are, so there is no way to know if they are getting the job done or not. In the miracle case that they work ridiculous hours and get the job done, they have no idea what it means for the company or their careers. To make it all much worse and rub salt in the wound, when they finally work up the courage to tell management how fucked up their situation is, management denies there is a problem, then defends the status quo, then ignores the problem.”

“I come to work, because it was personally very important to me that Opsware be a good company. It’s important to me that the people who spend 12 to 16 hours/day here, which is most of their waking life, have a good life. It’s why I come to work.”

– “Being a good company doesn’t matter when things go well, but it can be the difference between life and death when things go wrong.
– Things always go wrong.
– Being a good company is itself an end.”


W. Edwards Deming on Annual Performance Reviews

“The merit rating nourishes short-term performance, annihilates long-term planning, builds fear, demolishes teamwork, [and] nourishes rivalry and politics. It leaves people bitter, crushed, bruised, battered, desolate, despondent, dejected, feeling inferior, some even depressed, unfit for work for weeks after receipt of rating, unable to comprehend why they are inferior. It is unfair, as it ascribes to the people in a group differences that may be caused totally by the system that they work in.

The idea of a merit rating is alluring. The sound of the words captivates the imagination: pay for what you get; get what you pay for; motivate people to do their best, for their own good.

The effect is exactly the opposite of what the words promise. Everyone propels himself forward, or tries to, for his own good, on his own life preserver. The organization is the loser. The merit rating rewards people that conform to the system. It does not reward attempts to improve the system.”

As quoted by
John Hunter
The Idea of Performance Rating to Capture Merit is Alluring
The W. Edwards Deming Institute Blog
February 11, 2013

Rhett Price & Josh Knowles – Boston Subway Violinists – “I Knew You Were Trouble”

Rhett Price and Josh Knowles are two Boston Massachusetts violinists that have been playing contemporary tunes and building a following while busking in Boston’s MBTA commuter subway stations. Below is the YouTube video for a fine arrangement and interpretation of Taylor Swift’s “I knew you were trouble”, and a nice video production too.

Taylor Swift’s lyrics of flailing self-victimization is dropped as this duo instrumentally renders the gem of a melody and chorus in Swift’s song. Knowles and Price went to Boston’s Berkelee College of Music, and are clearly destined to be better known. Both are involved in other bands and separate collaborations.

The YouTube link:
Rhett Price & Josh Knowles – Subway Violinists – I Knew You Were Trouble – Taylor Swift cover

And…yes, the recording is available on iTunes:

Also a free, ten tune download of Rhett & Josh available on BandCamp:

You can find a number of their other recordings via their YouTube uploads as “Rhett Josh”:
I’ll pick their rendition of Beatle’s Eleanor Rigby there:

Also, Rhett’s channel on YouTube as “Rhett C Price”:
Rhett Price’s page on Facebook:

Josh Knowles is in the band Nemes, which is finishing up production on a recording for release sometime in 2013:

Background article, by Steve Annear in Boston Magazine (April 10, 2013)
“MBTA Performers Make a Living Playing Taylor Swift Songs on Violins for Riders”

Lincoln on Liberty, 1864

Excerpted from a speech given by Abraham Lincoln
Address at the Maryland State Fair for U.S. Soldier Relief (Baltimore Sanitary Fair)
April 18, 1864
Maryland Institute Hall
Baltimore, Maryland, United States.

“The world has never had a good definition of the word liberty, and the American people, just now, are much in want of one. We all declare for liberty; but in using the same word we do not all mean the same thing. With some the word liberty may mean for each man to do as he pleases with himself, and the product of his labor; while with others the same word may mean for some men to do as they please with other men, and the product of other men’s labor. Here are two, not only different, but incompatable things, called by the same name——liberty. And it follows that each of the things is, by the respective parties, called by two different and incompatable names——liberty and tyranny.

“The shepherd drives the wolf from the sheep’s throat, for which the sheep thanks the shepherd as a liberator, while the wolf denounces him for the same act as the destroyer of liberty, especially as the sheep was a black one. Plainly the sheep and the wolf are not agreed upon a definition of the word liberty; and precisely the same difference prevails to-day among us human creatures, even in the North, and all professing to love liberty. Hence we behold the processes by which thousands are daily passing from under the yoke of bondage, hailed by some as the advance of liberty, and bewailed by others as the destruction of all liberty. Recently, as it seems, the people of Maryland have been doing something to define liberty; and thanks to them that, in what they have done, the wolf’s dictionary, has been repudiated.[1]

The 1864 Maryland State Fair for U.S. Soldier Relief, more commonly known as the Baltimore Sanitary Fair, took place from April 18 to May 2, 1864. It was was one of many fundraising events for the United States Sanitary Commission, a private organization chartered by Congress in 1861 to raise funds and care for wounded soldiers.[2] Legislation creating the United States Sanitary Commission was signed by President Abraham Lincoln on June 18, 1861. The Sanitary Commission was disbanded in May of 1866. Much of the money raised by the Sanitary Commission was by means of fairs, some of which became national events, and lasted for weeks. During its existence the Sanitary Commission received $4,924,480.99 in money and the value of about $15,000,000 in supplies.[3] The Sanitary Commission worked in partnership with the Christian Commission, a private association founded November 1861 by members of the New York City Young Men’s Christian Association. The Christian Commission ceased activities on January 1, 1866.[4] Both organizations were models for the establishment and mission of the American Red Cross, which was founded in 1881.

[1] Teaching American History
Also: Abraham Lincoln: “Address at Sanitary Fair in Baltimore: A Lecture on Liberty,” April 18, 1864. Online by Gerhard Peters and John T. Woolley, The American Presidency Project.
University of California Santa Barbara
[2] “A Fair to Remember” Maryland State Archives
The Gettysburg Address. Albert H. Small Documents Gallelry. The Smithsonian
[3] “The Sanitary Commission and Other Relief Agencies” Civil War Home (article drawing upon “The Photographic History of the Civil War” by Holland Thompson)
[4] History of the U.S. Christian Commission. Todd Hein. (2007)
U.S. Christian Commission Northwestern Branch Inc.

Sharon Van Etten – One Day

Sharon Van Etten – One Day
Live at Bonnaroo 2011 Music Festival, Manchester, Tennessee. (June, 11, 2011)

An outstanding instance of live-video and live-sound-engineering of Sharon Van Etton performing her song “One Day”, which nicely emphasiszes Sharon Van Etten’s fine voice. The live-sound engineer’s choice for reverb on Sarah Van Etten’s vocal was a great choice, and shows off her voice quite well. I hope this song will have a heart-felt popularity at large. (Performed at Bonnaroo Festival, in Manchester, Tennessee, June 10-12, 2011.)

Appreciation and kudos to the editor for this outstanding video for this live performance, and the sound-production and post-performance video-editing by the people working for Vevo. Sharon Van Etten’s other songs at Bonnaroo 2011, via Vevo:

There are more links to interviews, and also other links below the video. Take a look.

[The link to the Bonnaroo 2011 video has a couple of years later been pulled. Here’s another of the same song.

An interview of Sharon Van Etten by Kevin Serra, is at (2009)

NPR interview of Van Etten by Guy Raz, when Van Etten’s recording/CD “Tramp” was released.
Sharon Van Etten: Learning How To RockAll Things Considered, National Public Radio (February 4, 2012)
Interview Transcript:

A few official tracks:

Interview with a few tracks on Wounded Jukebox (July 2011)

Other live recordings of “One Day”
AON Sessions: Sharon Van Etten, “One Day”
Published by “All Our Noise“. Sharon Van Etten accompanied by Cat Martino
Produced by Raul Zahir De Leon; 2nd Camera, Jonathan Luna.

<!– –>

Historical Housing Loan Interest Rates in the United States

(updated from time to time)

U.S. Mortgage rates for housing since 2009 have been at once-in-a-lifetime lows. Further below are graphs and charts of the history of interest rates or housing price indexes in the U.S. (and one international chart) indicating trendlines for:
   • Interest rates for 30-year fixed-rate loans since the mid-1970s
   • U.S. Interest rates for both 30-year and 15-year fixed rate loans from 2005 through 2011
   • Median and average prices of new houses in the U.S. since 1963
   • Comparative real housing price indexes in 15 developed countries from 1970 to 2008
   • U.S. house mortgage interest rates on 30-year loans since 1900
   • The Standard & Poor’s Case-Schiller 10- and 20-City Composite Housing Price Indexes from 1987 through 2011

The present low interest rates in the U.S. are in part a consequence of the U.S. Federal Reserve Bank actions in response to the now five-year old economic and financial crisis. It is a crisis most visible in housing and mortgage loans, following the conclusion of the biggest housing price run-up in United States history. By 2005, sales volume of new houses was declining on year-over-year basis, and sales of existing housing had similar declines, and prices had been softening for new housing in many metropolitan cities in the U.S.

By the end of 2006, the economy already was shrinking by at least one important measure, total income. The Federal Reserve Bank Board of Governors failed to consider the potential consequences of the changes in the housing and financial markets, as of 2006, and at that point was still worried about inflation. Even as the crisis neared in early August 2007, meeting transcripts of Federal Reserve Bank leadership meetings show that they remained skeptical that the housing financial and foreclosure crisis could affect the rest of the financial system, and had a fundamental misunderstanding about the tremendous growth and leverage that mortgage-backed derivatives would have in magnifying the financial consequences of an economic slowdown or downturn.

A sample list of contemporaneous mass media articles:
   • Big Builder Sees Slower Home Sales. Vikas Bajaj & David Leonhardt. New York Times (November 9, 2005).
   • The Heroes of Housing Just Say No. David Leonhardt. The New York Times (August 9, 2006).
   • Incentive Time In a Buyer’s Market; Sweetening the Deal to Sell a Home. – By Vika Bajaj and David Leonhardt (August 25, 2006).
   • What Statistics on Home Sales Aren’t Saying. David Leonhardt. The New York Times (December 6, 2006).

Ben Bernanke in 2005 and 2006 was the most consistent voice within the Federal Reserve Bank warning that the housing market’s difficulties could have broader consequences. The crisis was apparent by some measures in 2005 with rising inventories of unsold new housing; with the conclusion to the rise in housing prices associated with the U.S. housing price bubble ended with increasing unsold inventory of new houses in 2006; by 2007 the drop in the average price of new houses was the first in the U.S. since the Great Depression of the 1930s.

The U.S. was merely one of many developed countries that experienced a rapid rise in housing prices in the last two decades, and the U.S. rise was less than half a dozen other countries. See the international housing price-index graph further below. The U.S. crisis was aided and abetted by a U.S. financial industry that is collectively incapable of honestly describing the health of the economy and the companies, and financial products it promotes, as Mike Mayo describes in his book “Exile on Wall Street”; see an excerpt in the Wall Street Journal article “Why Wall Street can’t Handle the Truth“. See also: Federal Reserve Bank of St. Louis timeline of the financial crisis. The California venture capital firm Sequoia Capital gave an excellant analysis and presentation to its own portfolio of companies describing the credit-driven environment leading to the financial crisis, a few weeks after Lehman Brothers became insolvent and filed for bankruptcy (September 15, 2008). The Sequoia Capital presentation issued on October 9, 2008, and is entitled “Rest in Peace, the Good Times“. The presentation was an advisory to all startup companies that equity capital was going to become much more difficult to obtain for the foreseeable future.[1]

In 2011 and onward, individuals in a financial position to borrow and purchase housing, are in most parts of the U.S. able do so at remarkably affordable costs, especially at the lower-price spectrum of the housing market, for housing in the $100,000 to $250,000 dollar range, with significantly reduced prices compared to 2006, combined with astonishingly low mortgage interest rates. During 2009 and 2010, U.S. housing prices fell to 2003 levels, on an average and median price aggregate, according to the S&P/Case-Schiller Home Price Index.

It is likely it will take more than five years from 2011 for housing released to the market following mortgage foreclosure to be absorbed. Laurie Goodman of Amherst Securities Group, estimated that of approximately 55 million mortgages outstanding in 2011, 10 million mortgages were likely to go into default, thus continuing to depress housing prices as those newly-foreclosed houses are sold into the market. Goodman’s testimony to a subcommittee of the Senate Committee on Banking, Housing and Urban Affairs U.S. Senate on September 20, 2011, is entitled “New Ideas to Address the Glut of Foreclosed Properties“.

The U.S. Federal Reserve Bank on September 21, 2011 announced a nine-month plan to purchase 400 billion dollars of longer-term U.S. treasury bonds and sell short-term treasury debt, to push down long-term interest rates; this in turn depresses interest rates in the U.S. mortgage markets for the duration of that particular Federal Reserve effort. On September 13, 2012, the Fed announced another program to buy mortgage-backed securities, in an effort to put more money into the financial system, and depress long-term interest rates. See: Fed Announces New Round of Bond Buying to Spur Growth by Binyamin Appelbaum, New York Times (Sept. 13, 2012).

Here are graphs of the history of U.S. interest rates for 30-year fixed rate loans since the mid-1970s, and recent interest rates for both 30-year and 15-year fixed rate loans through 2011.

Data compiled by

Graph of data from the U.S. Census showing national average and median price trends of new houses

Real House prices, North America, Western Europe, Japan and Australia, 1970 - 2008  (1970=100)

Real House prices, North America, Western Europe, Japan and Australia, 1970 - 2008 (1970=100) From: 'Examining the big lie: How the facts of the economic crisis stack up' by Barry Ritholtz. Washington Post, November 19, 2011


Graph of U.S. Mortgage Interest Rates since 1900

U.S. Mortgage Interest Rates since 1900. By Steve Sjuggerud. 'Daily Wealth'

alternative text here

S&P Case-Schiller Housing Price Indexes 1987-2011 (via Barry Ritholtz / The Big Picture -

(This post is expanded and updated from time to time)

Douglas Crockford on JSON and JavaScript

Links to a number of outstanding lectures given by Doug Crockford at conferences, about JSON,  and JavaScript, along with a brief history of computation in the 20th and 21st century, with transcripts.

Douglas Crockford — The JSON Saga
• Video and transcript (50 minutes): The JSON Saga. (Published July 2, 2009, by Yahoo! Developer Network.)
• Slides:

In “The JSON Saga”, Crockford describes how he was influenced by Lisp, Rebol, JavaScript (visible via his book “JavaScript: The Good Parts”), and XML. He also traces the history of markup languages and angle brackets, from Runoff, Scribe, through HTML and XML. A few quotes from the talk:

We found it [JSON] worked really well. It was extremely effective for the thing that we invented it for – being browser server communication – but we also used it a lot for inter-server communication. Our platform scaled hugely, so we could have lots and lots of boxes, and they needed to be kept in sync, and we found JSON was perfect for sending messages between the servers. We also used JSON to implement a simple database, so we just have keys, and for each key we’d store some JSON data. It made it really efficient for storing stuff and getting it back.

One of the benefits of having a really simple description of a data format is it doesn’t take much code to implement it. And when you’ve got code that’s this easy to write, there are a lot of people who will be willing to write it, and share it.

Every language expresses these differently, and will add a lot of other stuff on top of it, like type systems, and semantics. But they all have the same idea about what the data looks like, and JSON has the thing that’s common to everything. By being at the intersection, it turns out to be the thing that everybody can agree on, so it’s really easy to pass data back and forth.

More generally, Crockford on JavaScript, computation and computer languages:
Douglas Crockford: JavaScript – The Good Parts
(Video of keynote talk at the 2007 Konfabulator Developer Day, discussing the evolution of JavaScript and his changing relationship to the language.)
Crockford on JavaScript
A series of eight or more lectures conducted in 2010 and 2011, with transcripts for the first five, and links to accompanying slides. The first lecture surveys the history of computing machinery and the history of computer culture and languages influencing JavaScript. The remaining lectures give an introductory survey of JavaScript, with commentary on the “good parts”, the evolution of the language leading to the ECMAScript-5 standard and its strict mode, its functional model (derived from Scheme), its prototype object model (derived from Self), and generally, the rise of AJAX.
YUI Theater, Yahoo Developer Network – More talks by Doug Crockford and others.
• Most of the videos have migrated over to Youtube, since Yahoo’s departure from serving video to browsers (as distinct from video file download). Crockford’s presentations are also available via the Yahoo User Interface (YUI) Theatre channel on Youtube

• JavaScript: The Good Parts
Doug Crockford, Google Tech Talks, Web Exponents
(February 27, 2009)
Video: JavaScript: The Good Parts (1 hour, 4 minutes)
Slides: JavaScript the Good Parts

Google Code blog post about Crockford’s talk:

Why Java Script Matters – talk given at Montana State University, Bozeman MT (Apr 20, 2011)
Video: Part One (32 Minutes) Part Two (34 Minutes)

• The State and Future of JavaScript
Doug Crockford, YUI Conference (October 29, 2009)
Video: The State and Future of JavaScript (56 minutes, with transcript)
Slides: The State and Future of JavaScript (powerpoint)

There’s pressure to make it a better compilation target. Now, this is a big surprise. Everybody thought that the Java VM was going to be the VM of the internet, but it turns out that JavaScript language is the VM of the internet. People are writing in Java, and Python, and lots of other languages, and then translating it into JavaScript because JavaScript, for all of its security problems, actually has a much better security model than everybody else. The CLR has a terrible security policy, Java has a terrible security policy — JavaScript is better than everybody else.

Douglas Crockford — Project Future Video and transcript (43 minutes) (November 10, 2010).
This talk was given at YUI Conf 2010 (Yahoo User Interface Conference),
November 8-10, 2010, at Yahoo!’s main campus in Sunnyvale, CA.

Four introductory JavaScript lecture-videos by Doug Crockford (October, 2006):
The JavaScript Programming Language (1 of 4)
The JavaScript Programming Language (2 of 4)
The JavaScript Programming Language (3 of 4)
The JavaScript Programming Language (4 of 4)
• Slides:

Doublas Crockford – Advanced JavaScript (October 17, 2006) (links to three videos: 31, 25 and 11 minutes)
• Slides:

• Douglas Crockford – An Inconvenient API: The Theory of the DOM (October 11, 2006) (3 parts)
This lecture was recorded before the release of Internet Explorer 7.
• Slides:

The Future of Programming Languages (Panel discussion)
Guy Steele, Douglas Crockford, Josh Bloch, Alex Payne, Bruce Tate; moderated by Ted Neward.
Strange Loop Conference 2010, Saint Louis, Missouri (October 15, 2010).
Video run-time 45 minutes.
The panel is asked in concluding to suggest a language that will help people learn the languages the panelists want people to learn. For example, in the past, for learning C++, it was often said it was useful to be exposed to Smalltalk; and for Scala, likewise, Haskell is a useful introduction.
• Bruce Tate (“Seven Languages in Seven Weeks”): IO (for prototypes, DSL, for JavaScript); Prolog.
• Josh Block (“Effective Java”): Scheme (simple, small, informative in approaching other languages); Assembly language at the processor level.
• Guy Steele: (Any three languages you don’t know), Clojure, Haskell.
• Alex Payne (BankSimple; “Programming Scala”): Forth, or Factor (for a bottom up low-level perspective).
• Douglas Crockford (“JavaScript, the Good Parts”): Scheme; Rebol (for DSL, dialects).

• CUSEC 2010 Keynote: Douglas Crockford – The Software Crisis
(Canadian University Software Engineering Conference)
Among many things he remarks upon, Crockford attributes a debt many modern programming languages and concepts owe to Smalltalk, which had the good fortune of eight years of gestation and re-writing before public release (funded by Xerox Corporation’s Palo Alto Research Center), unlike the eight weeks that JavaScript had.
Link to excellent and detailed notes on the talk by Joey deVilla

Doug Crockford on HTML and Fixing the Web
Interviewed by Ryan Slobojan. (Video and transcript.)
Strange Loop Conference 2010, Saint Louis, Missouri (October 12-15, 2010).
Selected quotations from this interview:

HTML5 is huge and complicated and it’s going to take years to get it right and finished. While that is going on, that may prevent correction of this more serious problem. The cross-site scripting problem has been with us for 15 years now and it is serious and in my view, the HTML committee was negligent in not dealing with it.

There is a proposal and it is not complete. One problem with the way that HTML5 rolled out is that the browser makers got way ahead of the standard. In a way that’s good because it allows for testing of the standard before it gets finalized. The problem with that is in exposing all of those APIs to the web early, a number of developers have started implementing stuff, applications, sites using HTML5. It’s half-baked still. So W3C is not warning “Don’t use HTML5 yet. It’s there just for testing purposes.” Because a lot of interoperability hasn’t been worked out yet, the proposals are going to have to change possibly in significant ways before they are finalized.

And if you are writing applications on it now, then they are going to fail when the proposals are corrected. The danger is that if enough developers get in front of this thing then we will not be able to correct the specifications because we don’t want to cause mass breakage. If that’s the case, then things are going to be like they were back in the Netscape era, except even more so, in which inter-browser compatibility is severely broken. The group that is going to suffer the most for that would be the web developers.

• Douglas Crockford, “JavaScript & Metaperformance”. Velocity Conference 2011 Santa Clara, California (June 14-16, 2011).
Video: (16 minutes)

• Douglas Crockford “Server Sidedness by Douglas Crockford at Yahoo! Open Hack EU 2011” Bucharest, Romania (May 14-15, 2011).

• Douglas Crockford Heresy & Heretical Open Source: A Heretic’s Perspective
Strange Loop 2010 St. Louis, Mosurri, USA (October 15, 2010) (59 minutes) (Publishedon

Avi Bryant’s Presentations

(Updated occasionally)

Avi Bryant in his public presentations has surveyed topics in big data, data analytics and data persistence, hashing, along with programming using Scala, Scalding, Smalltalk, Ruby, JavaScript, and the Seaside Smalltalk web application framework, which he initiated, as well as conceptions for web browser applications, and web application frameworks in general.

Avi Bryant (@avibryant) After my commentary below are annotated links to more than thirty of Avi Bryant’s public presentations, blog posts and interviews, along with associated videos, podcasts, transcripts, slides and so on.

You can skip my introductory commentary and see (except for recent and prospective talks) the comprehensive list of Avi Bryant’s talks directly.

Some slightly recent talks

Adding Tree and Tree: Distributed Decision Tree Learning November 15, 2014 – 9:00 AM
PNWScala 2014 – Pacific Northwest SCALA Conference (November 14-15, 2014)
Portland Oregon USA
Video: “Brushfire: Distributed, Generic, Tree Learning in Scala (using Hadoop)”

      “Brushfire is a framework for distributed, supervised learning of ensembles of decision trees. It is designed to be extremely scalable (both in number of observations and number of features) and extremely customizable: it makes heavy use of Scala generics and typeclasses to allow easy parameterization of each stage of the tree building algorithm. This talk will walk through the overall architecture and algorithm, then show some simple concrete examples of using Brushfire with Scalding to build trees on Hadoop.” (Avi Bryant’s first blog post, November 4, 2014.)

Getting Started with Scalding, Twitter’s High-level Scala API for Hadoop MapReduce
1:30pm Monday, July 21, 2014,
OSCON – Open Source Convention (July 20-24, 2014)
Portland, Oregon USA

From the tutorial description:

        Start on low heat with a base of Hadoop; map, then reduce. Flavor, to taste, with Scala’s concise, functional syntax and collections library. Simmer with some Pig bones: a tuple model and high-level join and aggregation operators. Mix in Cascading to hold everything together and boil until it’s very, very hot, and you get Scalding, an API for MapReduce out of Twitter.


        Scalding is an open source Scala framework for concisely describing Hadoop MapReduce jobs. I started the project at Twitter as a way for ad server engineers to run simple queries on the ad logs, without needing to learn a specialized language like Pig, or dive too deeply into the guts of Hadoop. Since then, it’s been adopted by teams at Etsy, LinkedIn, EBay, SoundCloud, LivePerson, Stripe, and others, and been extended with convenient APIs for everything from large-scale sparse matrix multiplication to locality-sensitive hashing.


        This tutorial will walk you through getting started with Scalding, from writing the simplest word-count job up to using probabilistic data structures for distributed machine learning. No specific background in Scala, Hadoop, distributed computing or machine learning is required, though an interest in any or all of these might help.


        No specific knowledge needed. Some familiarity with either Scala or Hadoop would be helpful but is not at all required. Bring a laptop with a working JDK installation.


CUSEC 2014 January 16-18, 2014
Canadian University Software Engineering Conference
Montreal, Quebec, Canada
A talk without title, on Friday, January 17, according to the CUSEC 2014 schedule
Video, on software engineering, counting, probabilities and hashing: (45 minutes)

Add ALL the things: abstract algebra meets analytics   Avi Bryant
Strange Loop 2013   (September 18-20, 2013) Saint Louis, Missouri USA

Video: Add ALL the Things: Abstract Algebra Meets Analytics (38 minutes)

InfoQ’s videos for the entire Strange Loop Conference.
Slides for “Add ALL the Things” are available via Github, as are most of the other StrangeLoop 2013 session slides.

Also Slides & videos for Emerging Languages Camp at Strange Loop 2013 are on InfoQ as well.

• On October 25, 2012, at that time the lead for six-months of an expanded Etsy data analytics group, Bryant presented in New York City at the O’Reilly Strata + Hadoop World conference, with a talk entitled Scala + Cascading = Scalding. Leading up to that presentation, he posted to the O’Reilly Strata site an article entitled MATLAB, R, and Julia: Languages for data analysis: Inside core features of specialized data analysis languages on October 15, 2012. The Strata + Hadoop World conference was part of New York City Data Week, running from October 22 – 26, 2012.

• In early February 2013, he gave a talk entitled scala.collection.approximate, during Northeast Scala Symposium at Drexel University in Philadelphia, which was held February 8 & 9, 2013. (See also @nescalas). The video of Avi’s talk was released on March 21st. All of the conference’s presentations were recorded, and the other presentation videos are available. See Marakana Inc.’s 2013 Northeast Scala Symposium video release page, and the list of conference videos released to YouTube. (Twitter announced on August 13, 2013 that it had bought out Marakana to create its own training and video services department.) The prior year’s presentation videos for 2012 Northeast Scala Symposium (in Boston) were put online, as were the 2011 NESCALA presentations.

Avi’s synopsis of his Northeast Scala Symposium talk:

    “How do you count the number of distinct values when there’s too many to fit in a Set? How do you find the most frequent items when you don’t have space for a Map[T,Int]? When dealing with very large or streaming datasets, it’s common to use probabilistic algorithms like bloom filters, hyperloglog counters, or count min sketches. In Scala, it’s nice to model these as approximate versions of normal collection classes like Set and Map. I’ll discuss some work we’re doing on this in the context of the Algebird project started at Twitter.”

Add ALL the things: Abstract Algebra and Distributed Data Processing (38 minutes)
A presentation made in New York to Kickstarter developers, prior to Avi’s departure from New York-based Etsy.
(Posted Apr 22, 2013)

      “Anyone who builds analytics systems ends up understanding abelian groups, whether they know it or not. This is a talk I gave at Kickstarter about how the laws of group theory provide a useful codification of the practical lessons of building efficient distributed and realtime aggregation systems.”

Projects and code that make use of the ideas described in the talk:
– Algebird – Abstract Algebra for Scala
– Simmer: a streaming aggregation tool inspired in part by Hadoop streaming’s Aggregate package, but uses the probabalistic aggregation algorithms from Twitter’s Algebird.

The link to the list of the rest of Avi Bryant’s talks, further below.

Below, I survey Avi Bryant’s description (2009 through 2011) of the expanding client-side opportunities available to designers of web application frameworks, along with a (rather too long) list of posts by others surveying aspects of the topic. The subject of frameworks is only one of many threads and challenges issued in Avi’s public talks, which run from 2001 through 2013.

Bryant’s previous blog presence went dark upon his departure from Twitter on December 2, 2011. Bryant announced on a new blog, on April 17, 2012, his plan to move from San Francisco and return to Galiano Island, near Vancouver Canada to work remotely for New York-based Etsy, starting in June 2012. He hired and launched and led for Etsy a geographically distributed data analytics team to collaborate with.

On March 11, 2013, he announced that he had joined up with friends that had started San Francisco-based Stripe, and that he would continue to work remotely from Galiano Island.

Context and Background

Smallthought Systems
In 2005, Avi Bryant co-founded Smallthought Systems, Inc., along with partner and co-CEO Andrew Catton. Smallthought Systems was based in Vancouver, British Columbia, Canada. Bryant and Catton were subsequently joined in collaboration by Luke Andrews and Ben Matasar, and together they produced several public Smalltalk-based web applications in addition to private client projects.

Smallthought System’s first public web application was the online database DabbleDB. It was first exposed for public beta on October 24, 2005, and received active feature improvement and bug elimination effort during the next three years or so. The DabbleDB demo video narrated by Avi Bryant and can still be found online (archived by other admirers): DabbleDB Demo on Youtube.

Seaside Smalltalk web application framework
DabbleDB was implemented using Seaside, a template-free web application framework written in Smalltalk. Avi Bryant developed Seaside with Julian Fitzell and others and Seaside was open-sourced in 2002. Seaside had been inspired by NeXT/Apple’s WebObjects approach to client browser and server interaction in its original Objective-C and subsequent Java versions. WebObjects focuses on the state and behavior of the application as distinct from the mechanics of URLs and HTML and HTTP requests. Avi prototyped the architectural ideas in Ruby (well before the existence of Ruby on Rails), via the IOWA web application framework, and abandoned IOWA in 2001 when he elected to implement the approach in Smalltalk, as “Seaside”. Bryant has described his language progression in the years before this era as C –> Objective-C –> Ruby –> Smalltalk.

Monticello Smalltalk distributed version control system
Bryant developed the Monticello Smalltalk DVCS in collaboration with Colin Putney and other programmers in the Smalltalk community in 2003.

Smallthought’s financing and later web application projectsAdrian, Avi, and Andy
Smallthought Systems received a venture capital investment by Ventures West, a Canadian VC firm, in June 2006, a transaction facilitated by Paul Kedrosky. The actual amount of the investment, the portion of the company sold, and the post-transaction valuation of the company was not disclosed by the participants (though one apparently uninformed journalist speculated the investment approached two million dollars).

Dabble Do
Smallthought Systems’s second public web application, a Facebook app, was a dud and withdrawn a few months after its introduction. Apparently people did not want to create a to-do list on Facebook. The Dabble Do announcement: Introducing Dabble Do   (August 6, 2007)

In 2008 Smallthought released Magic/Replace, an online table-oriented data editing tool. Video demo still online at:

A web traffic analyzer and trend-line display application and interpreter of Google Analytics data called Trendly was released in 2009 (while in beta, it was called “DSHBRD”). The Trendly web application received the attention of the Google Analytics Blog in a post describing Trendly’s use of the Google API, and Trendly’s the then-innovative perspective on trend analysis, in the post An API Integration To Measure Significant Change (August 28, 2009). It is fair to say that the statistical and programming thinking demonstrated in implementing this application led to Twitter’s purchase of Smallthought Systems for its analytical talent.

Smallthought Systems purchased by Twitter
On June 10, 2010, Twitter announced that it had completed its purchase of Smallthought Systems, Inc., a hiring purchase of talent rather than an acquisition of software. All four Smallthought Systems developers joined Twitter as employees to work on the Twitter data analytics team, and moved to San Francisco where for the first time they all resided the same city. Over the course of 2011, the online applications DabbleDB and Trendly were closed down. (Tim Bray reported on August 24, 2011 that he was able to sell his investment in Smallthought Systems at a profit. Bray’s shares had been converted to shares in Twitter and he apparently made the investment on similar terms as Kedroskys Ventures West participation. It hardly needs saying that that implies the founders did well for their share of the company.)

Scalding MapReduce framework
While at Twitter, Bryant led Twitter’s adoption of Scala for Hadoop jobs, and collaborated in developing the in-house Scalding MapReduce API framework (using Scala and Cascading) that Twitter subsequently open-sourced in March 2012. Its Github page describes Scalding as “a Scala library that makes it easy to write MapReduce jobs in Hadoop. Instead of forcing you to write raw map and reduce functions, Scalding allows you to write code that looks like natural Scala.” Scalding continues to be under active development. See a Twitter Engineering blog post in September 2012; Bryant continues to contribute from his position at Etsy. His founding collaborators at Twitter included Oscar Boykin (@posco) and Argyris Zymnis (@argyris).

See the link further below for the video of Bryant’s talk “Smalltalk & Big Data”, for the ideas for the design of an easier-to-use front-end for Hadoop MapReduce tasks using Smalltalk—that became the conceptual foundation and framework for Scalding, using the Twitter in-house language Scala instead of Smalltalk.

Avi Bryant gave a presentation at the Strata Conference + Hadoop World, New York City, October 25, 2012, entitled Scala + Cascading = Scalding. He also gave a talk entitled scala.collection.approximate, during Northeast Scala Symposium at Drexel University in Philadelphia. The conference was February 8-9, 2013.

Avi Bryant departs from Twitter
Avi Bryant announced, via Twitter, his departure as an employee on December 2, 2011. He indicated he would be working on new startups of a rather unspecified nature. Bryant did subsequently acknowlege nearly a year after leaving Twitter that the acquisition/hire transition from the tiny Smallthought Systems to the rapidly growing three-to-four orders-of-magnitude larger Twitter had a number of hard lessons and adjustments for a developer accustomed to nimble development and rapid deployment of new applications to the public.

Server-centric web application frameworks are obsolete

Migrating away from SeasideAvi Bryant at Github Meetup
At five different conferences, in 2009 and 2010, Bryant described the process of gradually abandoning use of his own path-breaking Seaside Smalltalk web framework during several development and architecture iterations of Smallthought Systems’s Trendly, prior to Trendly’s initial release. The talks were entitled: “1,001 Iterations: Product Design, Illustrated”, “Failure: An Illustrated Guide”, “Django is obsolete (but so is everything else)”, “Rails is obsolete (but so’s everything else)” and “Smalltalk and Big Data”.

Trendly’s final architecture loaded an initial page and JavaScript to manage the JSON data interaction with the server, with the client browser generating the application’s HTML and graphics instead of the server. (Bryant and others had incorporated aspects of JavaScript client-side functionality in Seaside as early as 2004, as he described in a blog post Cosying up to the client-side, posted July 23, 2004.)

Describing the Trendly development experience, Bryant has outlined how server-centric web application frameworks have failed to keep up with web browser capabilities, JavaScript engine improvements, and improving hardware and data persistence methods; as well as the need for holistic tier-less web application frameworks that fully encompass both server-side and client-side development, enabling an application designer to easily divide or shift the location of application functionality between client and the server as development effort or the application or browser functionality may require. Bryant does not claim that existing server-centric application frameworks are useless, but rather that such frameworks fail to take full advantage of the then-current (2009) browser environment.

Javascript as a translation / compilation target

Smalltalk in the browser, via JavaScript
Desiring a Smalltalk environment for client-side programming during Trendly’s development, Avi Bryant and fellow Smallthought Systems developers created Clamato, a dialect of Smalltalk and cross-language code generator emitting JavaScript, self-hosting within the web browser, with a Seaside-like HTML builder and partial interface to the JQuery API. The name is a pun play on the idea of Google’s V8 JavaScript engine as V8 tomato-vegetable juice — and clamato juice (tomato juice and clam broth).

In creating Clamato, Avi Bryant indicated that his “main objective is to have a more pleasant environment in which to write the client-side of web applications. A secondary use case might be to just use the web browser as a development environment for code that was intended to run on, say, V8 on the server,” as well as to minimally map Smalltalk onto JavaScript. There is a Clamato browser demo, and a Clamato source repository, and Chris Cunnington produced a brief introductory Clamato video demo.

A dialect of Smalltalk running on JavaScript in the browser was first demonstrated by Dan Ingalls with Lively Kernel. Since Clamato’s creation, other Smalltalk-JavaScript projects have been released.
• Amber Smalltalk extends Clamato, with a jQuery binding, led by Nicolas Petton. Until the 0.9 release (September 14, 2011), Amber was called JTalk. (In September 2011, Avi Bryant said to Nicolas Petton that the progress to-date on JTalk had eclipsed the initial Clamato effort, which had been fallow for two years at that point.)   The Amber project has an active mailing list. Nicolas Petton’s introductory presentation about JTalk / Amber Smalltalk at ESUG 2011 is available as a video, along with the slides, which were written in Amber Smalltalk. Petton also outlines the differences between Amber and other Smalltalk dialects in “Porting code from other Smalltalk dialects“.
• Yet another in-browser Smalltalk dialect project is SilverSmalltalk which has an ExtJS binding, and is a project by Peter Fisk (SilverSmalltalk repository).

For those eager to avoid programming JavaScript, or desiring to work with the same language server-side and client-side, or interested avoiding JS’s multi-year standards revision process associated with the long half-life of some browsers, there are more than a hundred public cross-language JavaScript code-generator compiler-translator/parser projects. Among the many projects, CoffeeScript is a working prototype for some fraction of the proposals under consideration for the next couple of versions of ECMAScript, and Dart has had a measure of general visibility in 2011.

A growing number of JavaScript projects work towards narrowing the browser server-client dyad, with some aiming for a complete tierless application framework. Some individuals consider the projects prototypes for what could be done in other languages compiling to JavaScript on the client side to develop a unified platform for server and client; others are working on server-side JavaScript platforms. An arbitrary sample of projects in a proliferating area:
Meteor web app framework; Luna web app framework (unreleased: used internally by Asana); Derby.js; Racer.js; Cappuccino; SproutCore; Ember.JS (a renamed fork of SproutCore) [not to be confused with Ender.js]; Node.JS; NowJS; SocketStream; Socket.IO; Express; Backbone.js; Common.js; Knockout.js; JSDOM. And Opa is an example of an open, tierless framework, DSL and web stack, with a compiler written in OCaml; naturally there are a few other tierless framework projects.

You can skip directly to the list of Avi Bryant’s talks.


JavaScript and web application development

An arbitrary and archival selection of posts and conference presentations surveying a fraction of the conceptual ferment in browsers, JavaScript, asynchronous I/O, web application frameworks, data model synchronization, and realtime applications. In chronological order, starting in 2003.

JavaScript on the server was first implemented in 1996 by Netscape, but incorporated many of PHP’s mistakes. Node.js implemented a non-blocking server-side asynchronous platform starting in 2009.

• Adam Bosworth Interview with Adam Bosworth ACM Queue (March 1, 2003)
• John Gruber The Location Field Is the New Command Line Daring Fireball  (June 22, 2004)
• Koranteng Ofosu-Amaah On rich web applications, AlphaBlox and Oddpost (July 16, 2004)
• Adam Bosworth Ajax reconsidered (June 1, 2005)
• Ian Bicking Constraints and Continuations   (March 22, 2006)
• Francisco Tolmasky The Road to Cappuccino</a (presentation slides & audio) AJAX Experience Conference, Boston   (September 29 – October 1, 2008)
• Patrick Meuller
Brainwashed   (November 12, 2008)
• Zachary Voase Why JSON will save bioinformatics (well, sort of…)   (May 18, 2009)
• Bret Taylor The technology behind Tornado, FriendFeed’s web server (September 10, 2009)
Nicholas Zakas JavaScript Application Architecture (slides), Bayjax Tech Talks San Francisco, California   (September 2009)
• Chris Williams Going evented with Node.js (November 16, 2009)
Server-Side Javascript: Back With a Vengeance ReadWriteWeb   (December 17, 2009)
• Dan Ingalls Node.JS What’s Up with Dan Ingalls (April 26, 2010)
• Ask HN What are current trends in web developing? (June 2010)
• Trip Hawkins Games need some SAAS (June 20, 2010)
• Charles Jolley The Next Revolution SproutCore Blog (July 1, 2010)
• Yahuda Katz Here’s to the Next 3 Years Katz Got Your Tongue (September 2010)
Julian Fitzell Seaside – Why should you care? Dynamic Stockholm 2010</a (October 19, 2010)
• John Arley Burns
Why Mobile Apps Are Obsolete Rant 3000   (November 18, 2010)
• Allen Wirfs-Brock The Browser is a Transitional Technology    (January 31, 2011)
• Peter Michaux MVC Architecture for JavaScript Applications (February 24, 2011)
• Ian Bicking JavaScript on the server AND the client is not a big deal (March 30, 2011)
• Gilad Bracha The Truthiness Is Out There Room 101   (March 20, 2011)
• Nate Smith Why I’m writing Vers, a JavaScript application framework (April 4, 2011)
• Mike Driscoll Node.js and the JavaScript Age Metamarkets Blog (April 8, 2011)
• Tom Dale Imagine a Beowulf Cluster of JavaScript Frameworks (April 11, 2011)
John Hann The Future is Modules not Frameworks (slides), JSConf 2011, Portland Oregon   (May 3, 2011)
Antranig Basman The Future is Frameworks, not Modules (powerpoint slides),JSConf 2011, Portland Oregon   (May 4, 2011)
• Brendan Eich My JSConf.US Presentation Slides: CoffeScript,, the JS Language Lab, JSConf 2011, Portland Oregon   (May 3, 2011)
• Thomas Reynolds Javascript Microframeworks and The Future Award-Winning Fjords   (May 9, 2011)
• Magnus Holm JSON: The JavaScript subset that isn’t The Timeless Repository   (May 15, 2011 and January 2013)
• Allen Wirfs-Brock Web App Platform: Is it a Framework or is it an OS? (May 22, 2011)
• Peter Michaux JavaScript is Dead. Long live JavaScript (June 25, 2011)
• Francisco Tolmasky Objective-J and Cappuccino, with Francisco Tolmasky Interview by Zef Hemel State of Code   (July 4, 2011)
• Chris Nelson Why it’s the late Cretaceous for server side MVC frameworks MysteryCoder   (July 10, 2011)
• Kris Rasmussen The Luna Framework: Reactivity, Sync, and Co-Simulation (video presentation) Asana Blog Luna Presentation slides (July 27, 2011)
Ian McCoy Web Development: We Are All Doing It Wrong Fine Shambles  (July 29, 2011)
• Sridatta Thatipamala Why We Threw out All Our Code (And Why You Should Too) NowJS Blog (August 2, 2011)
Wille Faler Tightly Coupled Web Frameworks Are Reaching the End of the Road, DZone  (August 7, 2011)
• Nate Smith Announcing Racer, an Experimental Realtime Model Synchronization for Node.JS  (August 17, 2011)
• Nicolas Petton & Göran Krampe Jtalk, the Smalltalk for Web developers (Slides are also written in Jtalk.) ESUG 2011 (European Smalltalk User Group Conference 2011) Edinburgh, Scotland, UK (August 29, 2011) About three weeks after this presentation, with the 0.9 release, JTalk was renamed Amber Smalltalk.
Alon C. Programming: The dark side of Event Driven Programming This & That  (September 9, 2011)
• Mikeal Rogers A new direction for web applications Future Aloof  (September 27, 2011)
• Bernat Romagosa Pharo, will you take Amber for your lawful friend? A Smalltalk by the Seaside  (September 26, 2011)
• Chris Nelson Web apps are dead, long live web apps Gaslight Software Blog  (September 30, 2011)
• Alex MacCaw Asynchronous UIs – the future of web user interfaces  (November 16, 2011)
Ian McCoy Grand Unifying Theory Fine Shambles  (November 24, 2011)
• Yehuda Katz Amber.js (formerly SproutCore 2.0) is now Ember.js  (December 12, 2011)
• Dan North The rise and rise of JavaScript  (December 19, 2011)
• Jarod Ferguson Solving the upload progress bar problem–The History of Node.js Elegant Code blog  (February 6, 2012)   (Link to a video of a biographical talk by Ryan Dahl, to a Pheonix user group, Oct 11, 2011)
• James Burke Web dev with two turntables and a microphone</a Tagneto  (January 30, 2012)
• Ian McCoy
Stopping at the border Fine Shambles  (February 23, 2012)
• Alex MacCaw Rails is just an API (March 4, 2012)
• Francis Hwang Should your web application be rich-client from day one?  (March 5, 2012)
• Brad Gessler Don’t use Rails as “Just an API”  (March 21, 2012)
• Brian Ford Is Node.js Better?   (April 9, 2012) (From his talk given at JSConf 2012, April 3, 2012, Scottsdale, Arizona.)
• Isaac Z. Schlueter Re: @brixen’s “Is Node Better”  (April 9, 2012)
• Dan Web @danwrong Improving performance on – Twitter Engineering Blog (May 29, 2012) – On Twitter stepping back from full client-side rendering, and implementing javascript modules and partial server-side rendering.
• Paul B. Jensen Thoughts on Rails, Node, and the web apps of today   (July 11, 2012)
• Daniel F Pupius The Rise of the Single Page Application (January 7, 2013)
• Spike Brehm @spikebrehm
Our First Node.js App: Backbone on the Client and Server AirBnB Engineering January 29, 2013) Hacker News commentary
• Dio Synodinos Top JavaScript MVC Frameworks   (February 5, 2013)
• Zachary Vose The Web is Becoming Smalltalk  (February 10, 2013)
• James Halliday @substack many things (March 14, 2013)   (On libraries, modules and frameworks, and how frameworks make decisions the programmer is not aware of.)
      “To be fair, there is a distinction here between frameworks that are sheer mudballs of compounded assumptions and frameworks that take the time to carefully factor out themselves into lots of tiny pieces. I think an important standard to judge frameworks is how many of the framework’s core abstractions can be used ala-carte without using the framework itself. If your framework melts away into an informal collection of modules that happen to work well together but can be easily repurposed by people who don’t use the framework, then you have built something very sublime.”
• Kyle Robinson Young @shamakry Using npm on the client side (May 27, 2013)
• Tero Piirainen Frameworkless JavaScript: Why Angular, Ember, or Backbone don’t work for us Moot Blog  (September 17, 2013)
• Kyle Robinson Young Modules: The Right Way   (October 21, 2013)
• Kyle Simpson @getify Silly Rabbit… Frameworks are for Prototypes getiblog  (November 25 2013)
• David Nolen @swannodette The Future of JavaScript MVC Frameworks (December 17, 2013) [formerly blogging at dosync ]
• Eric Normand React: Another Level of Indirection brLispCast   (December 31, 2013)
• Colin Putney Commentary on Smalltalk Amber vs. Javascript for client-side browser applications Squeak-dev Smalltalk email list.   (January 20, 2014)

(return to top of this post)

Links to Avi Bryant’s past and present blogs and the like:

• Avi Bryant (2012)
• HREF Considered Harmful (2005 – 2010)   (via
• HREF Considered Harmful (2003 – 2005) (Archive of blog hosted at Cincom)
DabbleDB Blog (2004 – 2010) (Smallthought Systems, various developers posting, along with Avi Bryant)
• Twitter:
• Blocks:
• Github:
• Bitbucket: Clamato:

Annotated links to Avi Bryant’s talks and posts

  • Scala + Cascading = Scalding
    Avi Bryant   –   Strata Conference + Hadoop World   New York City   (October 25, 2012)
    Presentation description & schedule: Scala + Cascading = Scalding,
    The talk is listed in two Strata conference tracks:
    • “Hadoop Tools and Technology
    • “Hadoop and BeyondAvi Bryant’s abstract for “Scala + Cascading = Scalding”
    Start on low heat with a base of Hadoop; map, then reduce. Flavor, to taste, with Scala’s concise, functional syntax and collections library. Simmer with some Pig bones: a tuple model and high-level join and aggregation operators. Mix in Cascading to hold everything together and boil until it’s very, very hot, and you get Scalding, a new API for MapReduce out of Twitter.Scalding is an open source Scala framework for concisely describing Hadoop MapReduce jobs. I started the project at Twitter as a way for ad server engineers to run simple queries on the ad logs, without needing to learn a specialized language like Pig, or dive too deeply into the guts of Hadoop. Since then, both the team and the framework have evolved, and it’s now used by 20 or so full-time data scientists, for all of their work: ads targeting, market insight, click-prediction, quality analysis, experiment analysis, and more. In this talk, I’ll walk you from its beginnings, expressing simple jobs like word count in a few lines of code, to its state-of-the-art present: word count is still a few lines of code, but so, for example, is PageRank.Scalding background
    Announcements: @Scalding
    Twitter Engineering Blog: Scalding release and links
    Generating Recommendations with MapReduce and Scalding (March 2, 2012)
    Scalding 0.8.0 and Algebird (September 24, 2012)• Scalding: Powerful and Concise MapReduce Programming (video: 1 hour, 6 minutes)
    By Oscar Boykin (@posco) & Argyris Zymnis, (@argyris) both from Twitter Engineering
    San Francisco Scala User Group, San Francisco California (April 19, 2012)
  • Smalltalk and Big Data
    Avi Bryant – Keynote talk abstract (March 14, 2011)
    Smalltalk Solutions (STS) 2011 Conference (March 13 – 16, 2011), Las Vegas, Nevada.
    Video: Smalltalk and Big Data (60 minutes)
    Slides: Smalltalk and Big Data
    Audio: available in more than one format via James RobertsonAvi Bryant on Seaside, and web frameworks generallyBryant explores implementing a Smalltalk DSL frontend for Hadoop MapReduce jobs, which became the foundation conceptual framework for Scalding, implemented with Scala on the JVM instead of Smalltalk.Before proceeding to the “big data” map-reduce part of the talk Avi discussed the future of his Seaside Smalltalk web application framework (and all other server-centric web app frameworks) in relation to the 2011 browser environment. The then-current (2010) browsers provide resources not available when Seaside was conceived in 2002:

    1. Seaside offers server-side modal continuation flow-control, which is no longer important (now modeless JavaScript client-side offerings are relatively easy to implement);
    2. Seaside offers server-side HTML generation (now, when passing only JSON back and forth to the server, the client-side JavaScript can generate the HTML);
    3. Seaside offers server-side stateful user-interface components (now, if state resides in the client, the server need not track state);
    4. Seaside offers unique callback IDs and this model of interaction architecture continues to grow in importance and has increasing acceptance as a general model. Cross-site request forgery (CSRF), for example, is much more difficult with session ID tokens in all transactions.

    Avi Bryant speculated that if he were to build the next version of Seaside, or some Seaside-like framework in the current web and browser environment, he would include a JSON-builder with callbacks, and he would drop from the framework methods that have been demonstrated to be superfluous for recent (2010) browsers, in the same way that various historical conceptions were dropped during the original creation of Seaside. He would drop Seaside’s components and continuations, Seaside’s server-side canvas API, while retaining Seaside’s callback and session token ID model in a re-designed framework.

    Selected quotations from “Smalltalk and Big Data”

    • “I may be saying Seaside is obsolete, but I have also said at a Rails conference, ‘Rails is obsolete‘ and I have also said at a Django conference, ‘Django is obsolete‘, because the fact is that none of the web frameworks out there right now are built with this architecture in mind. We still have an opportunity with Smalltalk to get out ahead, and still be in the forefront of web framework design. But we can’t rest on our laurels with what was the forefront of web framework design five or ten years ago.”
    • “I believe that there is a big difference between something that was designed for one architecture and has been adapted to a new one, and something that has been designed for a new architecture from the ground up. I believe if we tried [for] a clean-slate redesign of Seaside, not trying to keep any kind of support for the older architecture, that we would find new and better ways of doing things than when we were trying to graft something new onto what’s already there [in Seaside].”
    • Burn the diskpacks
    • “A lot of the original design of Seaside was about throwing away what people believed to be important constraints: ‘You have to have shared nothing, you have to have clean URLs’ “
    • “Seaside was an exercise in: ‘What if we throw away those constraints? What do we do, where to we end up, where do we go?’.”
    • “What I’m saying is it’s time to throw away the constraints of ‘we’re going to generate the HTML [on the server], we’re going to have a server-side component hierarchy.’ “
    • “If we throw away those constraints, then where do we end up? I’m pretty sure it will end up in some place better than if we keep those constraints.”

    • Big data at Twitter background: Twitter’s analytics processes are described in a couple of presentations by Kevin Weil, who talks about Hadoop and MapReduce, and how (as of October 2010) 12 terabytes of daily data (tweets, time-stamps, followers, retweets, logs, etc.) were analyzed.
    NoSQL at Twitter InfoQ (video, 56 minutes) Strange Loop 2010, St. Louis (October 14, 2010)
    Hadoop and Pig at Twitter (video, 26 minutes) (slides) Kevin Weil, Hadoop Summit 2010 (June 29, 2010)
    • Link to all Smalltalk Solutions (STS) 2011 presentations: videos and slides, and speaker bios
    • Comment by Joachim Tuchel: Seaside without Continuations? (April 27, 2011)

  • Rails is obsolete (but so’s everything else)
    Avi Bryant – Presented at GoGaRuCo 2010 – Golden Gate Ruby Conference (September 18, 2010) San Francisco, California.
    • Avi Bryant’s description of the talk:
    • Video: Rails is Obsolete (But So’s Everything Else) (36 minutes) (video released April 11, 2011)Selected quotations from “Rails is obsolete (but so’s everything else)”

      • “Web apps do not work the way they did in 2004.”
      • “How should we change the 2004 design [of Rails] to work for 2010 web apps?”
      • “It comes down to whether you care that there’s a bunch of stuff in your framework that is no longer useful, and whether you believe that that actively gets in the way. I believe that it is important to strip things down to the core of what you’re actually using…and I think that that probably leads to more interesting developments. If you take the step of throwing away views and controllers, then there’s a sort of a vacuum there that you are going be to actively working to fill. If you say, ‘Well, OK, I won’t use that part of the framework,’ the potentials for surprising elegance are probably less.”
      • “My esthetics are towards pushing the envelope…”
      • “I would argue that the most interesting new designs happen when you go back and throw away the old design decisions because your constraints have changed, and I so am loathe to continue to take on the constraints that I am hoping we are are rid of.”
  • Django is obsolete (but so is everything else) Avi Bryant on
    Avi Bryant – Keynote at DjangoCon 2009 Django Conference (September 8, 2009) Portland, Oregon.
    Outlining the experience of developing Trendly, Avi describes the inadequacies of the architecture of his own creation, Seaside Smalltalk web application framework, and by extension the approach of all other server-centric web application frameworks, in failing to fully accommodate complex client-side asynchronous JavaScript / JSON interactions along with client-side page and graphics generation for web applications. Plus a demonstration of the Clamato Smalltalk to JavaScript compiler, which was created to produce Trendly.
    • Video: Django is obsolete (but so is everything else) (48 minutes)
    • Summary and commentary (and links to others’ DjangoCon presentation slides) by Ted Leung: DjangoCon 2009
  • Failure: An Illustrated Guide
    Avi Bryant – Presented at FutureRuby (July 12, 2009) Toronto, Canada.
    On the many iterations involved in successfully conceiving, developing and launching Trendly, a web-traffic data analysis tool; the changing implementation languages include JavaScript, Java, and Smalltalk. A description of why the Seaside Smalltalk web application framework was ultimately abandoned for Trendly.
    • Video: Failure: An Illustrated Guide   InfoQ   (22 minutes)
  • Avi Bryant on Trendly, Ruby, Smalltalk,  JavaScript and Clamato
    Interview with Avi Bryant by Werner Schuster at FutureRuby (July 9-12, 2009)  Toronto, Canada.
    Describing the conceptions used in time-series analysis program Trendly, the multiple implementations and rewrites to originally create Trendly (originally termed “DSHBRD” for “dashboard”), and the amalgamation of programming languages (Smalltalk, Ruby, Java, JavaScript) used to make Trendly, and the reliance on client-side JavaScript outside of a web application framework such as Seaside. Trendly generates its HTML from the client side, using JavaScript. The interview has an aside on time series statistics; details the invention and implementation of Clamato, an in-browser Smalltalk-to-JavaScript compiler used to produce Trendly. Also a survey of Squeak Smalltalk and related communities of interest.
    • Video and transcript: Avi Bryant on Trendly, Ruby, Smalltalk and JavaScript InfoQ (37 minutes)
  • Speeding Ducks
    Avi Bryant – Presented at JAOO Sydney 2009 , Sydney Australia (May 5-8, 2009) and also at JAOO Brisbane 2009 (May 11-14, 2009). (Organized by the since-renamed “GotoCon”)
    On the potential for Ruby, JavaScript and other dynamic languages to make use of the research and implementation work in Smalltalk and Self.
    • Slides: Speeding Ducks
    Avi’s description of the talk, in the talk’s abstract:

    • “There is a common misconception that dynamic, “duck typed” object-oriented languages are inherently slow. History shows otherwise. Starting with the advances made by implementations of historically-important languages such as Smalltalk and Self, we will discuss how these techniques are being, should be, or could be applied to current dynamic favorites such as Ruby and Javascript.”

    Also at these two Australian conferences he gave a talk entitled
    1,001 Iterations: Product Design, Illustrated, an earlier version of the talk on describing developing Trendly that was presented two months later at the Future Ruby Conference, called “Failure: An Illustrated Guide”.

  • Turning the Tables: Moving Beyond Relational Storage
    Avi Bryant, MeshU 2008 (May 20, 2008) (The day before Mesh Conference) Toronto, Ontario Canada .
    A workshop tour through design considerations for non-relational database choices, and when to consider memory store, flat files, object database, or a data service like Amazon’s SimpleDB and Google’s AppEngine. (He also gave an early demo of his work to create a pre-alpha version of Gemstone’s MagLev at this conference, which also demo’d at RailsConf 2008 a week later.)
  • Ruby and other gems (Data persistence using Gemstone)
    Avi Bryant’s blog – HREF Considered Harmful (March 08, 2008)
  • Chatting with Avi Bryant
    Interview of Avi Bryant by Fabio Akita (Posted December 15 and 22, 2007).
    A text interview outlining the conceptions used for Seaside, the implementation of DabbleDB, the process for bootstrapping the DabbleDB startup, and commentary comparing Ruby and Smalltalk.
    Part 1 – Chatting with Avi Bryant
    Part 2 – Chatting with Avi Bryant
    An excerpted quotation of Avi Bryant from the interview:
    “The main thing I think WebObjects did right was to focus on the state and behavior of the application, rather than on the mechanics of URLs and HTML and HTTP requests. So rather than worry about what a field was named, you would just say ‘this field is bound to this instance variable in my model’, and rather than worry about what URL a link went to, you’d say ‘this link triggers this method on my page object’. Transitioning between pages was done by constructing a new page object and setting it up directly in Java, rather than constructing a URL that was going to be parsed to build a page. That directness and general style is something that very heavily influenced Seaside.”
  • FLOSS Weekly 21: Avi Bryant on Seaside Podcast (November 23, 2007)
    Host interviewers Randal Schwartz and Leo Laporte.
    This Week in Tech (TWiT). (Running time 59 minutes.)
    Avi describes his progression to primarily using Smalltalk and his co-creation of the Seaside Smalltalk web application framework in the pre-Ruby on Rails era.  His explorations were inspired by Apple’s pre-Java Objective-C version of WebObjects, with an initial exploration in creating the Ruby web application framework Iowa (which was abandoned in favor of relying on Smalltalk and developing Seaside). Seaside, as an open source project was taken over by the larger community during the course of version 2.  Interestingly, in passing, Avi admits he’s not much of an implementer of tests while programming in Smalltalk.
    • Podcast:
  • Web Heresies: The Seaside Framework Avi Bryant
    Avi Bryant’s talk at OSCON 2006 – O’Reilly Open Source Convention, Portland Oregon (July 27, 2006)
    An introduction to Seaside and its architecture, describing its original design using closures and shared state. Surveying the architecture of Canvas, Component, Callback and Continuation models: how that Seaside’s HTML generation API frees the programmer from the presentation layer details; how continuations allow freedom from thinking about state-machine workflow, enabling application modularity.
    Avi’s OSCON 2006 report to the Seaside email list. The presentation slides were not published.
    Commentary on Web Heresies session, by Kevin Yank, Sitepoint (July 28, 2006).
  • An Introduction to DabbleDB Avi Bryant
    OSCON 2006 O’Reilly Radar: The Executive Briefing (July 25, 2006)
    Brief presentation on DabbleDB. Sharing the stage with with presentations by other startups:

        Tim O’Reilly, O’Reilly Media, Inc.
        Avi Bryant, Dabble DB
        Kevin Cochrane, VP of Web Content Management, Alfresco;
        Adrian Holovaty, Editor of editorial innovations, Django
        Dave Rosenberg, Founder and CEO, Mulesource
        Javier Soltero, CEO, Hyperic
        Mark Spencer, President, Digium
        Jeff Waugh, Consultant, Gnome/Waugh Partners
      Scott Yara, President and Co-Founder, Greenplum
  • Web application frameworks in Smalltalk and Common Lisp
    Avi Bryant (Seaside) & Marc Battyani (Fractal Framework)
    Vrije Universiteit Brussel, Belgium   (April 26, 2005)
    Avi Bryant’s abstract of of the talk:

        On the web, abstraction is a dirty word. The dominant paradigms and philosophies of web development — CGI, Servlets, Server Pages, REST– provide only a thin wrapper around the low-level details of HTTP, and encourage you to use the rough stones of the transport protocol as the direct building blocks of your application. Web developers by and large reject any further abstraction in the way that assembly hackers once rejected structured programming: it’s too inflexible, uses too many resources, and above all, it doesn’t let you see what’s *really* going on. As a result, web applications suffer the same problems now that assembly language programs did years ago; they’re fragile, verbose, difficult to maintain and ill-suited to reuse.

    That’s not to say that better abstractions aren’t available. The Lisp and Scheme communities have been working on them for years. Paul Graham’s ViaWeb pioneered the use of closures, not query parameters, to capture application state in each link. Christian Quiennec showed how to use first class continuations to invert the flow of control of HTTP and put the server back in the driver’s seat. Macro packages like htmlgen bring HTML into the language itself, opening up much more than a template system can provide. Meanwhile, object-oriented packages like WebObjects have demonstrated how to decompose the web page into a tree of stateful, interacting objects, allowing a finer granularity of development.

    Seaside combines these ideas and others with the rich development environment of Smalltalk to provide a stable, complete, and innovative web application platform. This talk will introduce Seaside, and will focus in particular on the ways in which these abstractions can be leveraged to enable reuse: how to use closures, continuations, and intelligent HTML generation to destroy the intra- and inter-page coupling that is holding web development back.

    • Marc Battyani on Lisp Fractal Framework. Slides: Fractal Framework (Powerpoint)
    and an article with more detail: A Framework for Automatic Web Application Generation
    • Comment on the topic by Bill Clementson: Using a Lisp Web Server Behind Apache

  • Making Object Relational Data First Class
    Smalltalk Solutions (STS) 2004, Seattle, Washington, USA. (May 4, 2004)
    Abstract of the talk (alternative link):

        ROE, the Relational Object Expression library, models relational queries as first class Smalltalk expressions. This has several advantages over using SQL strings directly:
        • queries can be built using familiar Smalltalk syntax and without worrying about binding and escaping data
        • queries can be easily composed, so that a complex query can be built up over several methods, none of which know any details about the others
        • queries look like ordered collections of tuples, but with most operations other than #do: defined lazily; for example, #copyFrom:to: won’t pull in any data, but will simply produce a new query with an extra clause
        • queries maintain a rich set of metadata, so that, for example, the columns of any query can be automatically grouped by table and its rows mapped properly into objects.

    ROE can either be used directly as a better interface to relational databases, or as a new foundation for object/relational mapping tools. Currently, it has only been tested using PostgreSQL and Squeak Smalltalk, but it could easily be ported to other platforms.

  • A Walk on the Seaside (Tutorial)   Avi Bryant   (2003 & 2004) (last updated for version 2.5 of Seaside)
  • HREF Considered Harmful: Structured Web Development with Seaside Tutorial
    Avi Bryant & Julian Fitzell   Smalltalk Solutions (STS) 2003, Toronto, Ontario, Canada. (July 14, 2003)
    Workshop description• Avi Bryant comments on WebObjects by Apple/NeXT (in Java) and IOWA (in Ruby)   (August 18, 2003)
  • Initial pubic description of Seaside   (2002) ( archived page)
    Avi Bryant & Julian Fitzel begin supporting Seaside and marketing development of applications using Seaside. Links to initial documentation with architecture and design overview for developers using Seaside.
  • Explicit Programming
    1st International Conference on Aspect-Oriented Software Development
    Enschede, Netherlands (April 23 – 26, 2002)
    Presentation of the paper Explicit Programming by Avi Bryant, Andrew Catton, Kris De Volder, Gail C. Murphy (all then of University of British Columbia, Vancouver BC, Canada). Published in AOSD 2002 – Proceedings of the 1st International Conference on Aspect-Oriented Software Development. ACM – Association for Computing Machinery.
    Abstract excerpt:
    “Many design concepts can be expressed only indirectly in source code. When this occurs, a single concept at design results in a verbose amount of code that is scattered across the system structure. In this paper, we present explicit programming, an approach that enables a developer to introduce new vocabulary into the source to capture a design concept explicitly. … We believe explicit programming provides a useful engineering point, balancing modularization and separation in (at least) two cases.”
    Explicit Programming (PDF)
  • Explicit Programming: Improving the Design Vocabulary of Your Program
    Avi Bryant, Andrew Catton, Kris De Volder and Gail Murphy
    (Demonstration) OOPSLA 2001 (Tampa Florida)
    Explicit Programming demo proposal (PDF) (via Kris De Volder)

Leslie Lamport on distributed systems

An interview with Leslie Lamport by Mihai Budiu (May 3, 2007)
A transcript of an interview with Leslie Lamport, surveying Lamport’s wide-ranging activities in distributed systems.

The Introduction to the interview:

Leslie Lamport is a legendary figure of computing. While he is probably most well-known because of the open-source typesetting LaTeX macro package and book, arguably his most important contributions are in the domain of distributed systems; this is also the subject of this interview.

Interviews with Paul Graham of Y Combinator

Links to several video recordings of, or articles about Paul Graham. Perhaps most interesting is “Office Hours with Paul Graham” at TechCrunch Disrupt 2011, showing how he gets founders to focus on the product’s market, and the population of potential users who will buy the application or service.

Y Combinator Is Boot Camp for Startups
By Steven Levy, Wired Magazine, June 2011 (May 17, 2011)

How Y Combinator Helped 172 Startups Take Off
Paul Graham interview – (Feb 2010) [transcript & video; run-time about an hour]

Paul Graham’s Checklist, Would You Make The Cut?
by Evelyn Rusli, July 30, 2010, TechCrunch

Office Hours with Paul Graham, Y Combinator
TechCrunch Disrupt Conference 2011, June 2011, New York City.

Paul Graham On Founder Power And The Rise Of New York Venture Capital (June 2011)
TechCrunch Video:

A few of DabbleDB’s foundations

Modest and incomplete links to conceptual descriptions and publicly available components created or used by the developers in implementing the online database DabbleDB, along with a modest description of a couple of aspects of non-public components. Embedded in Avi Bryant’s numerous talks are passing references to DabbleDB’s design and implementation, especially during its development and early public use, 2005 through 2008: Avi Bryant’s Presentations. The DabbleDB blog outlines some of the thinking that went into development.

Seaside Smalltalk web application framework
History of Seaside Smalltalk web framework
Initially created by by Avi Bryant, Julian Fitzell and others.
(first publicly released as version 0.9 in 2002)

Winning the Application Server Arms Race: Using Smalltalk to Redefine Web Development (PDF)
Avi Bryant (keynote), Smalltalk Solutions Conference (STS) 2004, Seattle WA (May 2004)
(Summary of keynote speech, starting on the 3rd or 4th page.)
Also, James Robertson’s summary of Avi’s presentation (May 3, 2004)

  • “Seaside is to other smalltalk web toolkits as Smalltalk is to most other Object Oriented programming languages; it’s as simple as that.” Cees de Groot.
  • “Seaside is not (just) better, but better in the same way that Smalltalk is better, by using live objects not dead data.” Avi Bryant

Monticello Smalltalk version control
Motivations behind Monticello version control system for Smalltalk (Colin Putney & Julian Fitzell, July 24, 2003)
Monticello was initially worked on by Avi Bryant, Colin Putney, Julian Fitzell and others.

CSV parser
Parsing comma separated values (CSV) from a file or data stream. Avi Bryant published a CSV parser-reader in 2005 on the Smalltalk open source repository, SqueakSource.

Data persistence
A custom object-oriented data base was developed, which resides in the user’s Smalltalk image. When active on the server, the data is loaded in RAM, with the image. When swapped out, the entire image and data is saved to disk. Apparently commercial OODB backends were considered, such as Gemstone, but licensing costs were too high to incorporate into DabbleDB.
• Does DabbleDB use a database? (May 17, 2006) (Seaside mailing list.)
• Ask YC: Object databases (October 30, 2007)
• Examples of in-image data persistence: Ramon Leon, Simple Image Based Persistence in Squeak (January 14, 2008); and Sean DeNigris, Smalltalk Simple Image-based Persistence (May 30, 2011).

Easy migration of data
Data Refactoring for Amateurs (slides) Avi Bryant – Dynamic Languages Symposium 2006

Rapid development
Avi Bryant estimated in a 2006 interview that in the vicinity of two and a half man-years of effort went into the initial launch of DabbleDB.

Why network effects are such a big deal

Iron Laws of Network Cost Scaling
Eric Raymond (May 26, 2010)

1. Upgrade cost per increment of capacity decreases as capacity rises.
2. Network costs scale primarily with the number of troubleshooters required to run them, not with capacity.
3. Under market pressure, network pricing evolves from metered to flat-rate.

(Initial) Ideas are nothing: people and implementation everything.

“Don’t worry about other people stealing your ideas. If your ideas are any good, you’ll have to ram them down people’s throats.”
Howard Aiken

Here are links to articles and books detailing the view that you and the people you have around you, along with your continuing intent, focus and perseverance are fundamentally important in accomplishing and improving a project, and that your (initial) idea for a project is merely the seed to further evolutionary and transformative activity. (An occasionally updated post.)

Jon Gertner “The Idea Factory: Bell Labs and the Great Age of American Innovation.”cr

Reviews of two 2010 books on the environment surrounding idea development, implementation and innovation:

Where Good Ideas Come From: The Natural History of Innovation by Steven Johnson (Riverhead)

The Innovator’s Way: Essential Practices for Successful Innovation by Peter J. Denning and Robert Dunham (Massachusetts Institute of Technology Press)

Where Do Good Ideas Come From? by Richard Katzev, Marks in the Margin (November 4, 2010)

People and Places That Innovate by Nancy F Koehn, New York Times (September 5, 2010)

Ideas are worthless. Execution is everything.

The Value of Ideas Scott Adams  (June 4, 2010)
“You have to let an idea evolve, change and even fail…”

Milton Glaser:
Fear of failure (video) 7:30

“The model for personal development is antithetical to the model for professional success…

The real embarrassing issue about failure is your own acknowledgement that you are not a genius. That you are not as good as you thought you were. And, doing a project that is truly complex, and difficult, tests your real ability…
The thing we most fear in regard to failure is our own self-acknowledgement that we really don’t exactly know what we’re doing. There is only one solution. You must embrace failure. You must admit what is. You must find out what you’re capable of doing, and what you’re not capable of doing. That is the only way to deal with the issue of success and failure, because, otherwise, you simply would never subject yourself to the possibility that you are not as good as you want to be, hope to be, or as others think you are…

My advice about failure is that there is only one way out: Embrace the failure.”

Your idea sucks, now go do it anyway
Jason Cohen A Smart Bear (September 19, 2009)

Get Good at Idea Generation   James Hague   Dangum   (March 27, 2014)
“The point…isn’t just to solve your current problem, but to change your thinking over time. To get your mind working in a unique way, not just restating what you’ve seen around the web. Every so often you’ll have a small breakthrough of an idea that will become a frame for future solutions. Later you’ll have another small breakthrough that builds on it. Eventually you’ll be out in a world of thought of your own making, where you’re seriously considering ideas that aren’t even in someone else’s realm of possibility.”

Casey Neistat: Ideas are Easy – Execution is Everything
Presented at the Core77 Conference, June 2014 (30 minute video presentation).
Casey describes his personal and career background, emphasizing the importance of learning by doing. Quotations: “I never learned the right way to do things.” “The Thing I believe in more than anything else is execution.”

Cultivate Teams, Not Ideas
Jeff Atwood – Coding Horror (January 25, 2010)

Startups in stealth mode need one piece of advice: Just Stop.
Jason Freedman – humbledMBA (February 15, 2011)

Got a Great Idea? Tell Everyone!
David H. Freedman – New York Times (February 21, 2011)

Why smart people defend bad ideas
Scott Berkun (April 2005)

Top ten geek business myths
Ron Garret (fka Erann Gat) (October 1, 2006)

8 things I wish I knew before starting a business
Don Rainey – VentureBeat (August 19, 2010)

This is all your app is: a collection of tiny details.
Will Shipley, quoted in Daring Fireball (August 15, 2007)

How to bring ideas to life PDF (January 2011)
Idea Mensch

The Shortcut We Took to Build Yipit in Three Days
Vinicius Vacanti, co-founder of (December 20, 2010)

They will steal your idea: They cannot steal what really matters
Jason Baptiste (July 20, 2010)
“They cannot steal your…long term vision; domain expertise; market failure driven pivots; talent; analytical insights; passion for great service; passion to make this idea a reality.”

Characterizing people as non-linear, first-order components in software development
Alistair A.R. Cockburn
Humans and Technology – HaT Technical Report 1999.03, (Oct 21, 1999).
Presented at the 4th International Multi-Conference on Systems, Cybernetics and Informatics, Orlando, Florida, (June, 2000)

Five Reasons to Drop Non Disclosure Agreements
Eoghan McCabe (April 22, 2008)
“Whatever your idea, however smart it is, at least ten people have already had it. What makes you special is that you’re doing something about it now.”

Success, and Farming vs. Mining
Will Shipley (April 2, 2011)

A Student’s Guide to Startups
Paul Graham (October 2006)
Graham essentially says among the biggest challenges in a startup is to find co-founders, and that the school environment is an excellent one to discover and assess your potential cofounder.

Why Smart People Have Bad Ideas
Paul Graham (April 2005)
“The hard part about figuring out what customers want is figuring out that you need to figure it out.”

How to Start a Startup
Paul Graham (March 2005)
All of the below quotations are from this essay.

The Idea

“In particular, you don’t need a brilliant idea to start a startup around. The way a startup makes money is to offer people better technology than they have now. But what people have now is often so bad that it doesn’t take brilliance to do better.”

“An idea for a startup, however, is only a beginning. A lot of would-be startup founders think the key to the whole process is the initial idea, and from that point all you have to do is execute. Venture capitalists know better. If you go to VC firms with a brilliant idea that you’ll tell them about if they sign a nondisclosure agreement, most will tell you to get lost. That shows how much a mere idea is worth. The market price is less than the inconvenience of signing an NDA.”


“What matters is not ideas, but the people who have them. Good people can fix bad ideas, but good ideas can’t save bad people. ”

“For programmers we had three additional tests. Was the person genuinely smart? If so, could they actually get things done? And finally, since a few good hackers have unbearable personalities, could we stand to have them around?”

What Customers Want

“It’s not just startups that have to worry about this. I think most businesses that fail do it because they don’t give customers what they want. Look at restaurants. A large percentage fail, about a quarter in the first year. But can you think of one restaurant that had really good food and went out of business?”

“It’s the same with technology. You hear all kinds of reasons why startups fail. But can you think of one that had a massively popular product and still failed?”

Raising Money

“Talk to as many VCs as you can, even if you don’t want their money, because a) they may be on the board of someone who will buy you, and b) if you seem impressive, they’ll be discouraged from investing in your competitors. The most efficient way to reach VCs, especially if you only want them to know about you and don’t want their money, is at the conferences that are occasionally organized for startups to present to them.”

Lawrence Krauss on Cosmology

A Universe From Nothing‘ by Lawrence Krauss, AAI 2009 (approximately one hour).

October 21, 2009 — Physicist Lawrence Krauss talks about the current picture of the universe and how it could have come from nothing. Via The Richard Dawkins Foundation for Reason and Science

DabbleDB continues

Update edit, March 17, 2011:
Smallthought Systems, the creator of DabbleDB, announced the closing of the the online database application DabbleDB on March 17, 2011, and an end-of-service date of May 18, 2011. The shutdown occurs about eleven months after Twitter purchased Smallthought Systems, Inc.

Background on the founders and development of DabbleDB and other Smallthought Systems applications:
Avi Bryant’s Presentations
A few of DabbleDB’s foundations

The DabbleDB blog continues to be online
and the documentation at “” can still be found via

Update edit on December 3, 2011:
The user forum finally went dark in November 2011.

June 11, 2010
I have been an enthusiastic user of Smallthought Systems’ DabbleDB, as an outstandingly-implemented online web-database, suitable for wide use by non-programmers. I had a number of clients using it. I became active on the DabbleDB user-forum to better describe for myself and for my clients the actual limits of DabbleDB and what it can and cannot do. Here’s the video demo: I admit that DabbleDB inspired me to learn and use Smalltalk and Seaside.

For the time being, I’m sanguine about Twitter’s purchase of Smallthought Systems, and the future of DabbleDB. Twitter wants the brains of the Smallthought team for analytics apparently. See Twitter’s blog post describing the purchase. Smallthought Systems co-founder Andrew Catton has via the DabbleDB forum stated the intention to keep operating for the near-term, and emphasized that a shut-down clock was not running, merely, not accepting new accounts, and committing to 60 days notice, when and if a significant change arrives. That’s fair, given the circumstances they put themselves into. They could have simply closed the project down.

The founders put five years into DabbleDB, and it’s a viable platform, and I’m sure they don’t want it to die. I speculate it has sufficient revenue to sustain operations with a healthy surplus at this point–so I think it is valuable to some interested party. I think they need only to find a home with a team of Smalltalk, Seaside, JavaScript, developers, and the financial backing to finance it.

Separately, perhaps the software, as distinguished from the online service, could be an item of interest for a non-operating company like Gemstone, with their enterprise-level Smalltalk-based object-oriented data and server technology. Gemstone was acquired by by VMWare’s SpringSource division in May, 2010; perhaps it might be a good fit to market DabbleDB as installable software that would increase demand for their database backend. See:

I’m sure there are others that would like to take DabbleDB forward.

I was, prior to the acquisition of Smallthought Systems, Inc. by Twitter, working on writing a comprehensive set of the “missing” DabbleDB documentation. That project was suspended pending a commitment that DabbleDB would continue to be maintained and offered. For those who care, my scattered advice and documentation can be found on the DabbleDB user forum, via the user “Redtexture“; a selection of my more significant and popular posts used to be found at the DabbleDB Frequently Asked Questions sub-forum, before it went dark.

Smallthought Systems purchased by Twitter

Comments by members of the DabbleDB team at Smallthought Systems, and by the Analytics section at Twitter, on the purchase of Smallthought Systems by Twitter in June 2010.

More Than Dabbling
Kevin Weil – Analytics Lead at Twitter, Twitter Blog, Thursday, June 10, 2010

Life, Changing
Avi Bryant, HREF Considered Harmful (Blog), June 10, 2010

Andrew Catton, The Dabble Blog, June 10, 2010

Migrations and hatching: This appears to be a year of change.
Luke Andrews, Attaboy (Blog), June 10, 2010

Twitterers (via Avi Bryant)
Ben Matasar, June 10, 2010

Twitter Buys an Analytics Company
By NICK BILTON, New York Times, June 10, 2010

Twitter Analytics No Longer An Afterthought With Smallthought Buy
Leena Rao, TechCrunch, Jun 10, 2010

DabbleDB Acquired by Twitter
James Robertson, Smalltalk with James Robertson (Blog), June 10, 2010

DabbleDB’s venture investors

(Updated September 22, 2011)

In a June 2006 transaction, Series A venture financing of Smallthought Systems was completed. The specific amount invested was not confirmed by the participating parties, but rumored to be in the vicinity of two-million dollars. The transaction was facilitated by Paul Kedrosky, a Canadian based in Silicon Valley, California.

The fraction of shares sold in the financing was not disclosed, and no total valuation for the company was reported or even speculated on in the press reports for the transaction. Subsequent to the deal, Kedrosky became a board member of Smallthought Systems, and became a partner of Ventures West, the Vancouver investment group participating in the deal. The founders of DabbleDB were reported as taking their time, assessing the potential for good advice and future contacts; they had turned down a number of VC firms prior to the Kedrosky/Ventures West deal.

Avi Bryant also disclosed in a December 2007 interview that Tim Bray was also an investor. Bray apparently made his investment on September 6, 2006, and did not disclose the amount invested. On August 24, 2011, Tim announced he had sold his shares in a transaction facilitated by SharesPost , and Twitter had exercised its 30-day first-refusal rights to buy the shares after a bona fide offer had been made by another buyer.

Okay, I guess I’ll take your money Mathew Ingram June 27, 2006 (formerly with Globe and Mail, departing January 2010; Ingram has also been an organizerfor the Mesh Conference in Toronto)

VCs Dabble with Canadian Web 2.0 startup
Mathew Ingram
Globe and Mail – Toronto Canada
Published on Tuesday, June 27, 2006; updated Monday, April 06, 2009


An expert knows three things of great value:
1) What all the mistakes look like.
2) That they are mistakes.
3) That you don’t have to make them.
Via Tim Ottinger, Agile Otter blog

Jim Coplien on conceptions in Object Oriented Programming: DCI, MVC

Links to several presentations that can serve as an introduction to Data, Context and Interaction (DCI) architecture .

The presentations are either by or interviews of James Coplien, along with links to works mentioned. I extracted a set of selected quotations from one interview. Jim Coplien is the co-creator of Data, Context and Interaction architecture in collaboration with Trygve Reenskaug. Trygve Reenskaug is the creator of Model View Controller (MVC) architecture.

In the (below linked) 2010 London QCon interview, Coplien discusses conceptions and misconceptions in current object-oriented programming culture and how technique and methodology fail to substitute for the thinking actually required to accomplish a project. He also describes how languages can affect conceptualization, and argues that some popular languages focus excessively on classes instead of working objects. He briefly discusses DCI, and the state of Agile development.

It is interesting that JavaScript, with a prototypeinheritance model, satisfies Coplien’s desire for a non-class-based object-oriented programming language. JavaScript inherited its prototypal design from the Self language; Self can be characterized as a prototypal dialect of Smalltalk. There is also a Smalltalk project called Protalk, which is a prototypal extension of class-based Smalltalk.

In a prototypal language, taxonomy and classification of a classes is not necessary; in creating a new object, one merely constructs the object with the desired properties. One can create new instances that inherit the properties from an original model object; and one can differentially inherit or modify a new object’s properties as desired, at the time of creation.

Jim Coplien: Why DCI is the Right Architecture for Right Now
Interview with James O. Coplien by Sadek Drobi
at QCon 2010 London (May 29, 2010)
• Video (52 minutes) and transcript:

Handling architecture in the agile world
Jim Coplien at JAOO 2008, Aarhus Denmark.
• Video presentation: Not your Grandfather’s Architecture: Taking Architecture into the Agile World (47 minutes)
• Slides: Not your Grandfather’s Architecture: Taking Architecture into the Agile World

Doing OO the right way – Interview with James O. Coplien
Interview by Kresten Krab Thorup of Trifork, at JAOO 2008, Aarhus Denmark.
• Video (14 minutes):

The DCI Architecture: Supporting the Agile Agenda – by James Coplien
Presentation geven at Øredev 2009 Developer Conference –
• Video (52 minutes): The DCI Architecture: Supporting the Agile Agenda (November 6, 2009)

A few excerpts from the QConLondon interview:

The Smalltalk people, when they put together Smalltalk originally the computational model was exactly right, in terms of thinking in terms of objects. And then they screwed it up with the language. The language is so class focused! Most languages that we’re saddled with today had made this error.

I really don’t think that language constrains or shapes that much about what a great designer can express or does express. I think language is greatly overrated and we need to look beyond language for the solution. Language can help. Good languages can entice people and excite people and open minds, but it’s not enough. It really comes to changing world views.

Professionalism to me is that on a much higher level of how I am going to be responsible or answerable to society for the code I built. That has to do with a lot of thinking and a lot more than just technique can give me. This gets into morality. This gets into value systems. This gets into the systems thinking and for systems thinking you need to get beyond where we are with programming languages today. This is one of the reasons I’m excited about architecture these days. That starts to get us beyond the programming language limitations and into more systems thinking.

Procedural programming still has its place for some definition of procedural programming. If it quacks like an algorithm and flies like an algorithm, and it walks like an algorithm, I should be able to deal with it as a programmer, like an algorithm. That’s what DCI is about. It is restoring the identity of that algorithm while still honoring all of the principles of coupling and cohesion of the object paradigm.

So I’m trying to say “Let’s think in terms of architecture. Let’s think in terms of domain knowledge. Let’s think in terms of the mental models of the users of the system and the domain experts and do this at a level of systems thinking.” That perfectly complements the things that Bob [Martin] talks about most of the time.

Good interface design is really hard and there are very precious few people who are skilled in that in today’s world and we need more of these people.
Are you suggesting that usability starts from code that a programmer writes?
I don’t know if it starts at code but it stops at code. It involves code. Kent Beck used to say “You cannot hide bad code behind a good interface” and I totally agree with him.

Cited articles, people and topics mentioned in the presentations
• The DCI Architecture: After 30 years of Model-View-Controller, the other shoe drops. Gertrud & Cope (2011)
• The DCI Architecture: A New Vision of Object-Oriented Programming
Trygve Reenskaug and James O. Coplien. (March 20, 2009)
• Data Context and Interaction (Wikipedia)

Trygve Reenskaug Department of Informatics, University of Oslo
• Trygve Reenskaug is the inventor of the Model-View-Controller (MVC) architecture, which separates data and its processing from presentation, and Object Oriented Role Analysis and Modelling OOram
• Trygve Reenskaug
The second release of the DCI paradigm and BabyIDE. This report includes Squeak/Smalltalk example code with comments. (74 pp.)
A DCI Execution Model Trygve Reenskaug (PDF)
DCI – A new Role Based Paradigm for specifying collaborating objects Trygve Reenskaug.
• Video presentation (1 hour, 45 minutes) DCI: Re-thinking the foundations of object orientation and of programming Trygve Reenskaug. (November 6, 2009)

Gerald M. Weinberg – Books, Articles, Interviews on Quality
Diana Larsen, on the importance of co-located team members (Partnership & Possibilities blog)
The New New Product Development Game Hirotaka Takeuchi and Ikujiro Nonaka. Harvard Business Review (January–February 1986) (Complete copies of this article can be found on a number of university web sites.)

• James Coplein computer science publications, a bibliography.
   DBLP Computer Science Bibliography, a project of Trier University and Schloss Dagstuhl – Leibniz Center for Informatics.
• Jim Coplien work has included software architecture, design, and implementation in the Electronic Design Automation (EDA) industry as well as at Bell Labs Research; he is presently associated with Gertrud & Cope.
• Pattern Foundations – James O. Coplien
Video: Pattern Foundations (52 minutes)
Presented November 12, 2010 at Øredev 2010 Conference

• “The tools and materials metaphor”

The United States Federal Clean Water Act, Section 311 and the Oil Pollution Act

The following is an undated but current (as of May 2010) memorandum issued by the US Federal Bureau of Land Management.  It is in the public domain as a work of the U.S. Government. The memorandum is chapter eight of a larger work surveying federal water statutes, which include the Clean Water Act, the Coastal Zone Management Act, and the Oil Pollution Act. I provide a link to the larger work below.

Useful to know, the Federal Bureau of Land Management’s National Operations Center, Division of Resource Services (NOC-DRS) was prior to October 1, 2007 called the National Science and Technology Center (NSTC).

Federal Water Quality Law Summary (BLM)

Chapter Eight: Oil Spills, Clean Water Act § 311, and the Oil Pollution Act
also (PDF version)

(tags: CWA section 311 OPA)

Chapter Eight: Soil Spills, Clean Water Act § 311, and the Oil Pollution Act
I. Introduction

The CWA and the Oil Pollution Act (OPA) include both regulatory and liability provisions that are designed to reduce damage to natural resources from oil spills. Federal laws aimed at preventing and responding to oil spills represent Congress’s reaction to dramatic incidents causing environmental damage. Following oil well blowouts and oil spills in the late 1960s, Congress added § 311 to the CWA.1 Congress then expanded § 311 in 1978 by authorizing the government to recover the value of lost or damaged natural resources from those responsible for a spill. In response to the Exxon Valdez oil spill in Prince William Sound, Alaska, Congress enacted the Oil Pollution Act (OPA) of 1990.2 The OPA amended CWA § 311 and contains provisions applicable to onshore facilities and operations, including those on Federal lands.

Section 311, as amended by the OPA, provides for spill prevention requirements, spill reporting obligations, and spill response planning and authorities. It regulates the prevention and response to accidental releases of oil and hazardous substances into navigable waters, on adjoining shorelines, or affecting natural resources belonging to or managed by the United States. Section 311 works in conjunction with the program provided by the Comprehensive Environmental Response, Compensation, and Liability Act (CERCLA) for cleaning up hazardous substance spills. CERCLA addresses releases of hazardous substances to all environmental media including water. Therefore, both CERCLA and the CWA come into play when there is a discharge of hazardous substances to waters. Even though CERCLA does not supersede § 311, releases of hazardous chemicals are more comprehensively addressed under CERCLA, so efforts under § 311 tend to focus primarily on discharges of oil.
Read more of this post

Lookup categories in DabbleDB

As posted to the DabbleDB user forum, May, 2010 –

In DabbleDB terminology, a “category” is similar to a database table, with additional attributes unique to the DabbleDB database application.

A lookup category is a secondary linked category, connected to some primary category, constructed by the user. Using a lookup category can be a method to have data in a primary category entry’s field transformed, or translated into another value. A lookup category is DabbleDB’s version of a lookup table.

A lookup category turns out to be a frequent answer to a variety of questions appearing on this forum. There’s nothing particularly special about a lookup category, except that it is a required method to accomplish several kinds of active data mappings or translations within DabbleDB, for lack of another method to do so within the existing feature set. In a sense, every category linked to another category is a lookup category. As a linked category, using a link-to-entry type of field to make the connection, the desired field value is derived into the original primary category.

A lookup category permits the following:
• a text value to be interpreted as a number, perhaps for calculation elsewhere;
• or similarly, permits interpretation of numeric data as a text value, perhaps for concatentation elsewhere;
• enables deriving a second, third, or more values based on a single data entry value;
• permits revising a data conception using conditional-logic into a non-conditional conception, avoiding, for a fairly wide set of circumstances, DabbleDB’s lack of a conditional logic feature for data;
• conversion of a field of type “choice” into a choice-like field with the above translation abilities, while retaining most of the other attributes of the DabbleDB choice field, especially if using the “pages” data entry forms. A notable lack in such a conversion, is the inability to default a field to a particular value;
• and additional mappings of one value onto one or more other values.

A lookup category can be as small as one entry, and it can be large with hundreds or even thousands of entries.

Here’s a two-entry example, translating “yes” and “no” to numeric values. You could have your data entry form indicate “yes” or “no” for some easy data entry purpose, and behind the scenes, use the number in a formula, perhaps to multiply some number, where “yes” indicates no change in value, and “no” means zero out the value.

Text  Value
----  -----
No      0
Yes     1

Here’s a sketch describing how to convert from a checkbox field to a link to entry to lookup category.
Questions » Use Check Box or Choice as a number (March 2009) Http://

Here are a variety of examples that build on that illustrative sketch.

Questions » How can I deduct from a field depending on a status (December 2009)

Questions » Complex “IF” or “Case” formula? (February, 2010)

Questions » Force Invalid Entries (March 2010)

An example of a large lookup category relating to dates:
Creating an index of weeks based on a date field’s value (May 2010)