aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--black.txt78
-rw-r--r--client/src/Client.elm22
-rw-r--r--server/lib/Cafp/Main/Server.hs4
-rw-r--r--white.txt203
4 files changed, 27 insertions, 280 deletions
diff --git a/black.txt b/black.txt
index 0a5908f..c05bfb9 100644
--- a/black.txt
+++ b/black.txt
@@ -1,79 +1,3 @@
# ICFP2020 Cards
\BLANK is just \BLANK in the Category of \BLANK.
-
-# These are the old cards I copied.
-A crypto conference is never complete without \BLANK.
-A recent laboratory study shows that undergrads have 50\% less sex after being exposed to \BLANK.
-A romantic, candlelit dinner would be incomplete without \BLANK.
-Both Microsoft and Apple have concerns with \BLANK.
-Bruce Schneier's new book has a chapter on \BLANK.
-Despite his work at Bletchley Park, Alan Turing is little know for his work on \BLANK.
-Did you hear that \BLANK is the new hot topic?
-Due to the Covid crisis, I have rekindled my enthusiasm for \BLANK.
-During sex, I like to think about \BLANK.
-Having really bad gas throughout November led to \BLANK.
-I always include \BLANK in my reviewer feedback.
-I can't believe I got away with \BLANK.
-I can't believe my grant application for \BLANK was denied!
-I can't concentrate without \BLANK.
-I deserve to be an IACR fellow for my groundbreaking contributions to \BLANK.
-I don't encrypt my files, I keep them hidden in \BLANK.
-I drink to forget \BLANK.
-I felt sick to my stomach at PKC because of \BLANK.
-I find that \BLANK relieves pre-submission stress.
-I get by with a little help from \BLANK.
-I got 99 problems but \BLANK ain't one.
-I hope no one finds out about \BLANK.
-I just got out of an incomprehensible talk on \BLANK.
-I just hope the reviewers don't notice \BLANK.
-I only got through my PhD because of a long-winded explanation of \BLANK.
-I swear I didn't go to Financial Crypto because of the location, I went for \BLANK.
-I think I will skip the session on \BLANK this year.
-I was going to include Katz and Lindell as recommended reading, but it doesn't contain anything on \BLANK.
-I was surprised to see anyone awake at the end of my presentation on \BLANK.
-I woke up drenched in sweat from a nightmare about \BLANK.
-I woke up filled with shame about \BLANK.
-I'll eat my hat if anyone ever breaks \BLANK.
-I'm hoping to avoid 2/3 of the program committee, because my paper is on \BLANK.
-I'm sorry, Professor, but I couldn't complete my homework because of \BLANK.
-I've had it with these blockchain bros! ``Crypto'' means \BLANK.
-It took 72,000 instances, but I finally cracked \BLANK.
-It turns out that my company's password policy requires \BLANK.
-My academic CV says I'm an expert on \BLANK.
-My career started with \BLANK.
-My favourite thing about online conferences is \BLANK.
-My encryption scheme is extra secure because of \BLANK.
-My first accepted paper was on provably secure \BLANK.
-My latest paper on \BLANK will help me get more citations than Mihir Bellare.
-My student couldn't complete their homework due to \BLANK.
-Oh no! I just saw Koblitz and Menezes taking another look at \BLANK.
-One regret I have from my PhD is \BLANK.
-Putting \BLANK in my application helped me immensely.
-RWC was already full when I tried to register because I was too busy \BLANK.
-Remembering \BLANK, then immediately vomiting.
-Self-isolation is fantastic for \BLANK.
-TSA guidelines now prohibit \BLANK on airplanes.
-Talk dirty to me, baby. Tell me about \BLANK.
-The Bletchley Park Museum has just opened an interactive exhibit on \BLANK.
-The Israeli government stores its data with \BLANK.
-The best thing about having Eurocrypt 2020 online was \BLANK.
-The next big thing will almost certainly be \BLANK.
-The talk that had the most influence on my personal life was \BLANK.
-The thing I love most about staying in the UCSB dorms during Crypto is \BLANK.
-The way things are going, the best paper at Crypto 2048 will probably be about \BLANK.
-There is nothing quite like \BLANK, alone in the office at night.
-WTF! My paper on \BLANK just got rejected from the ePrint server.
-What ended my last relationship?
-What gets better with age?
-What is the best way to wind down at the end of a hard day?
-What never fails to liven up the Eurocrypt banquet?
-What will always get you laid?
-What's a cryptographer's best friend?
-What's my secret power?
-When I am President of the United States, I will create the Department of \BLANK.
-When all this is over, I'm not looking forward to \BLANK.
-When my crypto patents turn me into a billionaire, I will erect a 50-foot statue to commemorate \BLANK.
-Why can't I sleep at night?
-Yo' momma so dumb she encrypts her files with \BLANK.
-\BLANK kept me up all night.
-\BLANK was the last thing I expected to find in Edward Snowden's leaked documents.
+Really, \BLANK would be better without \BLANK.
diff --git a/client/src/Client.elm b/client/src/Client.elm
index aebeb8f..5170e64 100644
--- a/client/src/Client.elm
+++ b/client/src/Client.elm
@@ -132,16 +132,24 @@ blackCardContent cards (Messages.BlackCard idx) =
blackCardBlanks : Cards -> BlackCard -> Int
blackCardBlanks cards c = List.length (blackCardContent cards c) - 1
+capitalizeFirst : List String -> List String
+capitalizeFirst l = case l of
+ x :: xs -> (String.toUpper (String.left 1 x) ++ String.dropLeft 1 x) :: xs
+ _ -> l
+
blackCard : Cards -> BlackCard -> List WhiteCard -> Html a
blackCard cards black whites =
- let blank mbWhite = Html.span
- [Html.Attributes.class "blank"] <|
- case mbWhite of
- Nothing -> []
- Just w -> [Html.text <| whiteCardContent cards w] in
+ let blackParts = blackCardContent cards black
+ whiteParts = List.map (whiteCardContent cards) whites |>
+ case blackParts of
+ "" :: _ -> capitalizeFirst
+ _ -> identity
+ blank txt = Html.span
+ [Html.Attributes.class "blank"]
+ [Html.text txt] in
Html.div [Html.Attributes.class "card", Html.Attributes.class "black"] <|
- intersperseWith (List.map (\c -> blank (Just c)) whites) (blank Nothing) <|
- List.map Html.text <| blackCardContent cards black
+ intersperseWith (List.map blank whiteParts) (blank "") <|
+ List.map Html.text blackParts
whiteCardContent : Cards -> WhiteCard -> String
whiteCardContent cards (Messages.WhiteCard idx) =
diff --git a/server/lib/Cafp/Main/Server.hs b/server/lib/Cafp/Main/Server.hs
index fc31cec..5c8f08b 100644
--- a/server/lib/Cafp/Main/Server.hs
+++ b/server/lib/Cafp/Main/Server.hs
@@ -54,8 +54,8 @@ readCards = Cards
<$> fmap parseCards (T.readFile "assets/black.txt")
<*> fmap parseCards (T.readFile "assets/white.txt")
where
- parseCards = V.fromList .
- filter (not . T.isPrefixOf "#") . filter (not . T.null) . T.lines
+ parseCards = V.fromList . filter (not . T.null) . map dropComment . T.lines
+ dropComment = T.strip . fst . T.break (== '#')
newServer :: IO Server
newServer = Server <$> readCards <*> MVar.newMVar HMS.empty
diff --git a/white.txt b/white.txt
index 235eda2..7f57a8f 100644
--- a/white.txt
+++ b/white.txt
@@ -1,196 +1,11 @@
# ICFP2020 Cards
-A Monad
-A Monoid
+a Monad # Inline comment
+a Monoid
Endofunctors
-
-# CardsAgainstCryptography cards.
-100\% talks, \\ 0\% human interaction.
-16-bit AES.
-17 slides for a 3-minute rump session talk.
-2 to 4 kilograms of top quality amphetamines.
-2-sentence Eurocrypt reviews.
-387 contact tracing papers submitted to Eurocrypt 2021.
-4mm reasonable margins.
-A 25-year old policy on sexual harassment.
-A Facebook friend request from a cryptographer I~actually despise.
-A career-limiting card game.
-A dancing cryptographer.
-A genuine attempt to configure IPsec.
-A hand wavy argument.
-A long-term nonce.
-A non-fabricated use of pairings.
-A painfully slow Tor masturbation session.
-A popup Skype notification from ``lovemachine69'' during my keynote talk.
-A proof that appears in the ``full version''.
-A shepherd that won't budge.
-A tight security reduction to the problem of fending off a sexually voracious goat.
-A violent and bloody PhD defence.
-Aaron Aaronson's insistence on alphabetical author ordering.
-Academic integrity.
-Accidentally sexting my co-supervisor.
-Actually being ``sorry for the late reply''.
-Actually efficient indistinguishability obfuscation.
-Adleman-Rivest-Shamir encryption (the ARSE algorithm).
-An IACR board meeting.
-An SSL vulnerability with a silly name.
-An ``anonymous'' reviewer insisting I cite 6 papers by the same author.
-An inappropriate workplace romance.
-An insecure VPN straight to the Kremlin.
-An overfull hbox.
-An overlooked patent.
-Arguing savagely against contact tracing so no one finds out that I don't get invited to parties.
-Arriving 13 minutes late to a 15 minute talk and having the gall to ask a question.
-Asking for 2 room keys during check-in, knowing full well I'm not getting laid.
-Bart Preneel's \\ private key.
-Beefing up my Proposition to a Theorem because I'm that awesome.
-Being forced to attend social events because I'm the visitor's official host.
-Being the only smartly dressed person in the room.
-Best rejected paper award.
-Bragging about getting held up at Border Control for saying I'm a cryptographer.
-Brexit.
-Checking my Google Scholar profile daily.
-Chocolate-covered shrimp.
-Citing personal communication.
-Conferences with 5 submissions at 11:59pm.
-Crippling student debt.
-Crypto wars.
-Day drinking.
-Deadline day flatulence.
-Deliberately hiding inefficiencies inside the big O.
-Deliberately not referencing a superior paper.
-Desperately trying to plug my crypto research into a grant application on pandemic prevention.
-Diffie but definitely not Hellman.
-Doing Facebook maths puzzles to show I am better than those idiot 97\%.
-Double ROT-13.
-Drinking alone.
-Dropping the word Blockchain into my research proposal as many times as possible.
-Dual\_EC\_DRBG.
-Encrypted database security definitions.
-Explaining what my job is at a family reunion.
-Falling asleep in a 5-person meeting.
-Feeling flattered because a conference spam email addressed me as Professor.
-Fighting over LaTeX syntax.
-Filing a patent application for modular multiplication... in 2017.
-Flirting with people at the conference registration desk.
-Forgetting my VGA adapter.
-Frantically taking notes during every talk.
-GDPR requirements.
-Getting a fourth cookie during a coffee break because I have no one to talk to.
-Getting rejected, but then taking immediate solace in the fact that the selection of papers was a difficult and challenging task.
-Getting stuck at the French-speaking banquet table.
-Getting tenure, then chilling the f--- right out!
-Getting turned on by a proof.
-Going straight to journal.
-Government-mandated backdoors.
-HTTPS everywhere!
-Hands-on supervision.
-Having time to catch up on my reading, \\ then not doing it.
-Having to wear pants.
-Having to write a polite rebuttal to the reviewer who clearly didn't read past page 2.
-Hiding my conflict of interest.
-Hillary Clinton's BlackBerry.
-Home-baked, snake oil crypto.
-Ignoring reviewer comments and resubmitting immediately.
-Ignoring the session chair flashing 5 minutes left because I've got 23 slides to go.
-Including an XKCD comic in my slides because I'm so original.
-Knapsack cryptosystems, revisited.
-LNCS' 25-foot margins.
-Making claims in the submission that you hope you can achieve before the rebuttal.
-Maths-terbation.
-My Silk Road purchase history.
-My \textit{h}-index.
-My automated reply saying ``email responses will be delayed'', when I know damn well I'll be online with high-speed internet access 24/7.
-My butt.
-My crypto blog views getting into the double digits.
-My dear friend the Program Chair overruling 3 borderline rejects on my paper.
-My genitals.
-My inappropriate supervisor.
-My inflated sense of self-importance that warrants my PGP key.
-My much more successful career as a singer after rocking the Crypto rump session.
-My relationship status.
-My second divorce.
-My sex life.
-My side job as an incompetent security consultant.
-My successful career at a patent troll company.
-My supervisor's morning breath.
-Nigel Smart's new Hawaiian shirt.
-Not being important enough to be asked to sign the public statement on contact tracing.
-Not feeling guilty about falling asleep during the keynote.
-Not having to wear pants.
-Not needing to pretend to listen to the other speakers in my session.
-Overselling it hard in the introduction.
-Password1.
-Picturing the FSE audience naked.
-Politely starting an answer with ``That's a good question...'', when the question is actually idiotic.
-Post-quantum RSA.
-Preparing for two weeks to give a 15-minute presentation to a room of 7 people all on their laptops.
-Pretending to care when my vegetarian coauthor complains about the lack of banquet options.
-Pretending to understand.
-Pubic key cryptography.
-Publishing anyway.
-Purchasing the Springer hardcopies I publish in because my mom is collecting them.
-Putting an outdoors-y photo on my academic webpage to look well-rounded.
-Quadruple XOR.
-Quantum key distribution.
-Quickly trying to peek at someone's badge as I shake their hand, but it's flipped backwards.
-Reading the person in front's emails.
-Relatives who ask me to help them install their printer on Windows.
-Remembering when `working from home' meant a day off.
-Rogaway's loose morals.
-Satoshi Nakamoto.
-Security through obscurity.
-Sending an email at 11pm so people think I work hard.
-Serious rump session speakers.
-Sexual tension.
-Skype dropping out every 10 to 15 seconds.
-Social sciences.
-Someone less senior than me signing off with ``Thanks in advance''.
-Spending 3 Bitcoin on pizza in 2012.
-Spending all of my Levchin prize money on cocaine.
-Springer's editorial team.
-Starting a conversation with ``When did you fly in?'', because I have nothing interesting to say.
-Taking a group shower with my recent co-authors.
-Telling anyone who'll listen quite how busy I am.
-Thanking the anonymous reviewers for their ``useful'' comments.
-That feeling when my article is sitting pretty at the top of the ePrint archive.
-That one asshole who's always sleeping during my Eurocrypt talks.
-The MIT Mafia.
-The NSA's massive stack of amateur porn.
-The North Korean Cryptographic Standard.
-The awkward question the chair asks when nobody understood the talk.
-The awkward silence of 8 people standing in a circle during the afternoon coffee break.
-The great firewall of China.
-The great paywall of IEEE.
-The intoxicating aroma of 12 PhD students in one office.
-The latest dance mix album by DJ~Bernstein.
-The one person I don't want to get stuck next to on the conference excursion bus.
-The one really hot person at CHES registration drinks.
-The one suit I own for meetings with industry.
-The person in the front row taking photos of every slide.
-The secret flash drive hidden in my underwear.
-The sound of 50 people on a Zoom call all trying to speak at once.
-The student body.
-The walking zombie corpse of Claude Shannon.
-Thinking I'm so clever for using pictures of Alice (Cooper) and Bob (Marley).
-Throwing a party for my next citation milestone.
-Trying to make TCC friends at the bar in order to get the IACR 7-conference grand slam.
-Turbulent bowel movements in the middle of my Asiacrypt presentation.
-Turning up to one meeting and claiming co-authorship.
-Tweeting about my paper acceptance.
-Unbreakable military-grade encryption.
-Undergrads.
-Using Beamer because it's social suicide to use PowerPoint.
-Using ``it clearly follows'' when the implied following is anything but clear.
-Using ``we should talk about this offline'' because the question exposes holes in my paper.
-Using indecipherable, non-standard notation to hide a dodgy proof.
-Vital sugar beet auctions.
-WalnutDSA.
-Wearing a T-shirt with a Linux joke.
-Wearing a conference t-shirt... in public.
-When you realize that quantum computers have been 10 years away for 3 decades.
-Wistfully looking out of the window of my overly-cramped PhD office.
-Writing a reference for someone I can't remember meeting.
-Yet another cryptographer falling into the blockchain startup abyss.
-\texttt{Ctrl+F}'ing to see how many times I'm cited and finding ``0 results''.
-``Working'' remotely.
-{\comicsans A slide deck entirely in Comic Sans.}
+drinking
+JavaScript
+Haskell
+Scheme
+Racket
+C
+C++