7,356 reputation
2348
bio website wolfram.com
location Chesterfield, MO
age 42
visits member for 2 years, 8 months
seen yesterday

I've been with Wolfram Research in some capacity since 1993, and have worked on the Mathematica front end since 1996. While Wolfram tolerates and even occasionally encourages my appearances in user forums like this one, my words (especially the stupid ones) are my own, and I don't speak for Wolfram in an official capacity.

Fun facts: I also like games of all sorts, and I'm a competitive Scrabble® player. I've written various sorts of crossword game-related utilities (some fun, some dead ends, some serious) in Mathematica, and consulted briefly on Wolfram|Alpha's word game content. I also contributed UI code to an open source crossword game simulator called Quackle which is quite the thing in the competitive player community.


Sep
15
comment Manipulate and function definition
@Gabriel I'm thinking of Manipulate as a form of DynamicModule. DynamicModule does lexical scoping. It's generally a bad idea to assign a lexically scoped localized variable to a global symbol (as you are assigning h in terms of b). It's difficult to understand, it may not do what you want, and the behavior might change depending upon implementational details. Therefore, I would strongly prefer DynamicModule (and Module) variables to be passed directly as function arguments without side-effect assignments.
Sep
14
comment Module Inside ToBoxes or MakeBoxes
This is exactly what DynamicModule was designed to do, and it is exactly what I've warned against where Module is concerned. In 9.0.1, the code in your question would have colored red to warn you, except for a bug that causes it to not color for Dynamic@x (as opposed to Dynamic[x]).
Sep
14
comment Options CellLabel not showing
This is exactly the issue. The way CellLabelAutoDelete works is that it prevents the CellLabel option from being serialized (either to disk or to MathLink). Internally, the Options code has significant overlap with the serialization code and, for better or worse, the decision on how to treat CellLabel is getting caught up in that. I won't necessarily defend this as the best and most correct way of doing things, but that's why it behaves the way it does.
Sep
14
revised Manipulate and function definition
add code styling markdown
Sep
14
comment Manipulate and function definition
Since you don't say, I can't comment on your reasons for really wanting h to have only one parameter. But if it were my code, I find it difficult to imagine that I'd be happy with any variant of the one-parameter solution.
Sep
14
revised Prevent graphics render inside held expression
added 555 characters in body
Sep
14
revised Prevent graphics render inside held expression
added 555 characters in body
Sep
14
comment Prevent graphics render inside held expression
Actually, believe it or not, there are limits to my knowledge of Mathematica, and for some reason, it didn't occur to me to see if Block would automatically clear a Protected System symbol. I appreciate @Liam reading the benefit of hidden wisdom into my answer, though! :) And, in fact, that response gives me pause about editing the answer to shorten the code.
Sep
14
awarded  Nice Answer
Sep
14
comment Prevent graphics render inside held expression
@m_goldberg I should think the answer is obvious. Thick is a graphics directive. The documentation for Thick directly makes this statement. As for Red, Green, etc., you're absolutely correct in saying they aren't graphics directives. But they do evaluate directly into a graphics directives. For that reason, I don't think the choice to put them in the guide/GraphicsDirectives guide page is inappropriate.
Sep
14
answered Prevent graphics render inside held expression
Sep
13
comment The dangers of SaveDefinitions — should this really happen?
@Szabolcs All SaveDefinitions does is to auto-construct an Initialization option for you. I'm a control freak. Let me construct my own Initialization option.
Sep
12
comment Possible bug with second argument of Dynamic
I was considerably less confident than Rolf. Especially when I tried it in a development build, and it behaved worse. But then I fixed it. So I guess my confidence matches Rolf's, now. :) Beta testers should see this in the next beta build.
Sep
12
comment The dangers of SaveDefinitions — should this really happen?
More people should use the InputForm technique. Bravo to you.
Sep
12
comment The dangers of SaveDefinitions — should this really happen?
I never use SaveDefinitions. Just never. It's terribly convenient, but for my purposes, it is just not sufficiently predictable. And it can sometimes be incredibly inefficient (e.g., when it stores ridiculous amounts of definitions which were hidden behind a Needs or Get).
Sep
12
comment undisputed FrontEndTokenExecute
I'm very happy to see answers using the under-utilized Cells function. But I'm not sure what you mean by your statement that this "doesn't use the front end". Both Cells and NotebookDelete require a front end to work properly, and they're implemented by causing the kernel to issue commands to the front end. Incidentally, code very similar to this is in the Applications Examples section of the Cells documentation.
Sep
12
answered How to correctly disconnect from the kernel?
Aug
31
comment Incorrect information displayed when slider is moved (intermittent)
@Mr.Wizard Localizing t would require throwing multiple Blocks into the code to preserve the output form (which would not be preserved by DynamicModule, etc.). I agree that this would be the proper thing to do, but I didn't want to complexify the answer by focusing on points the author didn't ask. Nonetheless, I will point out for posterity that Mr.Wizard is right in saying this is not the code as I would have written it.
Aug
28
answered Incorrect information displayed when slider is moved (intermittent)
Aug
28
comment Automatically close Mathematica
@Kuba it's not possible to do anything like what you're asking for globally for arbitrary Mathematica commands. If you're sticking to fully documented Mathematica functions, you shouldn't ever see interactive prompts unless that's the purpose of the function (e.g., Input). But many of the FE tokens were implemented only for the purpose of user interaction through the menu system, and do not represent the gold standard of end-to-end design that we generally apply to fully documented functions.