« first day (2501 days earlier)      last day (2334 days later) » 
00:00 - 21:0021:00 - 00:00

12:00 AM
A: Fibonacci function or sequence

Jon SkeetC# 4, 58 bytes Stream (69; 65 if weakly typed to IEnumerable) (Assuming a using directive for System.Collections.Generic.) IEnumerable<int>F(){int c=0,n=1;for(;;){yield return c;n+=c;c=n-c;}} Single value (58) int F(uint n,int x=0,int y=1){return n<1?x:F(n-1,y,x+y);}

It wasn't 9 months ago
The thing that said 9 months was a dirty lie
Best candidate for Jon Skeet of PPCG?
I mean, Dennis. Right? Most rep
12:22 AM
@Pavel IIRC there's a 'fun' deleted answer by him
metagolfscript or something
@Riker Back before PPCG existed there were code golf competitions on SO. Jon Skeet created a language to accomplish the task at hand in one byte, since that wasn't against the rules back then.
no, this was on ppcg I think
also, eleven: ppcg edition
cc @Mego
i.stack.imgur.com/YDeRW.png - cutout of penguin face if anybody wants to make a better 11
Score: 10
Created: 19 hours ago
Clicks per day: 0 (6 total)
SE division by zero fail ^
12:52 AM
How does that result from a fail in division by zero? And anyways, we all know 1=0÷0 :p .
1:09 AM
@Zacharý I suppose it rounds down the number of days, so that Clicks per day is 6÷⌊19÷24. I suppose SE uses ⎕DIV←1 then. ;-)
1:23 AM
tosses a stick at @Adám for no real reason
ANYWAYS my brain hurts. How's everyone else
@ThomasWard Is this some sort of inside joke that I am unaware of?
@Zacharý no, it's my way of trying to ping @Adám in multiple places because he was asking about my efforts in a Python port of the TIOBot.
so i'm just trying to poke him in multiple places :P
Why the "stick" though?
'stick' was the first object that came to mind :)
So throws a Jon Skeet would work as well? (I couldn't think of anything ... sorry)
1:30 AM
otherwise my mind usually says "Salt", "Pocket Sand", or "The entire Bash manpage in printed book form" (the implication there is it's a very heavy object from hell because the Bash manpage in Linux is about eight-hundred pages long on standard Letter sized paper)
Pretty much, but it has to make sense really :P
TL;DR, I'm slightly chaotic random, people just tolerate me :)
In that case, throwing "Mastering Dyalog" is the best option, (it might catch his attention )
meh, he'll see my messages. Most of the PPCG people are good at checking their @ ping highlights :)
drifts back into the shadows
1:55 AM
@ThomasWard #3 is the longest to type though :p
but pocket sand is best because it's pocket sand, and it's longer than 'salt'
._. the Dyalog APL Keyboard has two Windows keys but not a dedicated APL key.
@Adám Feature request for the language bars: Disable the keyboard shortcuts when I click the x in the top right corner so I can type ` again
It's also 110 dollars
2:06 AM
has anyone used the OEM cooler w/ Kaby Lake?
It's really loud and idk if this is normal
@Downgoat Build a computer recently? If your processor fan is louder than your GPU fans something is probably wrong.
I just looked at the starboard... ಠ_ಠ
@Pavel yeah, I guess something is wrong
I am at BIOS and CPU sounds like Saturn V preparing to lift-off while GPU is pretty much silent
should I return the CPU (itself is fine) + Stock fan. Or should I just get an aftermarket cooler
@Downgoat Aftermarket coolers are better than the OEM one anyway, so it wouldn't be a bad idea to get one even if the OEM one was working fine.
oh ok thanks
Also Pro Tip: Make sure RAM is actually plugged in before wondering why MoBo says no RAM
2:16 AM
@Downgoat My MoBo's beep code for "RAM failure" and "Your monitor is off so the video card did a stupid" is the same thing. Took me forever to realize.
Not sure why my GPU fails if my computer boots while the monitor is off.
@Pavel are the 2 connected w/ DP?
@Downgoat Yes, actually.
Are you asking because there's actually a perfectly reasonably explanation and not my GPUs being haunted
Or because you have the same issue
@Pavel DP is bi-directional
@Downgoat I've installed Babel
2:32 AM
@ATaco :D
you should totally install github.com/vihanb/babel-plugin-jsx-to-dom
Not much has changed so far besides an increase in load time.
I already have, but I've not set it up correctly.
I'm not sure how to actually use the Dom.
@ATaco are you recompiling every request
I'm not even at the request stage.
I've got a very basic Express server set up with the babel plugin.
@ATaco are you using webpack or browserify?
oic you're using for backend
Actually, I could probably just install JSDom.
2:38 AM
what are you using JSDom for
Well NodeJS + Express doesn't have Dom capabilities by default.
And react is the devil.
@ATaco why do you need DOM capabilities on server side
That's where I'm actually using the Plugin.
@ThomasWard shashasha
But, it works.
Just because you've designed something to be used in a particular way, don't expect users to agree.
With this, I can set up a really bad idea for a webserver.
I'm really tempted to buy an RGB mouse mat but I know I shouldn't.
@Pavel Why not just get an RGB mouse
RGB Chair.
3:04 AM
RGB house
@Downgoat Because I have one already
My CPU has thermal paste on it (I guess from fan?) so if I put this cpu cooler: pcpartpicker.com/product/93Crxr/cryorig-cpu-cooler-h7 will the thermal paste cause any problems?
Probably not, but just in case, clean off the old and put on new thermal paste
hey off topic question here, how can I make a chatroom to talk about a project?
@Mego They tested this on LTT, apparantly the thermal paste used doesn't matter at all. Even if it's five years old.
@JoshCz I don't see why not.
You can make a chatroom for anything
3:11 AM
well I mean what do I click?
@JoshCz go here: chat.stackexchange.com and scroll to bottom of the page
There'll be a "Create a new room button"
no just show frozen for me
@Pavel Really? I was always taught to replace the thermal paste whenever you replace the cooler, because some inevitably ends up on the cooler, and without replacing it, it may not make a good seal on the new one
need 100 rep
ah that answers my question
can one of you guys create a room for me?
3:13 AM
@Mego I do it just to be safe, but yeah. You shouldn't need to.
@JoshCz I don't know that that is allowed unless it's for moving comments to chat
@Pavel I also always replace the thermal paste because I always inevitably get hair in it or I accidentally stick my finger in it. I'm not the most graceful person inside of a computer tower :P
the title should be EA's SWBF2 Project-Ceasefire. Its an idea for an in-game protest. if you are interested in helping me with the project you should be allowed to make your own chat room for it right?
@JoshCz Theoretically yes, but creating a chatroom for another user to bypass rep requirements could be viewed as an abuse of the system
Anyone here with a better handle of Julia macros than I do?
3:16 AM
@eaglgenes101 You could ask @Riker he's used Julia but I'm not sure how fluent he is in it
I'm trying to compact loader.jl further, and the next logical plan of attack is to use a macro to replace the multiple instantiations of (x=¬x)%2!=0 with a macro
Can't use a function, since they can't reach for a variable in an outer closure without obnoxious syntax
And x=¬x is an assignment
@Mego I mean, I posted a question in Video Game Programming but its already flagged for not being a question, so I guess chat is the only way to get help for my project. I guess I just have to find someone wants to help to create the chatroom right?
This is certainly not the appropriate place
you are completely correct, shouldn't post this here. but cause of the rep system I don't really have a lot of options. I have an idea that I think is too big for me so naturally I thought stackexchange was the place to go. Reddit would be waaay too hard to manage by myself
@JoshCz Try reddit
3:28 AM
Just participate on any SE site, and get the rep you need to start the chatroom. 100 rep really isn't hard.
It's 10 answer upvotes. That's 10 good answers. You can knock that out in 10 minutes on Stack Overflow if you have a basic understanding of a programming language.
ok I can give it a shot
thanks for the help
4:25 AM
Also, I want to do a self-balancing tree structure, where the structure of the problem forces people to implement one of several self-balancing tree implementations without forcing them
> forces people to ... without forcing them
0/10 oxymoron
Err bad wording
But anyway, I want to make the challenge have people implement a O(log(n)) retrieval data structure
How would I go about writing such a challenge
can you elaborate on what sort of data structure?
Currently I have this: Implement two subroutines. The second, given a parameter, returns a truthy value, with time complexity equal to the number of previous calls to the first fucntion, whether the first function was ever called with that parameter
Man I am on a miswording roll
*The second, given a parameter, returns a value, with time complexity equal to the number of previous calls to the first function, whether the first function was ever called with that parameter
*equal to the logarithm of the number of previous calls to the first function
The challenge not-so-subtly nudges people to encode some sort of self-balancing binary tree to solve the challenge
Are there better expected submission formats than to ask for two tightly coupled functions
4:41 AM
two independent programs with same input?
people won't like saying "two functions" if a language doesn't have them
Which is precisely why I'm asking for a better challenge queston
One that isn't nearly reliant on the language in question having functions
5:40 AM
tfw you get your first pull request from someone else on one of your independent projects (thanks @Mr.Xcoder)
@NickClifford You’re welcome :-)
Q: Large size letter

l4m2Convert a letter(you can choose upper or lower) into a picture, which only consist of '.' and '#' (or any two reasonable char), which shows the letter. E.g. A -> .###. (or any shape that understandable) #...# #...# ##### #...# If your solution relies on the system font, it...

6:17 AM
@Mego Seriously? I don't think so. -- Well, mostly because there isn't many good questions to answer...
@Mego I suppose if anyone else is interested in the project they can create a chatroom. You are not interested in the project so it makes sense that you don't help.
--- What may be the problem when <100-rep users create chatroom? I can't think of any problem. ---
@user202729 The rep/priv system was designed so that < 100 rep users can't create chatrooms. I do not know the rationale behind that decision. Probably to help combat spammers.
Q: Should we have a tag for dice-related challenges?

MegoA comment in the Sandbox prompted me to start this discussion - should we create dice and tag dice-related questions? Information From a simple search, I see 43 challenges related to dice (plus at least 2 challenges active in the Sandbox) right now There would be some overlap between dice and ...

6:36 AM
@ais523 @Zgarb @EriktheOutgolfer @LeakyNun You can now use this tool if you need to write Brachylog on any webpage.
(it is especially nice to not have to copy paste all those subscripts-superscripts but rather use ^ and _ compositions)
7:15 AM
@ThomasWard Unfortunately I need to sleep sometimes. But anyway… Yes?
@StevenH. F5.
@ThomasWard @Riker At work, people usually throw SALT at me to get my attention.
@StevenH. You're only talking about the APL keyboard, right?
7:35 AM
Q: Happy Birthday, Finland!

Antti29Introduction As is known, in 2017, Finland celebrates its 100 years of independence. To mark the occasion, it is your job to produce a Finnish flag for everyone's enjoyment. Challenge Create a program or a function that produces the flag of Finland (the grey border is there for presentation pu...

@StevenH. You know that backtick,space gives ` right?
7:50 AM
... So it does. Thanks, @Adám!
5 hours later…
12:40 PM
@Fatalize sure, I'm already using it for other language bars :p but it's mostly good for APL
@EriktheOutgolfer ANy other languages I should add?
@Adám rn I just came home, can't really think much :p
@Fatalize copy-paste? you click on them or use combinations then TAB
but please note that it doesn't exactly work with TIO, it adds trailing TAB chars
Because TIO handles TAB specially.
@Adám Husk
12:56 PM
btw the biggest problem I see with the Brachylog one is that there's no separation, and I think there can be some
@Mr.Xcoder Is there a plaintext table of commands?
¤½↕↑↓↔←→∟¦ ¡¿‼…‰†‡√≤≥±∂∫∞≈≠≡⌐¬÷×
@Mr.Xcoder he doesn't want the whole codepage, only the commands
@Mr.Xcoder That's the code page. I don't need that.
idk then
12:58 PM
@Mr.Xcoder Like github.com/barbuz/Husk/wiki/Commands but without markdown.
if you put a whole code page in the language bar then it would be unnecessarily large
So just remove markdown.
for example I don't think is a command in Husk
Wait... Is the character to the right of diamond a literal square?
12:59 PM
(or is my font lack of support for that character?)
@user202729 Tricky, but I did it for Jelly. I could also use regex to parse the rendered HTML, but that may cause some angels to bleed
and its purpose for a number is to square it
Yay I finally got it working on Safari too
So just do the same for this one.
> could [...] use regex to parse [...] HTML
1:01 PM
Well, in general no, but in that case yes.
(with some manual handling)
I remember that being a famous question on SO...
it's not guaranteed that every wiki has the same format
@EriktheOutgolfer Yes that's why there should be some manual handling.
@user202729 Yay:
'\| \`\` \` \`\` \| ' '\` \`\`' ' \`\` ' ' \| \`\` ' '\` \| ' '^\| \`' ' \| \`' '\`| ?\|'
Huh? Where is that from?
@user202729 My regex parse Jelly's wiki.
Can I get the raw markdown of a GitHub wiki without forking it?
1:07 PM
Probably clone it or view raw? Let me see.
@Adám I don't think cloning it keeps the wiki
Yes, that's the wiki...
Hah, I found an easy way to strip markdown: Select and copy. :-)
@Adám doesn't work for me
@EriktheOutgolfer What do you get?
1:13 PM
that's obviously a table, but it doesn't look like a table when you copy-paste
@EriktheOutgolfer When I paste-as-object in APL, I get a 315 rows, 5 columns matrix.
@Adám tab-separated rows instead of |-separated, it doesn't define the headers of each column
@Adám this
I don't think what you're getting is a matrix, try ]box on -style=max
@EriktheOutgolfer Depth is +2 and shape is 315 5 so that's a regular matrix of vectors.
The tab handling of the language bar use keydown , the same as how TIO handles tab. You need higher "level" than TIO to override that. Any idea? (actually both TIO and language-bar preventDefault and both are executed) -- also I think it is not too hard to special-case TIO.
@user202729 I'm intending to suggest to Dennis that he integrates it for languages that have it.
1:18 PM
@Adám I don't think that's really possible
@EriktheOutgolfer Why not?
@user202729 well, maybe add optional backspace as an option
@Mr.Xcoder Reply to message with empty content is not possible.
it's not a reply
1:19 PM
I think it's pretty weird.
@user202729 Didn't mean to reply. ^ means approval.
@EriktheOutgolfer It used to be. With the :<message_id> format.
Oh, probably the userscript.
no it never was
Yes, because of Caret Reply
I just edited really fast
@Adám because Dennis can't special-case every 3rd-party bookmarklet or add-on or something in the world
@Adám however, what I suggested above (optional backspace) might be possible?
like, backspace the extra tab
1:21 PM
@EriktheOutgolfer Of course not, but he himself has expressed a wish for "keyboards". He could just take the code and run it for those languages that we have it for.
Replace the key Tab with another key is pretty easy. Just change the 900.
@user202729 Which key do you suggest?
Not sure. Just saying.
Well, when the language-bar script function for keydown (function fk) run, the Tab has not been inserted yet.
Probably space? It's not used much in golfing languages.
And even if it is used, the chance is low that 2 characters precede it is a valid shortcut.
@user202729 I thought of that, but I'm afraid it would become frustrating whenever it would clash. Maybe Ctrl+Space?
2 hours later…
3:08 PM
@eaglgenes101 I know some about julia macros but not a lot, sorry
3:47 PM
A: Sandbox for Proposed Challenges

J. SalléPour me a drink, will you? The Challenge I am thirsty and need a drink, but I don't know what to order. Your task is to provide me with either a drink or options for one. I/O Input will be either a base or a drink name. If given a base, your program should output one random drink from a list...

I was going to make an advent challenge link thingy at the bottom of each post (with all 25 links) but then I realized that every day I have to edit them all which will eventually cause the front page to entirely just be advent challenges :P
@HyperNeutrino Good grief. I read through the challenge three times but didn't see that they were all the same width... :-/
so I might make a new sub-site of my home site and just add a link to that in each question
@AdmBorkBork haha :P dw I do that too :P
anyway gtg o/
Q: Advent Challenge 4: Present Assembly Line!

HyperNeutrino<< Prev Santa was able to remanufacture all of the presents that the elves stole overnight! Now he has to send them to the assembly line for packaging. He usually has a camera to supervise the assembly line both to make sure the elves are doing a good job and because assembly line pictures look ...

4:06 PM
Q: Iterated phi sequence

Simply Beautiful ArtRelated: Iterated phi(n) function. Your challenge is to compute the iterated phi function: f(n) = number of iterations of φ for n to reach 1. Where φ is Euler's totient function. Related OEIS. Here's the graph of it: Rules: Your goal is to output f(n) from n=2 to n=100. This is code-...

4:41 PM
Today's Google Doodle is a graphical programming game. You see a level map once you hit level 4 and it says what the minimum possible number of tiles is needed for each level's solution. Golfing! Also, they say 6 is the minimum for level 6, but I just did it in 5.
Well, they certainly didn't brute force all possibilities.
That level is quite hard, too.
Last level certainly took some thought. It helps a lot if you seek to minimize the number of tiles rather than the number of hops.
@El'endiaStarman That's amazing
Y'know, an atomic golf challenge could totally be made out of this game.
I figured out 6 command in a short amount of time. Let me think about 5...
No problem, just figured out the solution.
4:47 PM
Just figured out another 5-tile solution.
My solution was Try it online!
@user202729 That's different from both of mine. (Looks like I don't remember how that hover text thing works.)
I see without hovering.
Just finished level 4 at 6 steps.
Chat is inaccessible on desktop now.
boo, can't make the bun jump into void
4:54 PM
Okay, dunno what happened with chat but I'm back now.
You need [spoiler](http://www.example.com "Content").
But some people prefer TIO spoiler.
@NieDzejkob I know right!? If you going to give me total control over a bunny, at least allow me to make it commit suicide! :P
4:56 PM
I can't figure out level 4 for the life of me lol
Just two squares.
@NieDzejkob That was literally the first thing I tried.
Though you have to admit, you get much more elegant solutions if you disallow jumping into the void.
Not gonna click that just yet. I still want to figure it out later
@El'endiaStarman And much more longer solution. Not sure if it is possible to get 6 in level 6.
4:59 PM
@user202729 That's horribly inefficient though :P
@user202729 That was tricky, but I got spoiler: 6 steps as well. Edited to fix solution.
@El'endiaStarman If I read that right, that's 5 steps
@El'endiaStarman I don't get it, that just links to example.com
@El'endiaStarman @user202729 BTW, thanks for putting everything in spoilers. I appreciate it ;)
What is this?
5:06 PM
@Pavel Hover over the URL
24 mins ago, by El'endia Starman
Today's Google Doodle is a graphical programming game. You see a level map once you hit level 4 and it says what the minimum possible number of tiles is needed for each level's solution. Golfing! Also, they say 6 is the minimum for level 6, but I just did it in 5.
@Pavel Hover over them to see spoilers. But don't if you don't want to see them.
Oh I see
@NieDzejkob Two turns, two hops, two loops.
@El'endiaStarman I don't get your notation
5:08 PM
I'm guessing L == rotate left, F == hop forward and LOOP7(...) == '...'x7
Yeah, I haven't solidified my notation just yet. Sometimes, for loops, the exact number matters, and other times, it doesn't beyond some minimum number.
then I see two loops, two hops and one rotation
Oh, I missed one.
There, fixed it.
Lordy I can't even figure out the 7-step for level 4
5:24 PM
@Sherlock9 nested loops are possible, it is also possible to change the iteration count
Yeah, I'm terrible about spoiling myself
Here's to the other levels
Does anyone here have experience registering to use the SE API?
oh, you can change the number of loops?
@El'endiaStarman oh it cannot fall down:)
5:33 PM
Ohhh lookee here @user202729, spoiler: level 6 in 4 steps!
@Adám Is that your page? Could I get V added?
well, I can do level 6, in 6 steps, without changing the size of the loops or attempting to jump into the void
@El'endiaStarman OH you can adjust the loop size!
The bunny has anti-"jumping into the void" properties
Dangit, I've so far got three 7-step solutions for #5
5:40 PM
F⁴«↷²F⁴«*↷²* Charcoal translation of my solution to level 6
@DJMcMayhem Is there a single regular (i.e. easily machine-parseable) list of commands?
@Adám Not yet, but I could make one.
5:58 PM
@DJMcMayhem I can get various pieces from the wiki, but Insert mode has a broken link. Would it be easy for you to do? A table of Command, "Name" (i.e. usage), Description would be perfect. e.g.:
é	{count}é{char} 	i	Insert {char} before cursor {count} times. Synonym of {count}i{char}<esc>
ú	ú	z 	Sort, but you can specify flags and/or a pattern after you call it\n\núú\nSort the line
@DJMcMayhem Like that ^
@Adám There are a couple things that might make it harder. First off, I'd really like to have the whole code-page covered, but not every byte is assigned yet. Can the unassigned bytes be left empty in "name" and "Description"? Also, V is modal, so lots of bytes have completely different affects depending on the mode the interpreter is in at the moment. Should I just pick one meaning, or list all of them? Also, where should aliases go in the table?
Another thing that might cause an issue is that a good amount of the code-page is unprintable. I'm not sure how much of an issue that would be
@DJMcMayhem Having the entire codepage is probably a bad idea, as it makes the bar even bigger. (Why do you need to type unassigned bytes?) But, yes, anything but the first column may be empty. Bytes can just occur twice if they have multiple meanings. I will arrange them in a singly entry like already the case with APL. What is an alias?
@DJMcMayhem That is more of an issue. I may be able to include them, but it may render funny. Do text fields accept them?
6:13 PM
@Adám Because even though some of them don't have an associated command can still do things (for example, they can be in a string literal or a regex shortcut. For example, ô has no command, but matches a <TAB> character in a regex).
@Adám On the husk page, it says enter an alias and hit tab. Like cur<tab> enters ¤
@Adám TIO does (and SE chat 1/2 the time).

If a lot of these weird requests would be a pain to implement, I'd be ok if you'd rather not include V. I can enter all of these fine in vim, I just thought this might make it easier for other users
@DJMcMayhem Just list it as ô ô o matches <TAB> character in a regex
@DJMcMayhem Other than the unprintables, it doesn't seem hard. Husk only took a couple of minutes because I had an almost regular source. I just write small APL programs to transform the data to the required JSON.
6:34 PM
A: Sandbox for Proposed Challenges

El'endia StarmanGoogle's Hopping Bunny atomic-golf code-challenge On December 4, 2017, the Google Doodle was a graphical programming game featuring a bunny. The later levels were nicely non-trivial and they seemed like a great candidate for an atomic-golf challenge. Details Game There are four available mo...

What the crap?
A business is legally obligated to not close?
to not close and lose 15 million dollars over 5 months
:o... WTH? And the judge wasn't arrested or something?
7:12 PM
CMP: Which, if any, of the GitHub Pages themes should I use for abrudz.github.io/lb? strawpoll.me/14547596
@Adám Minima, IMO
@Pavel ha, the only invalid choice. Clever!
@Adám Why's it invalid?
@Pavel Because while on the list of themes I copied for the strawpoll, it can't seem to find it in GitHub's UI for selecting theme.
@Mr.Xcoder i assume it will be appealed
7:58 PM
:41539826 Jelly, 1 byte:
ಠ_ಠ Why'd you delete it?
@cairdcoinheringaahing Because any language where this isn't a builtin or extremely trivial doesn't have a reasonable representation for floats in the first place.
It is only a CMC
Yeah, but there's no point to the CMC.
Unless you want to try doing it creatively and not concisely
Hmm, I got 6 bytes in Add++: L,d1%_
If there isn't a floor builtin, most languages can modulo by 1 to get the float part, then subtract that from the original number
8:14 PM
You could always try doing it in brain-flak :P
@Pavel I found a language where it is more creative than concise:
> Input
>> ⌊1⌋
>> Output 2
Language is Whispers :P
@Pavel Brain-flak, 38 + 2 == 40 bytes: {{}([{}]((((()()()){}())()){}{}){})}{}
@DJMcMayhem What's the -cr for?
(What does it mean)?
@cairdcoinheringaahing -c == character mode (string input and output), -r == reverse mode (pop last input first)
I promise it's not related to Code Review :P
@DJMcMayhem I'm guessing (as it takes string input) that you split on the .?
8:20 PM
while peek():
    push(pop() - chr('.')

# Implicit display
Well, I guess it's actually chr('.') - pop()
V/Vim, 3 bytes: f.D
Ironically, both of the languages I have written are completely incapable of handling floats in anyway, so they have to resort to string manipulation
@Pavel Hexagony, 3 bytes: ?!@
Python can tie V and hexagony :) int
Q: Visible Dice Faces

FlipTackA traditional Western die is a cube, on which the integers 1 to 6 are marked on the faces. Pairs that add to 7 are placed on opposite faces. As it is cube, we can only see between 1 and 3 faces (inclusive)1 at any given time. Opposite faces can never be seen at the same time. Your task is to wr...

Yeah, but that's not a full program :P The others are :P
But it's a valid submission
I just got over 100 WPM on a typing test for the first time ever. \o/
00:00 - 21:0021:00 - 00:00

« first day (2501 days earlier)      last day (2334 days later) »