1,798 reputation
617
bio website about.me/cky
location Raleigh, NC
age 33
visits member for 3 years, 9 months
seen 1 hour ago

Unix coder. C++, Perl, JavaScript, Scheme, and (on occasion*) Java and Ruby. Facetious to a fault.

On IRC, I'm cky on freenode. I hang out on #stackoverflow a lot, and I welcome any comments on my posts! You can also tweet me at @cky944.

(For pedants reviewing my posts: I'm an expat Kiwi, so I prefer to spell with New Zealand English.)

* i.e., in my day job :-P


Do you miss CipherSaber? Well, miss no more! (Earlier/sillier attempt.) Plus, I plan to create a CipherSaber challenge on a different golfing site one of these days.


Apr
6
awarded  Citizen Patrol
Mar
7
comment What's the difference between lists constructed by quote and those constructed by cons in Scheme?
@TimothyLi As I mentioned in my comment in the answer, try running this: (let* ((ohai (cons 'o 'hai)) (quoted (eval `(quote ,ohai) (interaction-environment)))) (eq? ohai quoted)). If it returns true for your implementation, it definitely shares structures. If it returns false, maybe it does some copying first.
Mar
7
comment What's the difference between lists constructed by quote and those constructed by cons in Scheme?
Technically, quote doesn't create anything. It simply "returns" (as much as such a concept applies to special forms) the datum that was created at read-time. For example, in some Scheme implementations (such as Guile), this expression returns true: (let* ((ohai (cons 'o 'hai)) (quoted (eval `(quote ,ohai) (interaction-environment)))) (eq? ohai quoted))
Feb
18
revised What should web programmers know about cryptography?
Some think v1.5 padding is okay; others think OAEP is better.
Feb
18
comment What should web programmers know about cryptography?
@orip Agree, though I'd say that using the same key with a different IV is usually more useful for the case where your message is longer than your chosen symmetric cipher's block size, rather than for distinct messages, where you'd have no context for keeping track of IVs used for previous messages. Also, agree with Colin Percival's article.
Feb
18
revised What should web programmers know about cryptography?
After discussion with Cody Brocious (he and I were helping out a crypto noob in #stackoverflow), I felt the need to spell out the need to use padding with RSA explicitly.
Jan
17
answered Lisp/Clojure: Removing unnecessary parentheses through conventions
Dec
25
answered Why it is `(cons 1 (cons 2 (cons 3 nil)))` and not `(cons 3 (cons 2 (cons 1 nil)))` for [1,2,3]?
Dec
25
comment Is there any particular reason for the use of lists over queues in functional programming languages?
@Dokkat Suppose you have a list (1 2 3) that is represented by (cons 3 (cons 2 (cons 1 '()))). That would mean that your variable would be a pointer to the last node of the list, and each node has a pointer to the "previous" node. Is that what you want? Note that in order to preserve structural induction, the lists are singly linked, by design. That means that the pointers only go one way, not both.
Oct
12
awarded  Yearling
Jul
2
awarded  Good Answer
Jun
10
answered What makes Common Lisp “big”?
May
13
awarded  Nice Answer
Apr
23
awarded  Nice Answer
Apr
11
answered Online courses focussed on learning LISP for beginners?
Apr
8
revised In what programming language did “let” first appear?
If you're going to quote, quote it properly, typesetting and all ;-)
Apr
8
revised In what programming language did “let” first appear?
Lisp's `let` was invented in the 70s.
Apr
8
answered In what programming language did “let” first appear?
Apr
6
comment In what way is JavaScript (ECMAScript) similar to Self and Scheme
Sure, that sounds right to me.
Apr
6
answered In what way is JavaScript (ECMAScript) similar to Self and Scheme