372 reputation
18
bio website xtremevbtalk.com/…
location New York, NY
age 46
visits member for 3 years, 8 months
seen Nov 3 at 21:14

I am a C# and Excel developer that focuses 100% of my efforts on Excel user interfaces for Wall Street data service providers.

I spent 12 years on Wall Street as a research analyst, quantitative analyst, and director of research before switching over to Excel programming full-time 10 years ago.

I have extensive experience building real-time, interactive financial systems using data service providers such as Bloomberg, Thomson Reuters, FactSet, Compustat, Zacks, CRSP, and others with Excel.

Programming languages I have experience in include Visual Basic for Applications (VBA), Visual Basic 6.0, Visual Basic .NET, and more than 5 years experience in C#, which is currently my language of choice.

I have been a Microsoft Excel MVP since 2007 to present and have enjoyed participating at the MVP Global Summit in March 2009 and the most recent one in February 2010.

If you wish to contact me, I can be emailed at mike_rosenblum(at)yahoo.com.


Apr
2
comment Unit test coding standards
@Konrad: that's odd. This is a programming forum, right?
Apr
2
comment “Standard” format for using a timestamp as part of a filename
@Keith: Fair enough, I used "." in that case, which I think looks better than underscores: "yyyy.mmdd.hhmm"
Mar
5
awarded  Yearling
Sep
2
awarded  Nice Answer
Jun
4
comment Can someone find a job as a programmer without an education?
Yeah, David, that's a really good point... One would have to build up their resume a lot with work experience (yes, circular problem here) and contributing to open source projects. Eventually, though, one's work experience -- even if you have to start low -- and one's desire to study and learn on the side can really make a difference. If your skill set is truly high enough, that's all that the vast majority of firms will care about. True tech talent remains somewhat scarce today. And yes, you could get a recruiter to pitch for you at this point. But you're right, it's not easy.
May
2
comment Declaration vs. Prototype vs. Symbol vs. Definition vs. Implementation
Another term for "prototype" in this context is a method signature.
Apr
29
comment Should a manager (or CEO) in an IT company have an IT background to perform in the organization?
The quintessential example of the kind you are citing is Lou Gerstner, the former CEO of Nabisco, becoming IBM's CEO and saving it.
Apr
23
comment Why are structs/arrays zero based?
Hey Joe, ok, ok, I believe you. :-) But you're operating at a level that is way over my head. I looked up "Relational Closure" and I can't say that I understood it. I'm sure that it's too tough to explain or discuss in a comment, so would you know of a source that would be relatively easy to digest? (Somehow, I doubt it exists!)
Apr
23
comment Why are structs/arrays zero based?
@Joe: "At what level of abstraction does one integer type being required to be larger than another not matter?" I was trying to convey that Dijkstra was arguing at a very high, very abstract level -- really more at the math level than anything having to do with implementation. I agree with your point 100%, demonstrating that implementation details cause base 0 indexing to be superior. But at the high-level, discussing whether having a collection be indexed base 0 vs. base 1, I don't think we care what type is contained in the collection or how it's size is allocated or indexed in memory.
Apr
23
comment Why are structs/arrays zero based?
@Joe: "There's a counterpart to dan's concerns at the positive end as well - your indexing type must be larger than your allocation type". I agree with you here, but this is a low-level issue that does not matter at higher-levels of abstraction. Dijkstra's argument was at an abstract level, but, I think, hinges too tightly to a debatable assumption. Your argument is 100% correct, but has to do with low-level implementation details that fit much more in line with Mike Dunlavey's answer, and associated comments, above.
Apr
23
comment Why are structs/arrays zero based?
@dan: "Furthermore, -1 as the lower bound of an empty array forces the use of signed rather than unsigned indices." Yes, exactly, this is why, instead of using base 0 indexing, e.g. [0..N-1] and using [0..-1] as the empty set, one should instead use base 1 indexing, e.g. [1..N], where [1..0] represents the empty set. Use of base 1 gives us a natural counting order 1..N and allows us to to use an unambiguous empty set [1..0] that avoids the use of signed numbers.
Apr
23
comment Why are structs/arrays zero based?
@dan: "I disagree that [0, -1] is 100% clear." Well, my point was that a lot of the confusion, and much of Dijkstra's discussion, revolves around the use of inclusive or exclusive bounding at either or both of the end points. The example [0..0] is not an empty range if bounded on an inclusive basis; however, [0..-1] clearly denotes an empty set regardless of whether one is using inclusive or exclusive bounding on either or both ends.
Apr
23
comment Why are structs/arrays zero based?
The problem is, where does one make the switch? The switchover from base 0 at a low level to base 1 at a higher level is extremely dangerous and fraught with innumerable places to forget to add or subtract 1 when making a conversion. So the bottom line is that it's not worth the risk of making the shift. Usually the "shift" occurs only in the output, where the user is shown a list that is (hopefully) numbered 1 to N and not numbered 0 to N-1. (But I've seen plenty of displays that mess this up!)
Apr
23
comment Why are structs/arrays zero based?
In low level programming, however, say asm or C, where performance is at a premium and inlining might not be available, the use of encapsulation might not be desirable or possible; so the benefits of base 0 indexing really manifests itself. So base 0 indexing is superior at the low end, while base 1 indexing is superior at the higher, more abstracted level. [Cont...]
Apr
23
comment Why are structs/arrays zero based?
In my opinion, this is the "correct" answer, but there are trade-offs. One trade-off, as you mention, is its use in 1 dimensional vs. multidimensional arrays. Base 0 indexing if of huge benefit when calculating multidimensional indexes. In higher-level programming, however, the use of 1 dimensional arrays, however, vastly outweighs the usage of multidimensional arrays. Further, the complexities of multidimensional indexing can be written once and encapsulated within a method (or indexer). [Continued...]
Apr
23
comment Why are structs/arrays zero based?
Dijkstra's conclusions follows from the assumption that connoting the empty set with [0..0] is better than with [0..-1]. On this, I think, he is wrong: having the upper bound lower than the upper bound much more clearly denotes an empty set than having the same number twice. It's the old inclusive vs. exclusive between issue, and [0..-1] is 100% clear in either convention. Further, being inclusive or exclusive on both ends consistently makes more sense than being >=0 and <N. I would argue for (a) >0 and <N+1 or (b) >=0 and <=N-1, or (c) >=1 and <=N. Choice 'c' is clearly the winner.
Apr
23
revised Use of past tense (passive voice) to connote immutability? (E.g. Array.Transposed vs. Array.Transpose)
added 5 characters in body
Apr
23
revised Use of past tense (passive voice) to connote immutability? (E.g. Array.Transposed vs. Array.Transpose)
added 4100 characters in body; added 33 characters in body; deleted 23 characters in body
Apr
22
comment Use of past tense (passive voice) to connote immutability? (E.g. Array.Transposed vs. Array.Transpose)
That said, the more I think about your comments and FxCop rule CA1024 (msdn.microsoft.com/en-us/library/ms182181(VS.80).aspx), my examples are all situations where a conversion is occurring and/or where an array is being returned. The result is that these should use a GetXXXXX() or ToXXXXX() method naming, and I think that this is right. (Especially since it is the established convention.) I do think that naming the method in the passed tense, as in "GetTransposed()", is still helpful here, but only marginally.
Apr
22
comment Use of past tense (passive voice) to connote immutability? (E.g. Array.Transposed vs. Array.Transpose)
Wow, great discussion and examples. Thanks!