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

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.
Nov
20
comment Static factory vs factory as a singleton
@bstempi why do you think they didn't play a part in your answers? Looks to me like they did. Why do you think they would say something like "it's good to inject everything"?
Nov
20
comment Static factory vs factory as a singleton
@bstempi but it seems you've missed my points about coupling and passing methods around.
Nov
20
comment Static factory vs factory as a singleton
@bstempi I was going for a bit of Socratic method there. I guess I suck at it.
Nov
20
comment Naming convention for higher order functions?
@Racheet that's a good point and quite relevant to this example: what the OP is really implementing is partial application. Many (all? not sure) uses where functions are returned can be viewed instead as partial application. @ nickf: here's a cleaner way to implement your example
Nov
20
comment Initializing a variable as undefined
Questions: doesn't "use strict"; turn undefined variable use into an error? Are you familiar with hoisting?
Oct
1
comment What can Haskell's type system do that Java's can't and vice versa?
Thanks for the response. I would upvote it if not for the third paragraph, which is explicitly outside the scope of the OP. As I said in the question, To try and keep this from becoming a subjective question, I'm asking: what are the major, non-syntactical differences between their type systems?
Aug
16
comment Inner workings of the IF() function - why aren't expressions evaluated?
I am confused by the first sentence of your comment. Why would I do that? I'd rather get to the correct answer at the bottom of this issue. I'm claiming the OP isn't about short-circuiting because of all the definitions I've seen of if statements, none of them ever mentioned short-circuiting, nor did they do something like short-circuiting because, as I've mentioned, the number of expressions (or branches if your ifs are like C's/Java's) evaluated is fixed, which is not the case with short-circuiting operators. And that is really the key point. Have I misunderstood something?
Aug
16
comment Inner workings of the IF() function - why aren't expressions evaluated?
What definition of "short-circuiting evaluation" are you using? The number of expressions evaluated by IF doesn't depend on the truth/falsehood of the first expression, no ?
Aug
14
comment “Everything is a Map”, am I doing this right?
@MichaelT perhaps we are talking past each other. My point is that "large functional data structures are inefficient, end of story", which I believed the answer and your comment were stating, is too simplistic and wrong. Apologies if I misunderstood.
Aug
14
comment “Everything is a Map”, am I doing this right?
@tieTYT let me try again. In the bad Clojure example, you pass a to subprocess-one, a and b to subprocess-two, and a, b, and c to subprocess-three. In the good imperative example, you only pass the state argument. What happened to a, b, and c -- are you saying that state is a map with those keys? If so, sorry for bothering you and it makes sense now.
Aug
14
comment “Everything is a Map”, am I doing this right?
@MichaelT and Karl: to be fair, you should really mention the other side of the immutability/efficiency story. Yes, naive usage can be horribly inefficient, that's why people have come up with better approaches. See Chris Okasaki's work for more information.
Aug
14
comment “Everything is a Map”, am I doing this right?
@LieRyan I second Ptharien's comment -- most monads are not about state or mutability, and even the one that is, is specifically not about global state. Monads actually work quite well in OO/imperative/mutable languages.
Aug
13
comment Refactored to a fancy global variable?
The real problem is that all that extra code does nothing -- it provides no more encapsulation than using an object with two properties, but is way more verbose; and you spelled the parameters differently from the fields -- possibly a side effect of the verbosity? Whether you've created a global variable depends on whether the code appears inside a function (which would make it not global) or not.