3,791 reputation
21647
bio website connjur.uchc.edu
location Connecticut, USA
age 27
visits member for 2 years, 8 months
seen 2 days 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

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.
Nov
21
comment Is there really anything to gain with complex design?
Just out of curiosity, why single out healthcare and government? Are those fields known for particularly maintainable/adaptable/beautiful/high-quality/<adjective> software?
Nov
20
comment Initializing a variable as undefined
@stinkycheeseman the decision about strict mode is up to you; I always use it because it tells me when I do stupid things, but that's just a personal choice. Re hoisting: the fact that Javascript hoists variables is, for some people, a valid reason why a human should write the same way -- because then the code is being more "honest" about what it's doing. I first heard of this idea from Douglas Crockford and his JSLint tool. One last thing: my comments don't apply to your second example, sorry.
Nov
20
comment Static factory vs factory as a singleton
@bstempi I have to apologize, but I no longer think I get what you're asking -- and I haven't mentioned testability a single time. ... ??? Given the paragraph I quoted, I thought your question was something along the lines of what are some of the issues involved with using static methods in a factory; I have tried to answer that. Again, sorry if that's not what you're looking for.
Nov
20
comment Static factory vs factory as a singleton
@bstempi it seems we simply don't agree on the points I've made -- I guess I just place more importance on coupling and higher-order code than do you. Which is not to say in any way that you're wrong. Just that we disagree.
Nov
20
comment Static factory vs factory as a singleton
@bstempi I'm sorry, but I can't help feeling that you're moving the goalposts (again, I apologize if you're not). If those extra details are important to the question, I would recommend adding them to the OP.