« first day (1067 days earlier)      last day (1321 days later) » 

12:00 AM
RELOAD! There are 2082 unanswered questions (93.6909% answered)
12:12 AM
hey guys
I'm a C# guru.
Sorting my code review answers by most votes... here are the language tags for the top 5
Meh, I am a LOLCODE guru:
A: Down with FizzBuzz... LOL

rolflI like how you have declared the Fizz and Buzz 'constants'. It makes the code more readable. The comments are useful too, though, for consistency, the second comment should be changed from: BTW Froot will run 1 through 100 to BTW Froot runs 1 through 100 The idea of generating Froot from...

Guru's are not what they used to be ;-)
@helloworld You're right, injecting all those services wouldn't make sense, and I think that's exactly the point of this change: to force developers to contemplate the Single Responsibility Principle as it applies to controllers. To me, it sounds like you've got a "fat" controller, and the solution is to create separate controllers for these actions. If you post a specific example to [codereview SE](codereview.stackexchange.com), you can get even more specific feedback. — bishop 51 secs ago
Truth is, C# guru does not mean much. I have 5 Guru badges, 1-each in Java, Javascript, and LOLCODE. The other 2 are in C# ;-) codereview.stackexchange.com/help/badges/43/guru?userid=31503
12:48 AM
Is this bad practice in JavaScript: this[condition ? 'close' : 'error']()?
12:59 AM
@Downgoat What does that even do?
@Phrancis if condition is true, it will run this.close(), otherwise this.error()
Ok but... why is the ternary inside square brackets...?
so you don't have to do:
if (condition)
I guess it's fine. Just didn't appear very clear to me at first (but most JS doesn't)
It's not a clear way of writing it.
Also, I'm going to finish this blog post off tonight.
1:08 AM
@Phrancis What are you saying, JS has the most beautiful, clear syntax
Good grief
I want to review that SQL Q but it's all in Spanish ._.
Is there a rule restricting questions to the English language?
    CONCAT('Entradas: ', CASE WHEN SUM(CASE WHEN R.Tipo_Reg = 0 THEN Cantidad END) IS NULL THEN 'No timbró' ELSE CAST(SUM(CASE WHEN R.Tipo_Reg = 0 THEN Cantidad END) AS varchar) END,
        ' - Salidas: ', CASE WHEN SUM(CASE WHEN R.Tipo_Reg = 1 THEN Cantidad END) IS NULL THEN 'No timbró' ELSE CAST(SUM(CASE WHEN R.Tipo_Reg = 1 THEN Cantidad END) AS varchar) END) AS column5
@EBrown Not the code itself, no
1:13 AM
If anyone wants to help do some peer review on my next blog post, it's on Gist.
@rolfl I'm going on 10 months now.
> This is a pretty basic definition, but should work to server our needs quite well.
Should be serve, not server :)
Q: Why can't I throw exceptions from an expression-bodied member?

Jeroen VannevelUsing expression-bodied members allows you to define the body of a method or property as a single expression without a return keyword (should it return something). For example it turns these int Method1() { return 5; } void Method2() { Console.WriteLine(); } into these int Method1() =

Worth adding
Explanation on your DON'Ts would be interesting too
1:31 AM
Alright, I'll add both.
> A real life example of the benefits of expression-bodied members For this I'm going to use a partial copy of a class I wrote for a C# library I'm working on.
This reads like "A real life example [...]" should be a subtitle
I think it was supposed to be, I must have copy/pasta'd it.
@JeroenVannevel I know you also cannot try/catch in an expression-bodied member, do you have any good resources on this?
I can't think of a good way to explain it.
Or can you use them in a void expression-bodied method?
Maybe it's the case that throwing an error, or try-catching, cannot be done in a single expression, simply?
Well I know you cannot use them in a non-void expression-bodied member, but that's because try/catch/using don't actually have the ability to return anything. They're statements again.
Makes sense
1:43 AM
@EBrown - that's awesome that I am not the only one who never missed a day since joining. I thought I was about the only one who was also a "regular"
@rolfl Oh I've missed days since joining.
I only meant to say that my 1 year anniversary is coming up.
Ahh. OK, yeah, the badge is fun..... and a surprise, especially on sites you don't frequrent.
Feb3 was an interesting one for me:
Like, oh, yeah, I remember those sites!
The stack has a funny way of making things turn around sometimes, like this question:
Q: Configuring a google account for a child

rolflMy kids each recently got tablets, but I am struggling with setting up their accounts. I have 'temporarily' set the one up to have my google account as the account holder, because I was not able to 'legitimately' create an account for my child (younger than 13, so Google refused to create the acc...

That question has earned me soooo much.
I only asked it to get 2 hats at christmas 18 months ago.....
1:50 AM
Yeah, but consider this:
^^^ every single one of those badges is due to that question... as well as winning/tied the hat race.
All from that one?
@JeroenVannevel I have updated the Gist with all that information.
Also, @rolfl I would really appreciate your opinion on that blog post as well.
Heh, just because I am a C# Guru, twice, does not make me a C# Guru... .;-)
I'm not a C# Guru
I don't know what member-body expressions are (typo intended).
Hey @Mat's.
Whether or not you are a C# guru (I'm sure @Phrancis is not :P) I still appreciate any/all eyes I can get to help proofread it. :P
1:54 AM
hello :)
@Mat'sMug Well you should look at it as well. :P
I'm totally biased against expression body-members
Would be nice to see the working snippet in this answer. — Stefan Steinegger Aug 24 '15 at 12:17
@StefanSteinegger there is no working snippet -- throwing an exception from an expression-bodied member is simply not supported — Jeroen Vannevel Aug 24 '15 at 12:18
@JasonMalinowski: I know, I just said it would be nice to see it. — Stefan Steinegger Aug 25 '15 at 6:35
Does he not get it?
@Mat'sMug They're actually really handy.
they're sugar
sugar pills
Yes, but they can also reduce LoC/character count.
1:57 AM
eh, maybe one day I'll do something with them
Either way, you should still proof it. :P
@EBrown that's great, makes C# a better competitor on PPCG :)
So you would rather see:
public int Right { get { return Location.X + Size.Width; } }
public int Right => Location.X + Size.Width;
don't bother. yes
I like seeing a get {} scope when I read a getter
But you could read an expression, and see that the expression starts at => and ends at ;.
2:00 AM
@EBrown That guy is on Roslyn!
Which is it's scope.
but it doesn't say get, so my feeble mind reads public int Right and sees a public field. the association with "it stinks" is just automatic.
Anyway, I'm going to take my drivers test on next Wednesday.
@Mat'sMug Well that's no excuse not to use them on methods, then.
perhaps not
2:01 AM
public override string ToString() => $"({Location.X},{Location.Y},{Size.Width},{Size.Height})";
So you'll go on about how this bloats a programme, but not reduce the length of your return statements? :P
you know, = and > are as many characters as { and }
That may be true, but it also removes the return bit.
And removes some of the whitespace.
yeah. sugar pill
Hey, don't start a holy war....
I think we just did.
2:04 AM
^^ yeah, it's "program", not "programme" ;-)
Well, Option + Shift + J puts a literal ASCII apple in my text.
Q: SQL vuln scanner

13aalI've created a program that will be used for pentesting, what it does is scrape the first page of google out of an array of search's. It then attempts to find a SQL error within the site by adding an apostrophe to the end of the URL. If the site returns a sql error, it logs the URL to a text file...

2:25 AM
possible answer invalidation by h.j.k. on question by h.j.k.: codereview.stackexchange.com/posts/63168/revisions
SO is not a code review site. — eduncan911 26 secs ago
Q: Lo Shu Magic Square - checking for diagonals

BrianI am having difficulty with a Lo Shu Magic Square assignment. Here is what I have def magic(): a=[] for i in range(3): a.append([]) for j in range(3): a[i].append(input('enter values')) print a l1 = a[0][0]+a[1][0]+a[2][0] l2 = a[0][1]+a[1][1]+a[2][1] l3 = a[0][2]+a[1][2]+a[2][2]...

@Mat'sMug American English isn't premature golfing.
Internet slang is.
2:54 AM
This probably belongs to CodeReview codereview.stackexchange.comelclanrs 32 secs ago
@maria - If I understand your requirement correctly, you want to suppress bracketing in the one special case that all numbers would receive brackets. You can do this by modifying mode() to return an array of all values tied for the mode and to return an empty array if the return value would otherwise have had a length equal to the number of unique values in the array. (There are lots of posts on the web about how to find the number of unique elements. See, e.g., here) — Ted Hopp 5 secs ago
3:12 AM
3:29 AM
How is everyone doing on this fine evening?
Q: Recorder for keyboard and mouse events

jdsninjaI'm building an event recorder. So far the code looks clean but I feel I'm missing something that can make this code even better. Is composition a better solution? If yes, how can I do it properly in this context. Do you know a better way to share the Recorder across all other components? Will i...

Pretty well here, yourself?
I'm doing well.
@CaptainObvious Good migration from SO that one
3:56 AM
Q: Fixed-length Sequences in Swift 2.2

milosThe following is an implementation of fixed-length sequences that makes very exotic (and hopefully fun) use of Swift 2.2 types. The question is what exactly is the cost of having the type checker guaranteeing sequence length in this way on safety? performance? readability? import CoreGraphics //...

1 hour later…
4:57 AM
@CaptainObvious exotic is one way to describe it, yes..
5:11 AM
@EthanBierlein I'm tired, yet I can't sleep.
5:30 AM
Q: CSS3 Dropdown Menu (touch device or mouse compatible)

Alex GrayIf you'd like the files: https://github.com/agraymd/Animated-Profile-Menu Working Demo: http://jsfiddle.net/tddfevhv This may be rather basic, but I wanted to experiment and learn with some of the upcoming CSS3 techniques. I wasn't able to come up with an HTML/CSS only solution, and I had to wo...

5:43 AM
@DVK: sometimes the correct answer is not the one you expected to get. I totally agree: Using select * in production code is code smell (e.g.: in my company this would fail a code review) — a_horse_with_no_name 23 secs ago
6:27 AM
@Phrancis ಠ_ಠ
6:54 AM
@SagarPanwala are you handling fragments in your adapter? or what kind of views is it? Could you maybe post your code to codereview.stackexchange.comJakub Holovsky 54 secs ago
oh god why
" I was just returning an IEnumerable but in a code review I was told NO, change it" - why? Any explanation? — Dennis 29 secs ago
There are several ways that this code could be improved (to remove repetition, etc.); I suggest you wander over to codereview.stackexchange.com with it... — Roger Lipscombe 9 secs ago
7:10 AM
monking @Quill :)
I keep getting calls from "no caller id" numbers
one of these days I'm going to answer it "Hello, City Morgue"
They're likely automated circulars
That happens on our work phone too (which could only be called by random number diallers)
German is a weird language
in what sense?
7:32 AM
it's just.. weird
in all senses of the word
One thing I dislike about german is that there's no clear boundary as to when a word ends or begins (due to compound words)
So the only way to know what a word means is to know what each part of that compound word means
This is off-topic on StackOverflow. You may want to try Programmers.SE or CodeReview.SE instead. — Luaan 5 secs ago
I'm voting to close this question as off-topic because I think it rather belongs to codereview.stackexchange.comDjizeus 57 secs ago
Q: Improving my code to be less repetitive

Diondrick Bufordjust lloking for some useful feedback on my programming, im only three days in and trying to improve here is the code:C++ #include <iostream> using namespace std; const double SECT_A_TICKPRICE = 20; const double SECT_B_TICKPRICE = 15; const double SECT_C_TICKPRICE = 10; double getSeatsA(); ...

@CaptainObvious Improving my title to be less repetitive
Finished my refactor. wediditreddit.com
A: Collating client ratings

PhrancisFROM If you properly indent your code, you will realize how deeply nested it is. You have roughly 8-9 nested FROM clauses. Consider improving the logic. Do you really need to drill that deep to get the data logic you are after? It's hard to suggest specific improvements without knowing your da...

Interesting fact: Jamal is ranked 8 for edit suggestions on SO
7:50 AM
possible answer invalidation by Quill on question by Soumik Dutta: codereview.stackexchange.com/posts/119468/revisions
it's fine @duga
Interesting fact: @Malachi and I were tied for most edit suggestions
Is that why you're doing so much editing today? :D
I've done like four today
Malachi and I both got past the edit suggestion stage
our edits are instant
except tag edits for me
so I can still suggest tag edits, but he can't, because his are instant
Naruto answer; accepted non-selfie answer with 0 score: Android UI code for a test job
Ripe zombie; open question with answers, at least one answer having score 0, no answer having score > 0: Nesting BsonDocuments in MongoDB queries
8:03 AM
Git chose to do a GC at the worst possible moment :(
And it is at that moment I realised I had 8000 objects in my git repo
git is failing to do a rebase
because it changes line endings in the middle of the rebase
because they are mixed
I'm convinced I am doing git wrong.
Q: Are there mistakes in reading file?

StepUpI've recently made a test. There were four tasks. One of them was to improve following code: public class FooFileProcessor { public void ProcessFile(string filename) { Stream fileStream = File.OpenRead(filename); Console.WriteLine(ReadAllContent(fileStream)); fileStr...

@DanPantry aren't we all?
it's weird, I have an .editorconfig and .gitattributes both setting line endings to crlf
and yet apparently I'm having line-ending errors?
Monking @all
At some point, we might want to clean up the comments on this
8:16 AM
wow. that's a lot of comments
I'd rather not leave 40+ comment flags when the mods are sleeping
SEDE tells me 108 comments total
I don't think @200_success is sleeping, he was here earlier
Q: Class instants call

TimemachineI often use the following structure for some classes like SQL and HTML Building classes. I like using classes like this because I can call them in a nice order and with less code. What do you think? Is this structure a good solution? Is there may a better way to use objects with tiny code? I ...

gah, I hate those random chills down your spine
'4' + 2
> "42"
'4' - 2
> 2
somebody asked me today why JavaScript does that
8:20 AM
Because javascript
Yet another call for watman?
turns out explaining the difference between math operators and all-purpose operators was more difficult than I expected
I've still had no word about NPM being broken from our IT dept
It's stopping at least 2 depts working properly
<3 red tape inefficiencies
@Quill I've almost removed all .ts files ;-)
On an unrelated note, the app is significantly faster now... to compile and run
hmm, our data structure is starting to bite me in the rear
We have two endpoints, GetCompany and GetCompanyOtherData
For all intents and purposes these could be merged into a single endpoint and sliced onto each other (which is what I'm simulating in redux)
But it's super annoying because they both expose different arrays which need to be recursively merged into each other... otherwise the display breaks
I still don't know why they are separate calls
Q: WCF Service ---- generic class

jatinsh92Currently working on a project on WCF service which has too many classes taking parameters from stored procedures .Thinking of creating a single class which takes procedure name and generates all the variables defined in that procedure .Any suggestion on how to do that??

> if (new Boolean(false)) console.log("wat")
9:13 AM
function doFetchCompany(companyId) {
  return async dispatch => {
    dispatch({ type: fetchStart })

    try {
      const [
      ] = await Promise.all(getCompany(companyId), getOtherData(companyId))

      const mainData = await mainResponse.json()
      const otherData = await otherResponse.json()

      const filteredFields = [...mainData.FilterredFields, ...otherData.FilterredFields]
      const viewableFields = [...mainData.ViewableFields, ...otherData.ViewableFields]
This hurts my soul.....
But it's necessary because i have to combine two endpoints.. and if I combine them in any other way you get a really nasty memory leak
Hello @JesterTran
@DanPantry Hi
do you know C?
Not personally, no, I only really do JavaScript these days
Q: Does open closed principle fit to this case?

StepUpI've recently made a test. One of them was to see problems in the following code and suggest refactoring which can provide adding new formats of data: public class FileProcessor { enum FileType { Html, Text } public void ProcessFile(string fileName) { StreamR...

Q: Integer factoring in C using GMP for numbers

user72935Anything you would change in the following code? It performs integer factoring using the GMP library and also can use OpenMP for parallel computation. I compile it using: gcc -lgmp -fopenmp and what ever optimization flags I wish to try. #include <stdio.h> #include <gmp.h> void next_prime(MP_IN...

Just when I thought I had a handle on the underlying mechanisms in Excel:
Q: Why don't numeric cells have a .Characters() property?

ZakWith any text value, I can individually format each character and then copy that formatting to another cell by iterating over the Range.Characters() Collection. However, if the cell is a number (even if the numberFormatting displays it as a string e.g. dates) then it does not expose a .Characte...

9:27 AM
@Kaz obligatory "because they are numbers and not strings" answer
@DanPantry Sure, but how I thought it worked was that Characters() was a presentation-layer, especially for things like "numeric-values-displayed-as-strings-eg-dates". But, apparently not.
9:41 AM
Q: What happens if I poison the person stealing my food?

RyanfaeScotlandI must have the worst luck. Not only have I been feeling rather 'backed up' lately but someone at work has also been stealing my sandwiches and / or milk! I've tried discussing the milk theft with the manager of the team who are responsible as per this question here on milk theft however they se...

wtf workplace?
Q: Javascript RegEx match urls for tokens exctraction

DanieleGiven an url like this: localhost:3000/sell-residential/house-apartment-penthouse-size-30-any-for-0-100000-in-miami%3b+orlando%3b/list-1?numRooms=2&numBaths=2&numParkingSpaces=1&misc=photo-only&interiorFeatures=heating%2Clift&exteriorFeatures=garden%2Cbalcony I would like to extract some values...

$ git update-index --assume-unchanged $(git status --porcelain | sed s/^...//)
Bash is awesome
> becomes ill (or cured depending on your perspective)
@Luaan when referring other sites, it is often helpful to point that cross-posting is frowned upon. Also, at CR it would be blatantly off-topic. Please abstain of recommending sites you're not familiar with — gnat 45 secs ago
9:56 AM
Q: Given an array A. Find the highest unique element in array A.

SantoshHere is my approach. Unique element means that element should present only once in the array. import java.io.IOException; import java.util.Comparator; import java.util.Map; import java.util.Scanner; import java.util.TreeMap; import java.util.Map.Entry; public class Unique { public static void ...

$foo = 'bar';
$bar = 'foobar';
echo $$foo;    //This outputs foobar
wtf PHP
10:09 AM
oh... no
i fixed all the line endings..
....including in the binaries inside node_modules/...
....oh no
Blocked because "-Web Logs/Personal Pages ."
Blocked because YouTube.
10:24 AM
@Quill Ah yes, that thing. Comedy gold.
I swear, if half the stuff they do on those kinds of shows actually existed, they'd be bigger than google by now.
A: What was the strangest coding standard rule that you were forced to follow?

paercebalI once worked under the tyranny of the Mighty VB King. The VB King was the pure master of MS Excel and VBA, as well as databases (Hence his surname : He played with Excel while the developers worked with compilers, and challenging him on databases could have detrimental effects on your career......

Q: iframe play & thumbnail function

kotThis is quite a simple function, but I just wanted to opinions on it. E.g is this the correct way to run a function and check if the element exists or not? const button = document.querySelector('.js-brand-video--thumbnail') const iframe = document.querySelector('.js-brand-video--iframe') functi...

10:40 AM
@EBrown it's not an expression
@Quill cough
Alright, I now can no longer work because the firewall won't let me install any packages from npm because many binary ones are now being served across :443 ports.
sounds like it's time for lunch
(Fun is not allowed in this company :D)
@DanPantry that was delayed :o
I thought you'd appreciate the humour of having HTML tables within SQL tables, indeed ;)
10:58 AM
Somebody asked me the other day why I don't store the html source of pages I scrape
my face made the disapproval look
@Phrancis For some reason I'm not getting notifications on my phone about SE anymore, so I didn't know I was pinged until I came on SE this morning
@Quill why would you and why should you not?
Managed to fix the proxy settings, btw. It was because we had to turn off the proxy to enable it to have access to the internal registry (as our proxy doesn't let you access internal websites).
The whole point of the project is to save values on the page, not to save the source
luckily, NO_PROXY exists
11:11 AM
@DanPantry That's odd - mine have been working fine on mobile using the SE app
A: Long-held, incorrect programming assumptions

V'rasana OannesThat women find computer programmers sexy...

possible answer invalidation by Tunaki on question by Santosh: codereview.stackexchange.com/posts/124816/revisions
@Duga Looks OK
@JeroenVannevel That's awesome. Definitely putting that in my permanent bookmarks collection.
11:26 AM
hey @rolfl, were you the one that did that SEDE query with the graphs of the rep changes of the top users on CR?
I was
@Quill People with that prejudice obviously haven't met any of my colleagues
@Gemtastic I, for one, would like to meet your colleagues.
It has some small vulnerabilities related to timing of downvotes @repmax, and also downvoting other people.
I went through your sede queries earlier but I couldn't find it ;-;
11:27 AM
The ones at my old work especially. It's like walking into a harem of models
Before this gets too lengthy Nth is thaddaway ->
@Quill which is also a great way to spent an hour or so
@Quill - you should be aware that gemtastic is likely one of them ;-)
All of them look at least 10 years younger, all of them are super fit, all of them are brilliant in all the ways.
I'm at least 6-7 years younger than all of my colleagues. what's my prize? :(
> ["Jereon Vannevel", "Gemtastic"]
I'm like 20 years younger than my colleagues, where's my prize
@rolfl Yeah, that's the one. Thanks! :)
I like how @JeroenVannevel was already in there :-)
AFK, work
11:31 AM
the real joke there was the naming convention
@Quill - that has to be one of the most scary, ugly, practical, and also beautiful queries I have written ;-)
after a while those words become synonyms
6 letters
Q: Diff Two Arrays - return the symmetric difference of the two arrays

Michael AlvesThis is my challenge using JavaScript -> Compare two arrays and return a new array with any items only found in one of the two given arrays, but not both. In other words, return the symmetric difference of the two arrays. My code works, but I think that it can be better. function diffArray(arr1...

we keep making these jokes, but there will come a day that you get a christmas card from Eric Lippert and we'll just cry instead
11:36 AM
I know, the O comes before the E, but I like Jereon because it goes with `Jerry On Seinfeld"
oh no
it got worse
not only did I rewrite all line endings in binary files
I rewrote it in images too
This is git's fault
you rewrote line endings in the images
Well, I didnt' rewrite them.
I removed all files from the index cache, set line endings to be crlf in git, and then re-committed.
The idea being that you would alter all line endings in text files.
Unfortunately, this modified every file included ignored ones
I fixed a critical bug in my flag retainer userscript, and I was really excited when it just worked. Turns out I have another bug...
I fixed it..
* text eol=crlf
*.png binary
*.gif binary
Thankfully it was that easy
Q: Are there mistakes in reading file?

StepUpI've recently made a test. There were four tasks. One of them was to improve following code: public class FooFileProcessor { public void ProcessFile(string filename) { Stream fileStream = File.OpenRead(filename); Console.WriteLine(ReadAllContent(fileStream)); fileStr...

how did this get to HNQ?
This reads a LOT like example code
11:43 AM
@DanPantry But do you LOOK that much younger than you are?
New favourite quote:
> Theory and practice might be the same in theory but are very different in practice.
@Gemtastic Thankfully, no, otherwise I would look like I am 16. I wouldn't say I look much older than 19-20 (am 21)
Wait... How does my colleagues being fit, handsome and awesome make MY ego grow. I'm so shitty they wouldn't hire me :/
I still have to show ID when I buy energy drinks
We don't have to show ID for energy drinks, but for anything else.. yup
I got IDed to buy scissors a few months ago..
The age limit on them is 15, I'm 27 soon :')
11:45 AM
Greetings, Programs.
Hello @Donald.McLean
I'm not fit, handsome nor awesome though. Just pimply
Q: Efficiency in recursive function JavaScript

Flame_PhoenixI have a challenge, which is to create a JavaScript function that turns a given number into the string representation. For example: console.log(inToEnglish(15)) should print fifteen console.log(inToEnglish(101)) should print one hundred and one and so on... I have accomplished this objective ...

Q: How to print data's along with background image in php?

VA splashHey I am new to php and other stuffs. Now I am trying to make automatic bill creating page. But the problem is the background is not visible in print preview. The php page is given below When I press the print button on the top left corner of the page it shows s given below I don't need extra...

I started going bald in my early 20's, so I haven't been carded in ages.
My big brother has looked >25 since he was 14
11:46 AM
I'm lucky I am not going bald the amount I have dyed my hair.
@DanPantry so today you learned that dying your hair does not alter your genome? ;P
My aunt lucked out; she got the baldness gene on both X chromosomes so she got alupecia :/
My dad, who is 80, has very little grey hair. I got that gene.
She's rocking it though. Still beautiful and cool
@Gemtastic imagine if it did. I'd never need to dye my hair blue again.
I had to show my ID to get in a bar in London 2 weeks ago
Might have something to do with the tiny Indian girl I was with but still
I look >21
I don't think I've been asked it in Belgium even once. Not even when I started going out
11:59 AM
@DanPantry It could still cause cancer and poisoning and just plain ruin your hair so it falls off (but it'll grow out)
@JeroenVannevel Sounds reasonable.

« first day (1067 days earlier)      last day (1321 days later) »