$1 Billion and Change

While getting $0.71 of change at a coffee shop today, I started to wonder just how much time is actually consumed by the act of “getting change”.

So I calculated it, and the answer is that $1 billion of time is consumed in the USA waiting for change.

That’s actually a bit smaller than I expected. And I calculate the total number of retail purchases at ~48 billion/year, so assuming $0.50 cents of change per purchase, it would cost consumers $24 billion per year to say “keep the change”.

I guess I’ll keep waiting for payment practices to change!

June 13, 2014 at 8:57:15 PM
1
retail sales = ($400 × 10^9) × 12
$4.80×1012
2
avg purchase = $30
$30.00
3
percent cash = 30%
30%
4
total cash purchases = retail sales / avg purchase × percent cash
4.8×1010
5
seconds per change = 4 seconds
4 seconds
6
time spent = total cash purchases × change
1.92×1011 seconds
7
total_hours = spent in hours
53,333,333.3333333333 hours
8
avg_wage = 20$ / hour
20 $/hour
9
cost = total_hours × avg_wage
$1.07×109

A* Interview #18(ish): Strongly-Typed Emacs Acolyte, Bodil Stokke

Follow Bodil on Twitter.

Check out some of her conference talks.

Use an Emacs starter kit to smooth the learning curve.

For an introduction to type theory, click here.

Or if you want to crack a turtle with types, read Types and Programming Languages.

Learn about the A* Series and see more interviews here.

/* change only these */
var youtubeID = “Zm3xjks7”;
var postID = “Bodil Stokke”;
/* change only these */

// DON’T CHANGE BELOW
$(“.video”).html(“

“);
var tag = document.createElement(‘script’);
tag.src = “http://www.youtube.com/player_api”;
var firstScriptTag = document.getElementsByTagName(‘script’)[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

function onPlayerStateChange(event) {
if (event.data ==YT.PlayerState.PLAYING) {
mixpanel.track(“Video played”, {
“youtubeID”: youtubeID,
“postID”: postID

});
}
if (event.data ==YT.PlayerState.ENDED || event.data==0) {
mixpanel.track(“Video ended”, {
“youtubeID”: youtubeID,
“postID”: postID
});
}
}

var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player(‘player’,
{
videoId: youtubeID,
events: {‘onStateChange’: onPlayerStateChange}
});
}

mixpanel.track(“Post viewed”, {
“id”: postID
});

A* Interview #16: StackOverflow’s all-time Python champ, Alex Martelli

Read some of Alex’s favorite monosyllabic books, Cod and Salt.

Listen to the Art of the Fugue on LinerNotes.

Check out Alex’s personal website.

And at his suggestion, sign up for Fitocracy and get yourself in shape!

Learn about the A* Series and see more interviews here.

/* change only these */
var youtubeID = “R6XSEfNqgZ4”;
var postID = “Alex Martelli”;
/* change only these */

// DON’T CHANGE BELOW
$(“.video”).html(“

“);
var tag = document.createElement(‘script’);
tag.src = “http://www.youtube.com/player_api”;
var firstScriptTag = document.getElementsByTagName(‘script’)[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

function onPlayerStateChange(event) {
if (event.data ==YT.PlayerState.PLAYING) {
mixpanel.track(“Video played”, {
“youtubeID”: youtubeID,
“postID”: postID

});
}
if (event.data ==YT.PlayerState.ENDED || event.data==0) {
mixpanel.track(“Video ended”, {
“youtubeID”: youtubeID,
“postID”: postID
});
}
}

var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player(‘player’,
{
videoId: youtubeID,
events: {‘onStateChange’: onPlayerStateChange}
});
}

mixpanel.track(“Post viewed”, {
“id”: postID
});

A* Interview #15: Jeff Lindsay, Creator of Flynn, Co-Founder of Hacker Dojo, Executive Producer of “Indie Game: The Movie”

Check out Flynn, an open source Heroku. And Docker, a container-based deployment system. And use Jeff’s new employer DigitalOcean for some cheap, fast cloud servers.

For more Jeff, follow him on Twitter or check out his personal site.

Read about (one of) Jeff’s favorite musicans Animals as Leaders here.

Watch Indie Game: The Movie here or on Netflix. Buy Kevin Kelly’s What Technology Wants here.

Learn about the A* Series and see more interviews here.

/* change only these */
var youtubeID = “Gpqs-tU29kU”;
var postID = “Jeff Lindsay”;
/* change only these */

// DON’T CHANGE BELOW
$(“.video”).html(“

“);
var tag = document.createElement(‘script’);
tag.src = “http://www.youtube.com/player_api”;
var firstScriptTag = document.getElementsByTagName(‘script’)[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

function onPlayerStateChange(event) {
if (event.data ==YT.PlayerState.PLAYING) {
mixpanel.track(“Video played”, {
“youtubeID”: youtubeID,
“postID”: postID

});
}
if (event.data ==YT.PlayerState.ENDED || event.data==0) {
mixpanel.track(“Video ended”, {
“youtubeID”: youtubeID,
“postID”: postID
});
}
}

var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player(‘player’,
{
videoId: youtubeID,
events: {‘onStateChange’: onPlayerStateChange}
});
}

mixpanel.track(“Post viewed”, {
“id”: postID
});

A* Interview #14: Rob Ashton, Hacker / Soon-To-Be-Erstwhile Peripatetic

Follow Rob on Twitter or on Github or on his personal site.

Read about (one of) Rob’s favorite musicans Mark Knopfler here

Learn about the A* Series and see more more interviews here.

/* change only these */
var youtubeID = “XKFoNNavh2I”;
var postID = “Rob Ashton”;
/* change only these */

// DON’T CHANGE BELOW
$(“.video”).html(“

“);
var tag = document.createElement(‘script’);
tag.src = “http://www.youtube.com/player_api”;
var firstScriptTag = document.getElementsByTagName(‘script’)[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

function onPlayerStateChange(event) {
if (event.data ==YT.PlayerState.PLAYING) {
mixpanel.track(“Video played”, {
“youtubeID”: youtubeID,
“postID”: postID

});
}
if (event.data ==YT.PlayerState.ENDED || event.data==0) {
mixpanel.track(“Video ended”, {
“youtubeID”: youtubeID,
“postID”: postID
});
}
}

var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player(‘player’,
{
videoId: youtubeID,
events: {‘onStateChange’: onPlayerStateChange}
});
}

mixpanel.track(“Post viewed”, {
“id”: postID
});

A* Interview #13: Daniel Peebles, iPhone Jailbreaker and Agda Wizard

Follow Daniel on Twitter or on Github.

Follow Daniel’s example and get started with Agda (because dedicated domains are for the insufficiently dedicated).

And if you want to step up your game, follow Dan’s advice and read some code from Edward Kmett’s Github.

Learn about the A* Series and see more more interviews here.

/* change only these */
var youtubeID = “OvdLGXw9e4k”;
var postID = “Daniel Peebles”;
/* change only these */

// DON’T CHANGE BELOW
$(“.video”).html(“

“);
var tag = document.createElement(‘script’);
tag.src = “http://www.youtube.com/player_api”;
var firstScriptTag = document.getElementsByTagName(‘script’)[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

function onPlayerStateChange(event) {
if (event.data ==YT.PlayerState.PLAYING) {
mixpanel.track(“Video played”, {
“youtubeID”: youtubeID,
“postID”: postID

});
}
if (event.data ==YT.PlayerState.ENDED || event.data==0) {
mixpanel.track(“Video ended”, {
“youtubeID”: youtubeID,
“postID”: postID
});
}
}

var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player(‘player’,
{
videoId: youtubeID,
events: {‘onStateChange’: onPlayerStateChange}
});
}

mixpanel.track(“Post viewed”, {
“id”: postID
});

The Books Behind Me During the A* Interviews

Since I was asked on Twitter. It should be noted that that shelf is where I keep my queue of books I have purchased but not yet read.

Pro Django – Alchin

Ready Player One – Ernest Cline

Cracking the Coding Interview – Laakmann, McDowell

From Counterculture to Cyberculture – Fred Turner

About Face 3, Essentials of Interaction Design – Cooper

Four Hour Body – Tim Ferris

The Paelo Manifesto – John Durant

Permutation City – Greg Egan

Antifragile – Nassim Taleb

The Feynman Lectures on Physics, Vol 1 – Richard Feynman

Surfaces and Essenceses – Hofsteadter

The Philosophy of Symbolic Forms – Cassirer

The Elements of Typographic Style – Bringhurst

Universal Principles of Design – Lidwell

A Tale of Two Cities – Dickens

The Success Equation – Maubousin

In the Heart of the Sea – Philbrick

Masters of Doom – Kushner

Coders at Work – Seibel

Customers Included – Hurst and Terry

Godel, Escher, Bach – Hofstadter

Futility – Gerhardie

The Frogs -Aristophanes

Den of Thieves – Stewart

Modernism – Peter Gay

Dithyrambs of Dionysus – Nietzsche

The Last Tycoon – Fitzgerald

Essays in Experimental Logic – Dewey

The Magic Mountain -Mann

Speech and Language Processing – Jurafsky, Martin

Database Management Systems – Gehrke

Semantic Web for the Working ontologist – Allemang, Hendler

The Entrepreneur’s Guide to Business Law – Danchy

Much obliged to any commenter who’d like to provide the Amazon links.

A* Interview #12: RavenDB creator Ayende Rahein

Ed Note: Ayende is understandably very enthusiastic about RavenDB. So his first answer about it is very technical and rather long. If you’d like to skip to the rest of the easier-to-understand questions, start watching at 34:50

My top two lesson from Ayende:

1) It’s a lot easier to push yourself to improve if you care enough about what you’re working on to wake up for it at 4am.

2) It’s a big mistake to not admit you have a problem. Acknowledging badness is the first step to getting better.

Read about Ayende’s current favorite singer, Lily Allen

Read Ayende’s favorite recent book, Spellmonger by Terry Mancour

Check out Ayende’s blog

Use RavenDB.

Ayende recommends you go read the lmdb codebase!

Read the story of the A# Interviews here. For future interviews, subscribe to my newsletter or follow me on Twitter.

/* change only these */
var youtubeID = “Foo5hg9UXAg”;
var postID = ” Ayende Rahien”;
/* change only these */

// DON’T CHANGE BELOW
$(“.video”).html(“

“);
var tag = document.createElement(‘script’);
tag.src = “http://www.youtube.com/player_api”;
var firstScriptTag = document.getElementsByTagName(‘script’)[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

function onPlayerStateChange(event) {
if (event.data ==YT.PlayerState.PLAYING) {
mixpanel.track(“Video played”, {
“youtubeID”: youtubeID,
“postID”: postID

});
}
if (event.data ==YT.PlayerState.ENDED || event.data==0) {
mixpanel.track(“Video ended”, {
“youtubeID”: youtubeID,
“postID”: postID
});
}
}

var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player(‘player’,
{
videoId: youtubeID,
events: {‘onStateChange’: onPlayerStateChange}
});
}

mixpanel.track(“Post viewed”, {
“id”: postID
});

A* Interview #11: Jon Skeet, All-Time Highest Reputation StackOverflow User

My top two lessons from Jon:

1) Most mistakes come from users not understanding their data

2) Great communication comes from a whole lot of practice, and it really pays off in your career

Some links:

Watch Jon’s screen casts

Read Jon’s blog

Read some reasons why Jon Skeet is the Chuck Norris of coding

Follow Jon on Twitter

And finally, go buy “C# in Depth”!

Read the story of the A# Interviews here. For future interviews, subscribe to my newsletter or follow me on Twitter.

/* change only these */
var youtubeID = “7P2Uzb74qKw”;
var postID = “Jon Skeet”;
/* change only these */

// DON’T CHANGE BELOW
$(“.video”).html(“

“);
var tag = document.createElement(‘script’);
tag.src = “http://www.youtube.com/player_api”;
var firstScriptTag = document.getElementsByTagName(‘script’)[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

function onPlayerStateChange(event) {
if (event.data ==YT.PlayerState.PLAYING) {
mixpanel.track(“Video played”, {
“youtubeID”: youtubeID,
“postID”: postID

});
}
if (event.data ==YT.PlayerState.ENDED || event.data==0) {
mixpanel.track(“Video ended”, {
“youtubeID”: youtubeID,
“postID”: postID
});
}
}

var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player(‘player’,
{
videoId: youtubeID,
events: {‘onStateChange’: onPlayerStateChange}
});
}

mixpanel.track(“Post viewed”, {
“id”: postID
});