« first day (942 days earlier)      last day (3074 days later) » 

10:05 AM
Monking @SuperBiasedMan
 
This winter bash countdown is wonderfully user unfriendly.
 
Quite unreadable.
 
Why? Does it count up?
 
 
It's made of little people moving around
 
10:08 AM
It keeps moving. Those white things are supposedly people and they don't stand still often.
 
 
const fixtures = [
  {
    Id: 5,
    CompanyName: 'FooBar',
    CustomerStatus: 'CUSTOMER',
    CustomerRef: 12345,
    Contact: 'HerpDerp',
    ContactUpdated: new Date(),
    ContactUpdatedBy: 'CSUKDERP',
    Phones: [
      { Number: '0123456789', IsDisabledByTps: true }
    ],
    NamesAndPhones: [],
    Website: 'www.derp.com',

  }
];
 
I think it looks cool though
 
This is how I make test fixture data when I can't be btohered to find real data from the database..
 
10:17 AM
It does, just hard to parse too.
 
We make our usernames in work by taking the first and last letters of both your first name and last name.
Turns out there's someone in work with the name CSUKARSE
 
Oct 19 at 10:44, by A Red Herring
off-topic: In our company we name our usernames based on your names - we take the first + last letter of your first name and surname. Today I have discovered that ARSE has left the company.
 
I forgot I had mentioned it.
But thanks for reminding me :D
 
It's been a while, but I have a nag for remembering useless information.
 
I think you mean knack. A nag means to bother someone repetitively :P
 
10:25 AM
Semantics.
 
0
Q: snake game with canvas element code4

SEO YURIIs first varaible pos is array or coordinates? can you explain more about this code? cuz i cant understand. And where is the code about second snake moving like stairs? Please answer these two question. thank u.

 
@CaptainObvious uh?
 
@CaptainObvious HAMMERTIME!
2 more.
Monking @Vogel612
Almost rep-capped at gamedev, what is this madness...
5
 
Rep-capping anywhere is always weird to me.
 
Wait, that needs freehand circles.
 
10:38 AM
@Mast whoa, calm down there picasso
 
Just wait til it then turns ninety degrees again and runs along horizontally.
2
 
That would imply being at that rep every day :P
 
> runs along horizontally
No.
 
Wait. I misread, thought it was the activity graph (and not the rep one)
 
Now, compare that with my CR graph.
Way smoother.
As it should.
 
10:42 AM
@Mast gestures with long pointer stick As you can see we've done well this quarter.
 
^^
 
My CR is similar and my SO one is a lot more shaky...
 
@SuperBiasedMan Pff, pointer stick? Laser pointer more like :P
 
For some reason I thought my SO rep would be quite flat. Turns out it's almost the same shape...
 
Your question is probably more suitable over at codereview. — kaylum 30 secs ago
 
10:48 AM
@DanPantry My stick has a laser pointer in the end of it
 
@Duga Holy mother of nesting!
 
@Mast I would mention he should indent at case blocks but in this case, I don't think so
 
Title *"Need advice on how to write code"*
They do.
 
Darn. You really need a code review indeed. — Mast 36 secs ago
 
Wait they have two language options, where all the code is exactly the same except the strings are translated.
Does C not have some sort of dictionary like thing? A hash map of strings?
 
10:52 AM
-1
Q: What is wrong with my code?This is a registration for intended to validate user's data

blancos<?php $fname = $lname = $email = $phone = $gender = $username = $password = ''; $fnameErr = $lnameErr = $emailErr = $phoneErr = $genderErr = $usernameErr = $passwordErr = ''; if($_SERVER['REQUEST_METHOD'] == 'POST') { $fname = test_input($_POST['fname']); ...

 
Oh, OK. I'll submit that there then. Thanks for the tip. — LukasS 1 min ago
Incoming.
 
UH....
 
@SuperBiasedMan The obvious solution would be using something XML like to store multiple languages.
 
Our DBA just dropped a table in a production database
3
 
Or an INI for all I care.
 
10:54 AM
@SuperBiasedMan C doesn't have strings...
 
@DanPantry Oops.
 
@Vogel612 backs away slowly
 
@SuperBiasedMan C has arrays, not strings.
 
Why doesn't code review show up as an option within the stack-exchange when flagging to move? — ray 53 secs ago
 
@DanPantry "And that's why devs DBAs shouldn't have access to the prod DB"
 
10:55 AM
^^^^^^^^^
We aren't allowed access to the prod DB to prevent stuff like this from happening
lol
 
So, what does C not having strings mean? That code used things that look like string literals printf ("Welcome! Please, enter your user ID and press enter\n");
 
@CaptainObvious mc21 return
@SuperBiasedMan thats a char*
 
Post this in Code Reviewdotvav 23 secs ago
 
Oh.. I should correct myself... this is not the first time he had dropped a table from the prod db
The first time he did it on the table with all contact information for all customers... the second time he's now done it on our largest table (some 34GB).. jesus
@SuperBiasedMan C has char arrays AFAIK?
that's why c "strings" tend to be null terminated
 
@Duga Question is at -12...
 
10:58 AM
@Mast deleted now
 
RBA after a senseless edit from OP.
 
@DanPantry Does he have a problem?
 
@skiwi He has a dropping problem, ought to go to dropaholics anonymous.
 
I'm voting to close this question as off-topic because it is a request for a code review, which is outside the scope of SO. — Klas Lindbäck 11 secs ago
 
^ that seems to be an acceptable close-reason...
 
11:24 AM
0
Q: Can someone suggest any change in my basic python code on a text file

Utkarsh DadhichCan someone tell me how to improve my following python code. Code: a = open('/home/Username/1st few programms/names.txt') for y in a: c = y.split(",") c.sort() dict = {'"':0, "A": 1, "B": 2,"C": 3,"D": 4, "E": 5,"F": 6,"G": 7,"H": 8,"I": 9,"J": 10,"K": 11,"L": 12,"M": 13,"N": 14,"O":...

0
Q: Powershell zip subfolders recursively, conditionally

CharonThis is a progression of the script I posted here: Zip the contents of subfolders, conditionally It does this: Determines all subfolders recursively Checks each subfolder for files older than 31 days which aren't .zip If such files found, creates a new folder within, labelled with the date Mov...

 
@DanPantry not really, I'm sure most of you have played a lot more than I have...
 
Is anyone here actively using a way to store the git commit hash in some kind of properties file such that the application can output it in dev mode?
 
@skiwi I just pass in the git hash as an environment variable or get it from shell
but the only times I've done that is in a preprocessor for web apps, so the git hash is passed to the web app static assets before they are built
 
I want my Grails application to output the commit hash, but I'm figuring out how
 
11:40 AM
you could just do something hacky and access the shell..
 
Either it needs to save it on every commit, or the git environment needs to be available and be loaded on startup
Ah wait, forget the shell, it gets compiled to a WAR file, which can be moved around
The good news: Creating the WAR is a process
 
@skiwi then you'll want to embed the git hash in a build step
 
11:51 AM
> I actually like this idea the best despite it being unconventional.
Unconventional is my second name.
 
@Mast Mast Unconventional "Hates JavaScript" C#
 
The source for the Winterbash countdown ^^
 
@Mast It hurts
 
@Mast The minified source for the Winterbash countdown. :p
 
@DanPantry It's JavaScript, so the original won't be any easier to read.
 
11:59 AM
sigh
 
Too easy ^^
 
0
Q: Backbone movie application containing Popular and Watchlist movies, local storage, routing

stylerI have created a Backbone Movie app as part of a learning exercise, the app is hosted on codepen although I actually have it built on my local but thought this approach would be handier for code review. I have some dummy JSON containing some movies that are stored in a Movie Collection and then a...

 
Is the minifying also why there's so many single letter variable names?
 
@SuperBiasedMan Yes
the goal of minification is to remove as many characters as possible to reduce overall file size..
We don't actually write javascript like that, in the same way that people don't write C# in IL
 
I totes do
Straight to the core
 
12:04 PM
@DanPantry eval("ASDFGGW$%@#$%DASDGWE%254")
 
Raw dev
 
@JeroenVannevel Y U NO ASM?
 
real programmers use vim
:^)
 
001 ldloc.1
002 ret
^ epic IL
 
Oh huh. I mentioned 200_success in a post and then janos edited my answer to link to 200's page. Is that accepted style or something?
 
12:07 PM
@SuperBiasedMan Not sure. I've seen it happen before, but it's not a default thing to do.
 
I think it is just a courtesy
 
Yeah, I've seen other people do it too. I guess I will in future since it's not much work or anything and seems fair. Maybe they'll get more notice on posts that way.
 
So I'm trying to post the question to codereview but can't see the toolbar over there and therefore can't post the code. The ctrl+K shortcut doesn't work either. Any ideas?? — LukasS 12 secs ago
 
@Duga facepalm
 
0
Q: Unable to see toolbar, unable to post code

LukasSI'm trying to post a question here but I can't see the toolbar and therefore can't post code. Any ideas on how to fix this? Thanks a lot!

 
12:15 PM
@SuperBiasedMan VTC migrate to meta.CR please.
 
Should it even be migrated to meta? Isn't it a poor question to even be worth moving?
 
The rule of "Don't migrate crap" applies to CR -> meta too
 
@SuperBiasedMan There it can be tagged and hopefully be resolved.
 
I guess, and I suppose closed if it's not a bug and they just... couldn't see it?
 
0
Q: Unable to see toolbar, unable to post code

LukasSI'm trying to post a question here but I can't see the toolbar and therefore can't post code. Any ideas on how to fix this? Thanks a lot!

 
12:18 PM
@SuperBiasedMan Yup. At least it will be resolved by the correct people there. Bugs are something to take seriously.
 
If I retract my close vote can I actually vote to migrate though? Or is my close vote used up
 
@SuperBiasedMan No.
You can cast once and retract once.
No re-casting after retracting.
 
Yeah that's what I thought.
 
But if 4 cast for migration and the other is a different OT cast, it will probably be migrated.
 
Our application is still down, btw
theo ne with the prod table deleted
after 2 hours.. :s
it is the only way for one of our countries to work...
 
12:24 PM
Have all relevant managers been notified of what happened?
 
Yeah
It is starting to have knock on effects to other systems too
 
Logging server getting clogged? ^^
 
No
Two other applications consume this application's API
So both of those apps are effectively out of action
 
Glad it's not Friday.
 
Just glad it happened now and not on the 30th
 
12:27 PM
^^
 
30th is target day. If every system went down on the 30th, Belgium would not hit their target by far
And if they don't hit their target, their company loses money = people losing jobs
Hello @Chelayos
 
Can't they get those costs back by suing your company?
Welcome @Chelayos
Ah, he doesn't have talking privileges yet.
 
@Mast No - they aren't a separate company, they're a franchise of ours. Sort of.
Thanks santa
@Mast essentially we're a company that has cold call centers in many countries, including Belgium, Germany and Italy. I create internal applications that are used by these call centers. We've created a new app which we've rolled out to Belgium and is due to be rolled out to Italy at the start of Jan 2016. Right now the issue is some idiot has dropped a table from the prod DB for the Belgium version of the app, causing the other two apps that consume the API of that app to fail.
 
That's a major fuck-up from the DBA responsible.
 
It is the second time he has done it and the service has now been down for 2 hours.
It's pretty stupid.
Ironically, we (developers) aren't actually able to access the production database, only the DBA is, because he was worried we would cock things up.
That has been a major source of annoyance for us because it also means we cannot write an automated process to update the database when rolling out version updates to live; teh DBA refuses to give us a (heavily restricted) user account for that. Instead, everything must go through that one DBA and he will do it manually.
 
12:36 PM
And he fucked-up.
 
Twice.
 
If that's the second time he did that, the company probably has grounds to fire for incompetence.
 
I'm not sure they will.. but I do hope they have a stern talking to him
I doubt they won't.. it is a lot of money being lost right now.
You essentially have ~20 people in belgium being paid for doing nothing rn
 
And customers who can't be helped now, losing money.
 
Those people don't deal with customers, at least not in that way.
There are a few staff that handle customer queries through the system, but generally speaking the main thing the system does is enable the establishment of new sales
Thankfully, our customer-facing systems are still working aside from some dashboards, but I think they are only used internally
 
12:41 PM
Monking
 
@Phrancis Not sure what I am more jealous of. The Java Monster or the beard.
3
 
0
Q: Typesetting A* in LaTeX using algorithm2e

coderoddeThe result looks like and my code is: \documentclass[10pt]{article} \usepackage{amsmath} \usepackage[ruled,vlined,linesnumbered]{algorithm2e} \begin{document} \begin{algorithm} \SetKw{Nil}{nil} \SetKw{Is}{is} \SetKw{Not}{not} \SetKw{Mapped}{mapped} ...

 
I can't grow a beard because I only grow fluffy blonde hair yet have black head hair
 
while (tired) { caffeine++ }
@DanPantry The downside with the proficient facial hair is you have to groom it regularly, lest it become a neckbeard. Nobody wants to see a neckbeard cuz.
 
@Phrancis The only time a neckbeard looks good is never.
 
12:49 PM
No such problem with the JAVA MONSTER.
 
@Phrancis Is that some special edition stuff?
 
@Mast Nah, they sell it everywhere in convenience stores etc. in the USA
 
0
Q: Matlab Code to create a m-file

CoutoBasically, I need to write an m-file that plots the variation in true airspeed vs CL (0.6-1.4) at three different altitudes. However, I really don't know where to get started, I mean, I don't know what to write in MatLab. Getting the formula is just maths (not too much complicated), I just don't ...

 
It has the advantage of having all the caffeine of the regular Monster, whilst not tasting like shut.
 
I, personally, prefer my energy drinks tasting like open
 
12:51 PM
@Phrancis Never seen it here.
 
TTGTW
 
I'm afraid this question does not match what this site is about. Code Review is about improving existing, working code. Code Review is not the site to ask for help in fixing, changing or writing your code. Once you have code that does what you want, we would love to help you do the same thing in a cleaner way! Please see our help center for more information. — Quill 15 secs ago
 
@CaptainObvious What's it with all those "No code, no clue" questions lately?
 
Graduation raising the site profile?
I no longer have site analytics access to look into it :(
 
@SuperBiasedMan there's a very comprehensive sede query that rolfl wrote that can do that instead
 
12:58 PM
Oh? One that compares the volume of closed questions to all questions?
 
Yup, network wide.
 
not only that but the volume of new users as well
 
Oh network wide? That's even better.
Sounds good to take a look at, but for now it's lunch. Later folks.
 
0
Q: shell upstarter script

oxnzI have wrote a script to run command from file and kill them before quit. There're some restrictions: no other command other than shell builtin was allowed, except grep(1) first column is proc name, only [:alnum:] and '_' are allowed, followed by ':', then comes the command. the PORT should inc...

 
possible answer invalidation by WagoL on question by WagoL: codereview.stackexchange.com/posts/112452/revisions
 
1:12 PM
@Duga May very well be invalidation indeed. I'm not touching that question anymore though.
 
0
Q: Spell-checker in C

GabrielI've been trying to implement a spell-checker using a large dictionary against some text file which is around 2000 words large. However, my spell-checker returns all words as being misspelled. I honestly have no idea why and I've been pulling my hair over it for a couple of days. Could someone he...

 
@CaptainObvious Broken.
 
0
Q: find if the string contains ALL the vowels

makProblem: You are given a randoms string containing only lowercase letters and you need to find if the string contains ALL the vowels. Input: FIrst line contains N , the size of the string. Second line contains the letters (only lowercase). Output: Print "YES" (without the quotes) if all vow...

 
1:29 PM
@Mast Handled
 
1
Q: ATM Machine Simulator

LukasSI've been playing around in C for a few weeks and decided to write a program that somewhat simulates an ATM machine. I'll give you the code at the end of the post in case you're not interested in dealing with the question at all. Some facts: There are 2 languages in the program, the 2nd is Slova...

 
@Phrancis Gracias.
 
@CaptainObvious RAS Syndrome
 
Worldbuilding, you keep amazing me.
5
Q: How do mermaids perform major surgical procedure underwater?

user6760Suppose the mermaids share similar intelligent and technology with us, they also practise performing surgical operation like we do in hospital. Negate the issue of negligent during the operation the most critical problem is contamination that often reduce the chances of success, how can the merma...

 
1:42 PM
@Mast They get a witch to give them legs and then fall in love with a human surgeon, obviously
 
@DanPantry Dare making that an answer?
 
@Mast I don't want to get negative downvotes on my first post on WB tbh
I'll make it a comment, though
 
@DanPantry Good enough.
 
@DanPantry quick question; is an HTML-escaped string "practically" harmless, or "completely" harmless, when it comes to XSS?
 
Obviously, they go with their crab friend to a witch to give them legs, then they fall in love with a human surgeon. ;-) — Dan Pantry 11 secs ago
@Phrancis You'll have to escape a lot of things to make sure HTML is completely harmless
 
1:44 PM
@Phrancis Nothing is completely harmless.
I can kill you with water.
 
including script tags but also the ascii code for those script tags... and so on
 
With air, with mud, with bricks, with everything.
Possibly even with HTML!
 
if you can change from HTML - use Markdown.
 
The philosophy of "completely harmless" is flawed.
</rant>
 
If you can't - make sure you escape iframe and script tags (and any < or &lt; and that will solve most of the common problems
but most is not all
 
1:45 PM
Well, assuming a script tag would be escaped to something like &lt;script type=&quot;text/javascript&quot;&lt;
 
the best way to protect yourself against html XSS vulnerabilities is to not accept HTML; use a markdown (or similar - ie BBcode) parser that escapes all &lt;
@Phrancis that could work
You also have to escape iframes
 
Oh, so anything that say, you process through an HTML-escaper, and it is not exactly equal to its original input, should be refused?
 
You'd be better off running the HTML through a premade HTML sanitiser.
In fact, I'm not even experienced enough to cover all bases here so all I will say is use a HTML sanitiser instead of consulting me
 
lol - honesty is good
 
but any iframe or script tag (and possibly link tags) may result in XSS vulnerabilities.
@Phrancis if you want an idea of the sheer complexity, owasp.org/index.php/…
also, use https otherwise this is all moot
 
1:50 PM
Monking
 
monking @EthanBierlein - good question on gamedev
 
Thanks :)
I had no idea it'd go HNQ
 
@DanPantry Ah wow, there's a lot more to it than it first appeared
 
@Phrancis some of that is to prevent cookie-based XSS attacks (which are XSS all the same, but not applicable to your HTML storage problem)
 
0
Q: Improving Multiple If Loops

CBRI currently have a group of CheckBoxes that a user can select. Once a CheckBox is selected it filters a DataGrid simply based upon the jobs that have an employee associated with them. For example, if a CheckBox named 'EmployeeA' is selected then all jobs that are owned by EmployeeA will be displa...

-3
Q: how parse price value in c# from json data from web in c#

supa patii have got following data from google // [ { "id": "304466804484872" ,"t" : "GOOG" ,"e" : "NASDAQ" ,"l" : "767.04" ,"l_fix" : "767.04" ,"l_cur" : "767.04" ,"s": "1" ,"ltt":"4:00PM EST" ,"lt" : "Dec 1, 4:00PM EST" ,"lt_dts" : "2015-12-01T16:00:01Z" ,"c" : "0.00" ,"c_fix" : "0.00" ,"cp" : "0.00" ...

0
Q: CakePHP add action returning json

RicardoI have some questions on how I can improve this "add action" (method) in "controller": 1st: I'm using the add action only if post request. It's correct ? 2nd: This action doesn't have views ($this->autoRender = false;). It's correct ? 3rd: I set a response .json file to this action but I didn'...

 
1:56 PM
Aargh, it's days like these that I wish Stack Exchange allowed for accepting multiple answers.
 
This might be relevant to people here. Someone made the game XCOM playable in Microsoft Excel:
 
@EthanBierlein accept the best one and updoot the rest
 
Two, actually.
One of them got removed
 
1:59 PM
I imagine that site is a magnet for spam
 
> "Spammers hate and despise them, trolls run in fear from them; they're... Stack Exchange moderators!"
2
 
na na na na na na na na mod-man! mod-man!
2
 
@EthanBierlein This one weird trick lets them remove posts, spammers hate them!
4
 
@SuperBiasedMan 12/10 would make ad for that and put it on... sites...
2
 
Anyone with exp with ASP MVC concerning authorisation filters?
 
2:02 PM
@DanPantry Potentially, what's happening?
 
@EBrown trying to work out how I can allow access to a resource based on forms authentication or token authentication.
So, a user can have either/or but can't have neither.
 
Ah, I'm not the person on that, then.
 
Would I be right in assuming I can't put two attributes on the controller method and should instead put a single attribute that handles both of those actions?
Ah, right, never mind :-)
 
I've never used Token authentication.
 
@DanPantry Putting both attributes will probably try to validate both the methods, which would lead to failed authentication in all cases. You'd be better to create a custom authentication filter attribute!
 
2:09 PM
@TopinFrassi That is what I thought. Bummer :( All of our authentication currently uses the inbuild authentication forms mode, which means Il'l have to rework that, too.
Maybe it's just a better idea to use otken authentication and not forms authentication instead of both, given that this is an API application anyways.
 
@DanPantry Yeah, definitively. Token would give you moar freedom
 
@CaptainObvious -8 and closed, justice has been served. Will probably (/hopefully) be deleted soon.
 
@DanPantry I run both the production and development DB's at work.
 
Everything is working fine - plug for Code ReviewmikeTheLiar just now
 
@Duga Finally, an SO user who rightly recommended a question for Code Review.
 
2:18 PM
@EBrown wat?
 
@DanPantry We don't really have designated production/development DB's either.
 
@CaptainObvious closed
 
@mikeTheLiar Why is there no automatic way to migrate to Code Review (via close->off topic)? — Walter 54 secs ago
@Walter I think migration options need to be manually added and as CR only just made it out of beta maybe it's still being discussed? According to this it hasn't been made a target for migration yet. — mikeTheLiar 16 secs ago
codereview.stackexchange.com would be a better site for such question — Bohuslav Burghardt 9 secs ago
See What is the latest on adding Code Review to Off-Topic Migration Options?. Also, comment thread on this post are not a good place to discuss this. Please use Meta instead, — Phrancis 56 secs ago
This question looks like it might be a pretty good fit for Code Review.SE, provided that (a) you want every aspect of your code reviewed, not just some, (b) your code is already working, and (c) you're asking for a review of concrete, real code, not abstract design (whether or not it's expressed as code). If you agree with all of those, please read about what's on topic, and, if your question fits that, delete it here and repost it on CR. — Phrancis 50 secs ago
 
2:49 PM
1
Q: Is it a good OO design of this code for calculating length with different unit?

FreewindWe have an exercise to design a simple library, which can calculate some length with different unit, e.g. 2m*2 + 20cm/2 - 5mm and the result can be any of: 4.095m 409.5cm 4095mm I want to design it in Object-oriented, and have a solution like this: public class Length { private final ...

-1
Q: HOW TO PARSE UNWANTED DATA IN c#

supa pati public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { System.Net.WebClient wc = new System.Net.WebClient(); byte[] raw = wc.Dow...

 
@CaptainObvious NOT BY SHOUTING
4
 
@DanPantry ARE YOU SURE ?
 
YES HE IS SURE
 
@CaptainObvious Floating point comparisons... now you have 1.999999996 problems.
3
 
in The Heap™ - Consultancy ©®, 4 hours ago, by Tom V
@dezso Their chat is extremely lively without the bots already, so I suppose they hang out in chat more than on main site
3
hello extremely lively CRitters!
 
2:51 PM
lol that's great
 
@Phrancis I got 0.9999999999999999 problems cause 0.3 * 3 + 0.1 ain't 1
3
 
It also seems your keyboard is broken, please find one that doesn't have its shift key stuck. — jessehouwing 56 secs ago
 
@CaptainObvious Poof!
Well, closed. Feel free to make it go poof.
 
PLEASE JUST ANSWER WHAT IN IN THE CODE NOT THE FORMATING — supa pati 1 min ago
 
@Mast you can write a bit louder? I'm hard of reading
 
2:58 PM
@Mast I'll get to it in 3k rep
 
@Phrancis lol
 
@SuperBiasedMan You don't get deletion votes at 3k.
 
@Mast poof!
 
@Mat'sMug lol. It's called the second monitor. We hang in the chat and on the main site on our first monitor pff... (And I'd need a third monitor to actually work, lol)
6
 
@Mat'sMug Gracias :-)
 
@TopinFrassi Currently only got one monitor. Awful.
 
@TopinFrassi I have 3 monitors. It doesn't help distracting.
2nd monitor is just more interesting than everything else
 
@SuperBiasedMan That's 10k ^^
 
@Mast Oh we misread each other XD I said in 3k, I'm at 7k right now.
 
the Winterbash countdown is wicked awesome
 
2:59 PM
@SuperBiasedMan Ah, right. Figures.
 
@Mat'sMug if you want to look at art, rather than a countdown.
 

« first day (942 days earlier)      last day (3074 days later) »