Bitcoin Forum
December 13, 2017, 04:06:21 AM *
News: Latest stable version of Bitcoin Core: 0.15.1  [Torrent].
 
   Home   Help Search Donate Login Register  
Pages: [1] 2 3 »  All
  Print  
Author Topic: Bitcoin clock  (Read 7513 times)
payb.tc
Hero Member
*****
Offline Offline

Activity: 812



View Profile
September 22, 2011, 03:55:48 AM
 #1

been meaning to do this for a while...   http://bitcoinclock.com/

borrowing a friend's domain+server was the kick i needed to get it done.

enjoy.
1513137981
Hero Member
*
Offline Offline

Posts: 1513137981

View Profile Personal Message (Offline)

Ignore
1513137981
Reply with quote  #2

1513137981
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1513137981
Hero Member
*
Offline Offline

Posts: 1513137981

View Profile Personal Message (Offline)

Ignore
1513137981
Reply with quote  #2

1513137981
Report to moderator
1513137981
Hero Member
*
Offline Offline

Posts: 1513137981

View Profile Personal Message (Offline)

Ignore
1513137981
Reply with quote  #2

1513137981
Report to moderator
johnj
Full Member
***
Offline Offline

Activity: 154


View Profile
September 22, 2011, 03:58:10 AM
 #2

A+

1AeW7QK59HvEJwiyMztFH1ubWPSLLKx5ym
TradeHill Referral TH-R120549
nmat
Hero Member
*****
Offline Offline

Activity: 602


View Profile
September 22, 2011, 04:08:17 AM
 #3

Nice. So, any interesting ideas for the seconds pointer?
phillipsjk
Legendary
*
Offline Offline

Activity: 1008

Let the chips fall where they may.


View Profile WWW
September 22, 2011, 04:09:26 AM
 #4

I disagree: it is more like an A-.

I deduct points for requiring client-side scripting. The idea is original enough and well implemented enough to be worth temporarily enabling JavaScript though.

To do it server side, you would probably have a static image (or SVG) that is autorefreshed (server side) every 10 minutes or so.

James' OpenPGP public key fingerprint: EB14 9E5B F80C 1F2D 3EBE  0A2F B3DE 81FF 7B9D 5160
jjiimm_64
Legendary
*
Offline Offline

Activity: 1862


View Profile
September 22, 2011, 04:10:59 AM
 #5


I deduct points for requiring client-side scripting. The idea is original enough and well implemented enough to be worth temporarily enabling JavaScript though.

You use IE ??   Huh

1jimbitm6hAKTjKX4qurCNQubbnk2YsFw
payb.tc
Hero Member
*****
Offline Offline

Activity: 812



View Profile
September 22, 2011, 04:12:07 AM
 #6

yeah even i wouldn't rate it A-

i'm no javascript guru, i just found a clock and tried to modify it to create the right angles.

no idea what to use the second hand for either, so that's why i disabled it Smiley


deslok
Sr. Member
****
Offline Offline

Activity: 462


It's all about the game, and how you play it


View Profile
September 22, 2011, 04:14:27 AM
 #7


I deduct points for requiring client-side scripting. The idea is original enough and well implemented enough to be worth temporarily enabling JavaScript though.

You use IE ??   Huh

IE is not universally bad, and some of us running 64 bit operating systems are waiting for the other browsers to catch up as far as that is concerned(although i do use chrome for some things i spend most of my time in IE9)

"If we don't hang together, by Heavens we shall hang separately." - Benjamin Franklin

If you found that funny or something i said useful i always appreciate spare change
1PczDQHfEj3dJgp6wN3CXPft1bGB23TzTM
phillipsjk
Legendary
*
Offline Offline

Activity: 1008

Let the chips fall where they may.


View Profile WWW
September 22, 2011, 04:15:07 AM
 #8

You use IE ??   Huh

IE doesn't support Gopher URLs.

James' OpenPGP public key fingerprint: EB14 9E5B F80C 1F2D 3EBE  0A2F B3DE 81FF 7B9D 5160
jjiimm_64
Legendary
*
Offline Offline

Activity: 1862


View Profile
September 22, 2011, 04:15:15 AM
 #9

Nice. So, any interesting ideas for the seconds pointer?

Yes.   the seconds hand could be used for the current block

one way is to estimate the time needed for the next block from the last.  ie 10 minutes for full 60 'seconds'

trying to think of a better way using the difficulty and estimate of next block found but I cant think of any...

1jimbitm6hAKTjKX4qurCNQubbnk2YsFw
payb.tc
Hero Member
*****
Offline Offline

Activity: 812



View Profile
September 22, 2011, 04:18:15 AM
 #10

Nice. So, any interesting ideas for the seconds pointer?

Yes.   the seconds hand could be used for the current block

one way is to estimate the time needed for the next block from the last.  ie 10 minutes for full 60 'seconds'

trying to think of a better way using the difficulty and estimate of next block found but I cant think of any...


yeah that wouldn't be accurate enough.

the second hand wouldn't hit 12 right when the next block is found Cheesy
nmat
Hero Member
*****
Offline Offline

Activity: 602


View Profile
September 22, 2011, 04:20:25 AM
 #11

yeah even i wouldn't rate it A-

i'm no javascript guru, i just found a clock and tried to modify it to create the right angles.

no idea what to use the second hand for either, so that's why i disabled it Smiley

The division in 60 spaces is not suited for Bitcoin so one improvement would be a custom clock image. But this creates other problems because 210,000 is not divisible by 2016.
payb.tc
Hero Member
*****
Offline Offline

Activity: 812



View Profile
September 22, 2011, 04:22:51 AM
 #12

yeah even i wouldn't rate it A-

i'm no javascript guru, i just found a clock and tried to modify it to create the right angles.

no idea what to use the second hand for either, so that's why i disabled it Smiley

The division in 60 spaces is not suited for Bitcoin so one improvement would be a custom clock image. But this creates other problems because 210,000 is not divisible by 2016.

yeah i only just realised that today... i think previously i assumed difficulty changed every 2100 blocks.

anyway a custom image could be good... especially one with a 'bitcoin' as the background Smiley
payb.tc
Hero Member
*****
Offline Offline

Activity: 812



View Profile
September 22, 2011, 05:52:25 AM
 #13

usually 80% of the value gets done in the first 20% of the time spent.

refining the remaining 20% of the project then takes up the remaining 80% of the total time.

so the most efficient thing to do, is just work until something is 80% good enough (20% of total time to complete a 'perfect' project) and then move on to the next one...

i don't know if that's always true, but i think it's a good rule to keep in mind for anyone trying to break the perfectionists dilemma.

anyway perhaps the whole idea will inspire someone to do a much better clock, and if that happens, i'll probably have no trouble getting your version 2.0 uploaded onto bitcoinclock.com

Cryptoman
Hero Member
*****
Offline Offline

Activity: 728



View Profile
September 22, 2011, 05:56:44 AM
 #14

usually 80% of the value gets done in the first 20% of the time spent.

refining the remaining 20% of the project then takes up the remaining 80% of the total time.

so the most efficient thing to do, is just work until something is 80% good enough (20% of total time to complete a 'perfect' project) and then move on to the next one...

Lol, so true.  Also, after that first 20% of the time is put in, it starts to get pretty boring.  Unfortunately, if you're trying to develop something professionally, you have to put in that other 80% of the effort.  This is where delegation comes in handy.  Cheesy

"A small body of determined spirits fired by an unquenchable faith in their mission can alter the course of history." --Gandhi
payb.tc
Hero Member
*****
Offline Offline

Activity: 812



View Profile
September 22, 2011, 06:04:05 AM
 #15

usually 80% of the value gets done in the first 20% of the time spent.

refining the remaining 20% of the project then takes up the remaining 80% of the total time.

so the most efficient thing to do, is just work until something is 80% good enough (20% of total time to complete a 'perfect' project) and then move on to the next one...

Lol, so true.  Also, after that first 20% of the time is put in, it starts to get pretty boring.  Unfortunately, if you're trying to develop something professionally, you have to put in that other 80% of the effort.  This is where delegation comes in handy.  Cheesy

yes and via delegation the remaining 20% of the project gets redefined as someone else's '100%' and they probably work the same way.

so they spend 20% of their time doing 80% of their part.

therefore 96% (0.8 + 0.2*0.8 ) of the total project gets done in the first 36% (0.2 + 0.8*0.2) of the total time.

everyone just needs to keep delegating when they hit that 20% mark Smiley
jjiimm_64
Legendary
*
Offline Offline

Activity: 1862


View Profile
November 06, 2011, 12:51:35 AM
 #16

any chance in spinning up a litecoin clock ?    especially since the diff changes so much faster.

1jimbitm6hAKTjKX4qurCNQubbnk2YsFw
payb.tc
Hero Member
*****
Offline Offline

Activity: 812



View Profile
November 06, 2011, 12:58:09 AM
 #17

any chance in spinning up a litecoin clock ?    especially since the diff changes so much faster.

i'm not interested myself, but anyone's welcome to copy what i did... it's pretty simple, and should be easy to modify for litecoin.

index.php:

Code:
<?php
$blockcount=preg_replace('/[^0-9]/','',file_get_contents('http://blockexplorer.com/q/getblockcount'));
?>

<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh" content="60; url=http://bitcoinclock.com/">
<title>Bitcoin Clock</title>

<link rel="stylesheet" type="text/css" href="styles.css">

<!--[if IE]><script type="text/javascript" src="excanvas.js"></script><![endif]-->
<script src="coolclock.php?b=<?php echo $blockcount?>" type="text/javascript"></script>


</head>
<body onload="CoolClock.findAndCreateClocks()">

<div align="center">
<h1>Bitcoin Clock</h1>

<p>
</p>

<canvas id="c1" class="CoolClock:classic:250" width="500" height="500" style="width: 500px; height: 500px; "></canvas>

<br><br>

Block count: <?php echo $blockcount?><br>
Blocks since last difficulty change: <?php echo $blockcount%2016?><br><br>

Hour hand goes around once every 210,000 blocks<br>
(Block reward drops by half every time hour hand reaches 12)<br>
(This should occur approximately once every 4 years)<br><br>
Minute hand goes around once every 2016 blocks<br>
(Difficulty change occurs every time minute hand reaches 12)<br>
(This should occur approximately once every 2 weeks)<br><br>
Second hand goes around once every 144 blocks<br>
(This should occur approximately once every 24 hours)


</div>
</body></html>

coolclock.php:

Code:
<?php

$blockcount=preg_replace('/[^0-9]/','',$_GET['b']);

?>


/**
 * CoolClock 2.1.4
 * Copyright 2010, Simon Baird
 * Released under the BSD License.
 *
 * Display an analog clock using canvas.
 * http://randomibis.com/coolclock/
 *
 */

// Constructor for CoolClock objects
window.CoolClock = function(options) {
return this.init(options);
}

// Config contains some defaults, and clock skins
CoolClock.config = {
tickDelay: 10000,
longTickDelay: 15000,
defaultRadius: 85,
renderRadius: 100,
defaultSkin: "classic",
// Should be in skin probably...
// (TODO: allow skinning of digital display)
showSecs: true,
showAmPm: false,

skins: {
// There are more skins in moreskins.js
// Try making your own skin by copy/pasting one of these and tweaking it
classic/*was gIG*/: {
outerBorder:      { lineWidth: 185, radius: 1, color: "#E5ECF9", alpha: 1 },
smallIndicator:   { lineWidth: 2, startAt: 89, endAt: 94, color: "#3366CC", alpha: 1 },
largeIndicator:   { lineWidth: 4, startAt: 83, endAt: 94, color: "#3366CC", alpha: 1 },
hourHand:         { lineWidth: 5, startAt: 0, endAt: 60, color: "black", alpha: 1 },
minuteHand:       { lineWidth: 4, startAt: 0, endAt: 80, color: "black", alpha: 1 },
secondHand:       { lineWidth: 1, startAt: -20, endAt: 85, color: "red", alpha: .85 },
secondDecoration: { lineWidth: 3, startAt: 0, radius: 2, fillColor: "black", color: "black", alpha: 1 }
},
swissRail: {
outerBorder: { lineWidth: 2, radius:95, color: "black", alpha: 1 },
smallIndicator: { lineWidth: 2, startAt: 88, endAt: 92, color: "black", alpha: 1 },
largeIndicator: { lineWidth: 4, startAt: 79, endAt: 92, color: "black", alpha: 1 },
hourHand: { lineWidth: 8, startAt: -15, endAt: 50, color: "black", alpha: 1 },
minuteHand: { lineWidth: 7, startAt: -15, endAt: 75, color: "black", alpha: 1 },
secondHand: { lineWidth: 1, startAt: -20, endAt: 85, color: "red", alpha: 1 },
secondDecoration: { lineWidth: 1, startAt: 70, radius: 4, fillColor: "red", color: "red", alpha: 1 }
},
chunkySwiss: {
outerBorder: { lineWidth: 4, radius:97, color: "black", alpha: 1 },
smallIndicator: { lineWidth: 4, startAt: 89, endAt: 93, color: "black", alpha: 1 },
largeIndicator: { lineWidth: 8, startAt: 80, endAt: 93, color: "black", alpha: 1 },
hourHand: { lineWidth: 12, startAt: -15, endAt: 60, color: "black", alpha: 1 },
minuteHand: { lineWidth: 10, startAt: -15, endAt: 85, color: "black", alpha: 1 },
secondHand: { lineWidth: 4, startAt: -20, endAt: 85, color: "red", alpha: 1 },
secondDecoration: { lineWidth: 2, startAt: 70, radius: 8, fillColor: "red", color: "red", alpha: 1 }
},
chunkySwissOnBlack: {
outerBorder: { lineWidth: 4, radius:97, color: "white", alpha: 1 },
smallIndicator: { lineWidth: 4, startAt: 89, endAt: 93, color: "white", alpha: 1 },
largeIndicator: { lineWidth: 8, startAt: 80, endAt: 93, color: "white", alpha: 1 },
hourHand: { lineWidth: 12, startAt: -15, endAt: 60, color: "white", alpha: 1 },
minuteHand: { lineWidth: 10, startAt: -15, endAt: 85, color: "white", alpha: 1 },
secondHand: { lineWidth: 4, startAt: -20, endAt: 85, color: "red", alpha: 1 },
secondDecoration: { lineWidth: 2, startAt: 70, radius: 8, fillColor: "red", color: "red", alpha: 1 }
}

},

// Test for IE so we can nurse excanvas in a couple of places
isIE: !!document.all,

// Will store (a reference to) each clock here, indexed by the id of the canvas element
clockTracker: {},

// For giving a unique id to coolclock canvases with no id
noIdCount: 0
};

// Define the CoolClock object's methods
CoolClock.prototype = {

// Initialise using the parameters parsed from the colon delimited class
init: function(options) {
// Parse and store the options
this.canvasId       = options.canvasId;
this.skinId         = options.skinId || CoolClock.config.defaultSkin;
this.displayRadius  = options.displayRadius || CoolClock.config.defaultRadius;
this.showSecondHand = typeof options.showSecondHand == "boolean" ? options.showSecondHand : true;
this.gmtOffset      = (options.gmtOffset != null && options.gmtOffset != '') ? parseFloat(options.gmtOffset) : null;
this.showDigital    = typeof options.showDigital == "boolean" ? options.showDigital : false;
this.logClock       = typeof options.logClock == "boolean" ? options.logClock : false;
this.logClockRev    = typeof options.logClock == "boolean" ? options.logClockRev : false;

this.tickDelay      = CoolClock.config[ this.showSecondHand ? "tickDelay" : "longTickDelay" ];

// Get the canvas element
this.canvas = document.getElementById(this.canvasId);

// Make the canvas the requested size. It's always square.
this.canvas.setAttribute("width",this.displayRadius*2);
this.canvas.setAttribute("height",this.displayRadius*2);
this.canvas.style.width = this.displayRadius*2 + "px";
this.canvas.style.height = this.displayRadius*2 + "px";

// Explain me please...?
this.renderRadius = CoolClock.config.renderRadius;
this.scale = this.displayRadius / this.renderRadius;

// Initialise canvas context
this.ctx = this.canvas.getContext("2d");
this.ctx.scale(this.scale,this.scale);

// Keep track of this object
CoolClock.config.clockTracker[this.canvasId] = this;

// Start the clock going
this.tick();

return this;
},

// Draw a circle at point x,y with params as defined in skin
fullCircleAt: function(x,y,skin) {
this.ctx.save();
this.ctx.globalAlpha = skin.alpha;
this.ctx.lineWidth = skin.lineWidth;

if (!CoolClock.config.isIE) {
this.ctx.beginPath();
}

if (CoolClock.config.isIE) {
// excanvas doesn't scale line width so we will do it here
this.ctx.lineWidth = this.ctx.lineWidth * this.scale;
}

this.ctx.arc(x, y, skin.radius, 0, 2*Math.PI, false);

if (CoolClock.config.isIE) {
// excanvas doesn't close the circle so let's fill in the tiny gap
this.ctx.arc(x, y, skin.radius, -0.1, 0.1, false);
}

if (skin.fillColor) {
this.ctx.fillStyle = skin.fillColor
this.ctx.fill();
}
else {
// XXX why not stroke and fill
this.ctx.strokeStyle = skin.color;
this.ctx.stroke();
}
this.ctx.restore();
},

// Draw some text centered vertically and horizontally
drawTextAt: function(theText,x,y) {
this.ctx.save();
this.ctx.font = '15px sans-serif';
var tSize = this.ctx.measureText(theText);
if (!tSize.height) tSize.height = 15; // no height in firefox.. :(
this.ctx.fillText(theText,x - tSize.width/2,y - tSize.height/2);
this.ctx.restore();
},

lpad2: function(num) {
return (num < 10 ? '0' : '') + num;
},

tickAngle: function(second) {
// Log algorithm by David Bradshaw
var tweak = 3; // If it's lower the one second mark looks wrong (?)
if (this.logClock) {
return second == 0 ? 0 : (Math.log(second*tweak) / Math.log(60*tweak));
}
else if (this.logClockRev) {
// Flip the seconds then flip the angle (trickiness)
second = (60 - second) % 60;
return 1.0 - (second == 0 ? 0 : (Math.log(second*tweak) / Math.log(60*tweak)));
}
else {
return second/60.0;
}
},

timeText: function(hour,min,sec) {
var c = CoolClock.config;
return '' +
(c.showAmPm ? ((hour%12)==0 ? 12 : (hour%12)) : hour) + ':' +
this.lpad2(min) +
(c.showSecs ? ':' + this.lpad2(sec) : '') +
(c.showAmPm ? (hour < 12 ? ' am' : ' pm') : '')
;
},

// Draw a radial line by rotating then drawing a straight line
// Ha ha, I think I've accidentally used Taus, (see http://tauday.com/)
radialLineAtAngle: function(angleFraction,skin) {
this.ctx.save();
this.ctx.translate(this.renderRadius,this.renderRadius);
this.ctx.rotate(Math.PI * (2.0 * angleFraction - 0.5));
this.ctx.globalAlpha = skin.alpha;
this.ctx.strokeStyle = skin.color;
this.ctx.lineWidth = skin.lineWidth;

if (CoolClock.config.isIE)
// excanvas doesn't scale line width so we will do it here
this.ctx.lineWidth = this.ctx.lineWidth * this.scale;

if (skin.radius) {
this.fullCircleAt(skin.startAt,0,skin)
}
else {
this.ctx.beginPath();
this.ctx.moveTo(skin.startAt,0)
this.ctx.lineTo(skin.endAt,0);
this.ctx.stroke();
}
this.ctx.restore();
},

render: function(hour,min,sec) {
// Get the skin
var skin = CoolClock.config.skins[this.skinId];
if (!skin) skin = CoolClock.config.skins[CoolClock.config.defaultSkin];

// Clear
this.ctx.clearRect(0,0,this.renderRadius*2,this.renderRadius*2);

// Draw the outer edge of the clock
if (skin.outerBorder)
this.fullCircleAt(this.renderRadius,this.renderRadius,skin.outerBorder);

// Draw the tick marks. Every 5th one is a big one
for (var i=0;i<60;i++) {
(i%5)  && skin.smallIndicator && this.radialLineAtAngle(this.tickAngle(i),skin.smallIndicator);
!(i%5) && skin.largeIndicator && this.radialLineAtAngle(this.tickAngle(i),skin.largeIndicator);
}

// Write the time
if (this.showDigital) {
this.drawTextAt(
this.timeText(hour,min,sec),
this.renderRadius,
this.renderRadius+this.renderRadius/2
);
}

// Draw the hands
if (skin.hourHand)
this.radialLineAtAngle(<?php echo $blockcount?>/210000,skin.hourHand);

if (skin.minuteHand)
this.radialLineAtAngle(<?php echo $blockcount?>%2016/2016,skin.minuteHand);

if (this.showSecondHand && skin.secondHand)
this.radialLineAtAngle(<?php echo $blockcount?>%144/144,skin.secondHand);

// Second hand decoration doesn't render right in IE so lets turn it off
if (!CoolClock.config.isIE && this.showSecondHand && skin.secondDecoration)
this.radialLineAtAngle(this.tickAngle(sec),skin.secondDecoration);
},

// Check the time and display the clock
refreshDisplay: function() {
var now = new Date();
if (this.gmtOffset != null) {
// Use GMT + gmtOffset
var offsetNow = new Date(now.valueOf() + (this.gmtOffset * 1000 * 60 * 60));
this.render(offsetNow.getUTCHours(),offsetNow.getUTCMinutes(),offsetNow.getUTCSeconds());
}
else {
// Use local time
this.render(now.getHours(),now.getMinutes(),now.getSeconds());
}
},

// Set timeout to trigger a tick in the future
nextTick: function() {
setTimeout("CoolClock.config.clockTracker['"+this.canvasId+"'].tick()",this.tickDelay);
},

// Check the canvas element hasn't been removed
stillHere: function() {
return document.getElementById(this.canvasId) != null;
},

// Main tick handler. Refresh the clock then setup the next tick
tick: function() {
if (this.stillHere()) {
//this.refreshDisplay()
this.render(0,0,0);
this.nextTick();
}
}
};

// Find all canvas elements that have the CoolClock class and turns them into clocks
CoolClock.findAndCreateClocks = function() {
// (Let's not use a jQuery selector here so it's easier to use frameworks other than jQuery)
var canvases = document.getElementsByTagName("canvas");
for (var i=0;i<canvases.length;i++) {
// Pull out the fields from the class. Example "CoolClock:chunkySwissOnBlack:1000"
var fields = canvases[i].className.split(" ")[0].split(":");
if (fields[0] == "CoolClock") {
if (!canvases[i].id) {
// If there's no id on this canvas element then give it one
canvases[i].id = '_coolclock_auto_id_' + CoolClock.config.noIdCount++;
}
// Create a clock object for this element
new CoolClock({
canvasId:       canvases[i].id,
skinId:         fields[1],
displayRadius:  fields[2],
showSecondHand: fields[3]!='noSeconds',
gmtOffset:      fields[4],
showDigital:    fields[5]=='showDigital',
logClock:       fields[6]=='logClock',
logClockRev:    fields[6]=='logClockRev'
});
}
}
};

// If you don't have jQuery then you need a body onload like this: <body onload="CoolClock.findAndCreateClocks()">
// If you do have jQuery and it's loaded already then we can do it right now
if (window.jQuery) jQuery(document).ready(CoolClock.findAndCreateClocks);

i'd like to request that if anyone does make a litecoin version that they use a completely different colour scheme so that it can instantly be distinguished from the bitcoin one at a glance.
jjiimm_64
Legendary
*
Offline Offline

Activity: 1862


View Profile
November 06, 2011, 01:48:51 AM
 #18

thanks:)

1jimbitm6hAKTjKX4qurCNQubbnk2YsFw
Vandroiy
Legendary
*
Offline Offline

Activity: 1036


View Profile
November 06, 2011, 04:07:25 PM
 #19

I like the idea, but it's not fun to watch because it doesn't really move much. At the very least, the second hand should move once a block.

Personally, I would add something even faster than a block to make movement smooth. For example the integrated probability that a block would have come since the last one, indicating whether it's coming late. Doesn't have to be on the clock disc, just add a bar or anything neat.

That would be the kind of thing to stare at when waiting for a transaction to confirm. Cool There are lots of other cool things one could add, like color-filling the clock's background with the amount of BTC minted over the total amount ever.
jjiimm_64
Legendary
*
Offline Offline

Activity: 1862


View Profile
November 06, 2011, 06:45:30 PM
 #20

I like the idea, but it's not fun to watch because it doesn't really move much. At the very least, the second hand should move once a block.

Personally, I would add something even faster than a block to make movement smooth. For example the integrated probability that a block would have come since the last one, indicating whether it's coming late. Doesn't have to be on the clock disc, just add a bar or anything neat.

That would be the kind of thing to stare at when waiting for a transaction to confirm. Cool There are lots of other cool things one could add, like color-filling the clock's background with the amount of BTC minted over the total amount ever.

The litecoin version will automatically be faster...  4 times faster Smiley  last night the minute hand was at a quarter after..  not it is almost 20 to 12 Smiley

http://litecoinclock.com/

1jimbitm6hAKTjKX4qurCNQubbnk2YsFw
Pages: [1] 2 3 »  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!