2,975 reputation
1116
bio website jelv.is
location Berkeley, CA
age 22
visits member for 4 years
seen Dec 16 at 21:04

I am a software engineer primarily interested in programming languages, functional programming, program synthesis, type theory, universal algebra and startups (not necessarily in that order!). In the near future, I want to combine as many of these as possible.

Right now I'm an engineer at Esper, an early stage startup in Palo Alto. We use OCaml on the backend, which is pretty neat.

I am always happy to chat: my email is tikhon@jelv.is.

I am especially interested in questions and projects involving Haskell or interesting PL issues.

GitHub: http://github.com/TikhonJelvis

Website: http://jelv.is


Apr
19
comment Do real-world algorithms that greatly outperform in the class below exist?
I think it's also partly historical--the algorithm for turning a regular expression into a DFA was patented when some of the earlier tools (sed and grep, I guess) were being developed. Of course I heard this from my compilers professor who wasn't entirely sure, so this is a third-hand account.
Apr
19
comment Should a new programmer focus on a single technology until he's proficient at it?
This is why I think SICP is the perfect introductory text--it covers a bunch of different ideologies in a uniform manner; you get to reuse syntax (sexps) and concepts while learning about functional programming, OOP, logic programming and even low-level register-based programming.
Apr
11
comment What are some characteristics of Python that makes it unique as its own language?
If you think Python has low syntactic overhead (despite having an obscenely complicated grammar and a relatively large amount of syntax sugar), what do you think of Scheme?
Apr
11
comment How were some language communities (eg, Ruby and Python) able to prevent fragmentation while others (eg, Lisp or ML) were not?
@root45: Don't Python libraries fail to work on alternative implementations (e.g. PyPy) with reckless abandon?
Mar
22
answered What do you use macros in your editor for?
Mar
22
comment Why was Tanenbaum wrong in the Tanenbaum-Torvalds debates?
@MasonWheeler: Of course. Anybody can pick up Ubuntu and use it with no command line stuff at all. My roommate--certainly not super tech literate--had no problems moving from Windows to Ubuntu. Other people I know using Ubuntu--varying in experience but all not experts--have not had any problems either. My old roommate last year had more problems with his Mac than my current roommate does with Ubuntu, at similar levels of computer experience. (Even printing, of all things, was easier by far on Linux than on the Mac!) So the whole Linux command line thing is a gross misrepresentation.
Mar
17
comment Are operators clearer to read than keywords or functions?
Well, Haskell lets you define arbitrary operators and set their precedence and associativity. The difference is that you can't overload operators per se--they behave like normal functions. This means you can't have different libraries trying to use the same operator for different things. Since you can define your own operator, there's much less reason to reuse the same ones for different things.
Mar
16
comment Are operators clearer to read than keywords or functions?
If users can add operators, why not let them set the precedence and associativity of the operators they've added?
Mar
16
comment Are operators clearer to read than keywords or functions?
@comingstorm: I actually think the Haskell way is better. When you have a finite set of operators that you can overload in different ways, you're often forced to reuse operators in different contexts (e.g. + for string concatenation or << for streams). With Haskell, on the other hand, an operator is either just a function with a custom name (that is, not overloaded) or part of a type class which means that while it's polymorphic, it does the same logical thing for every type, and even has the same type signature. So >> is >> for every type and is never going to be a bit shift.
Mar
16
comment How to write functionally in a web framework
I'm not quite sure what you mean by saying that the problems tackled by imperative programmers are "harder". I'm sure the sort of problems people working at banks or on GHC solve are as difficult as any.
Mar
15
comment Are operators clearer to read than keywords or functions?
I think | (and, by extension, ||) for or makes sense. You also see it all the time for alternation in other contexts, like grammars, and it looks like it's splitting two options.
Mar
15
comment How to learn Math to increase Programming skills?
SICP is really, really brilliant. I heartily second your recommendation.
Mar
15
answered Resources for learning common algorithms by Lisp
Mar
14
comment How to minimize typos when you code?
Ah, that's neat. I thought it was just a command you ran.
Mar
14
comment How to minimize typos when you code?
I'm not sure quite what you mean. This particular command just transposes two characters. I just find it useful for fixing my most common typo when programming.
Mar
14
comment How is CoffeeScript influenced by Haskell?
@DeadMG: I don't think the syntax is the "most irrelevant" (otherwise Scheme wouldn't be less popular than Python :P), but it isn't the most important either.
Mar
13
comment How to minimize typos when you code?
There are some other nice commands--in Emacs, if you accidentally typed typed the last two characters backwards (e.g. na instead of an) you can flip them with C-t.
Mar
13
comment Is there evidence that developers working remotely are less productive then when they work onsite?
Couldn't you heavily minimize the impact of all these external variables with a large enough sample size?
Mar
13
comment Giving variables default values vs. treating accessing an undefined variable as an error
I suspect that's largely because Python programmers know how their language works and do not rely on the behavior of missing keys. All my KeyErrors in Python have indeed been errors, while in JavaScript I use objects (the equivalent of Python's dicts) with only some of their fields initialized all the time in my code (for stuff like options).
Mar
13
answered Giving variables default values vs. treating accessing an undefined variable as an error