7,436 reputation
2348
bio website wolfram.com
location Chesterfield, MO
age 43
visits member for 2 years, 9 months
seen 5 hours ago

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
17
awarded  Necromancer
Sep
17
comment Convert ImageSize to FieldSize
If you're working with Grid, then for the love of all that is good and holy, don't do it this way. Use Pane to define your constraints, and let Grid just snap itself to the Pane elements.
Sep
15
comment Module Inside ToBoxes or MakeBoxes
Incidentally, I've fixed the lack of proper syntax highlighting on Dynamic@x. In my development version, the non-DynamicModule version now highlights the x red in all appropriate places.
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?