3,612 reputation
21545
bio website connjur.uchc.edu
location Connecticut, USA
age 27
visits member for 2 years, 5 months
seen 9 hours ago

I work in a scientific computing group on the CONNJUR project, providing open-source software for NMR (Nuclear Magnetic Resonance) spectroscopy.

Check out some of my work on github:

  • NMRPyStar: an API for accessing archived NMR data files in the NMR-Star format used by the BMRB.

  • Miscue-js: validation of JSON files to deal with obnoxious and tricky interoperability issues such as number overflows and duplicate keys

Some technologies that I've used and like:

  • Python
  • git
  • Javascript
  • Haskell
  • Java
  • MySQL

Feb
5
comment Limitations of UML?
1 ... 2 ... 3?? Wait a second!!?? :)
Jan
28
comment Returning different types from one function in a dynamically typed language
What is the purpose of "But in a dynamically typed language, there may not even be a compiler."? I don't see how that's relevant to the question.
Jan
22
comment Why is inheritance only defined at compile-time?
It's not really correct to say that "there's no compilation in Javascript". Plus, it's pretty vague -- perhaps it's intended to mean that there's no static type-checking?
Jan
22
comment Why is inheritance only defined at compile-time?
Am I reading it wrong, or is this a circular argument? "Inheritance is only defined at compile time" because "in languages like C#, you can create an inheritance hierarchy at compile time"?
Jan
22
comment Why is inheritance only defined at compile-time?
s/strong/static/
Jan
20
comment Example of a javascript app using immutable data structures?
While it's a good point, this isn't an answer.
Dec
19
comment What are the safety benefits of a type system?
Typical static type systems reject many well-typed programs by design. (an alternative) (BTW, my criticism was only directed at the 3rd and 4th paragraphs.)
Dec
13
comment Are all scripting languages dynamically typed?
I actually think the Wikipedia article does a good job of illustrating the general confusion around the issue: "In principle any language can be used as a scripting language", "The term 'scripting language' is also used loosely to refer to [...]"; "[...] hence the ambiguity about whether a language 'is' a scripting language [...]", "A scripting language can be viewed as a [...]". (emphasis mine). A lot of vague words used there.
Dec
13
comment Are all scripting languages dynamically typed?
@user61852 that's a bit silly, isn't it? The problem here is that we don't have an objective, technical definition of "scripting language".
Dec
13
comment Are all scripting languages dynamically typed?
Many people use "scripting language" to mean "language that I don't like, for whatever reason" or "language whose type system I don't like". Please clearly define the term "scripting language" and give examples. (interesting article)
Dec
12
comment What are the safety benefits of a type system?
This sells dynamic typing short, failing to mention its primary benefits (the ones mentioned are handy by relatively unimportant). It also seems to imply something strange about unit tests -- yes, they're hard to do and have a cost, and that applies to statically-typed languages as well. What is this trying to say? It also fails to mention the limitations (by design) of current type systems, both in what they can express and in what errors they can catch.
Dec
11
comment What's special about currying or partial application?
@Kieveli it's unfortunate you feel that way. There are many fine tutorials out there that will get you up and running with a good understanding of the basics.
Dec
10
comment Writing a Compiler Compiler - Insight on Use and Features
Thank you for the response. I think I understand better now -- I would prefer to write those examples as list = sepBy1(',', elem) and funapp = term{+} (and of course sepBy1 and + would be implemented in terms of left-/right-recursion, and produce standard syntax trees). So it's not that I think left- and right-recursion are bad, it's just that I feel they're low-level and would like to use a higher-level abstraction where possible to make things clearer. Thanks again!
Dec
10
comment Writing a Compiler Compiler - Insight on Use and Features
Yes, it's nice not to have arbitrary restrictions like that. However, what is an example of left-recursion that can't be replaced with a repetition operator (such as regexes * or + quantifiers)? I freely admit that my knowledge in this area is limited, but I've never run into a use of left-recursion that couldn't be refactored into repetition. And I found the repetition version more clear as well (although that's just personal preference).
Dec
10
comment is it really necessary for python to differentiate between tuples, lists, dicts, ordered dicts and sets?
"the optimizer works at compile time" not true in general. Counterexample: PyPy.
Dec
9
comment Are types erased in Haskell?
So just to clarify: is the erasing of types an implementation detail? (i.e. is it possible to implement Haskell without erasing types?)
Dec
2
comment Writing a Compiler Compiler - Insight on Use and Features
I also wish you had not used the word "hellish". It makes an otherwise useful comment seem vaguely rude and insulting.
Dec
2
comment Writing a Compiler Compiler - Insight on Use and Features
@IraBaxter that is a nice article and I learned a lot from it; I acknowledge that you are far more knowledgeable than me. However, I still think you are exaggerating when you say that parsing is a "well-solved problem". While the theory is well-understood and there are many fine tools, I haven't found a single tool which completely solves everybody's parsing needs, without any drawbacks or tradeoffs (perhaps I just need to try out more). And while there are tradeoffs, there's room for improvement (I hope). Plus, programmers need to know enough to understand which tradeoffs to choose ...
Dec
2
comment Why are so many languages passed by value?
@ satuon kind of missing the point, aren't you?
Nov
27
comment Which of these old criticisms of common lisp still apply today?
Great question! Would love to hear from somebody knowledgeable about Common Lisp on this topic. My fear is that they do still apply, based on the apparent relative popularity of Common Lisp nowadays.