5,598 reputation
32552
bio website
location Redmond, WA
age 24
visits member for 4 years, 2 months
seen 7 hours ago

Credit for Avatar image: http://www.assaultandroidcactus.com/

I'm a Microsoft Software Development Engineer on the Trustworthy Computing Team. I've worked at several security related places previously, including Malware Bytes and PreEmptive Solutions.

On StackOverflow I mostly answer related questions, though I occasionally forray into and a couple of others.

I am the author of pevFind, a component of the ComboFix malware removal tool, and volunteer at BleepingComputer.com as a malware response instructor. My Twitter account is @MalwareMinigun.


12h
answered Why Do B+ Trees Have a Minimum Occupancy of 50%?
Nov
18
revised What's wrong with circular references?
added 133 characters in body
Oct
6
answered Why is object-level privacy difficult to use as a paradigm, and why is it desirable?
Sep
30
awarded  Explainer
Sep
9
awarded  Yearling
Aug
24
awarded  Good Question
Jun
24
comment C# server side application 100 GB dataset + Garbage Collection
Don't forget that as a hash table based structure, dictionaries have a reasonable amount of overhead; even an empty dictionary occupies 16 bytes. Depends on what the load factor is.
Jun
24
comment C# server side application 100 GB dataset + Garbage Collection
Please use a database. Please. They spend years optimizing for data sets like this.
Jun
11
comment Why do VMs need to be “stack machines” or “register machines” etc.?
Yes. "Native code optimizer" == JIT compilation. There is an interpreter phase for code which doesn't appear to be "hot" to avoid JITing rarely used things. But that doesn't mean no JITing is done at all.
Jun
11
comment Why do VMs need to be “stack machines” or “register machines” etc.?
@Prog: Yep, that's correct.
Jun
9
comment Why do VMs need to be “stack machines” or “register machines” etc.?
Of course, most Javascript VMs aren't stack machines or register machines -- V8 / IonMonkey / Chakra / etc. are VMs that implement Javascript. A "VM" is just an interpreter or JIT compiler which can implement any language the designer so desires.
Jun
9
comment Why do VMs need to be “stack machines” or “register machines” etc.?
Of course, anything that can be implemented in software can be implemented in hardware. Also, the JVM currently (hotspot) is a JIT compiler -- it does not execute the statements in the language the JVM was written in. If it did, Java would perform terribly and would be nowhere near as viable a platform as it is today. (Hell, most Javascript implementations would be faster)
Jun
5
comment Why aren't more desktop apps written with Qt?
@Violet: When you're adding a simple GUI for an existing 500Kb uncompressed console app, growing 8x in size for that simple GUI is unreasonable. There are still a lot of users on dial-up out there.
May
11
awarded  Nice Question
Apr
30
comment Why is String immutable in Java?
@Shamit: Semantically, the JVM does not define what happens at that level. It is likely different on different CPU architectures. And of course, under the "as-if" rule the code that actually executes may look nothing like what you write in source code. What matters is the semantic meaning the language gives something. For example, strings are "immutable" but the JVM does mutate strings' guts under the covers (during construction or when reclaiming string memory, for example)
Apr
30
comment Why is String immutable in Java?
@Shamit: Nope, that's not true. A new int was created.
Apr
29
comment Why is String immutable in Java?
@Shamit: In that case, you mutated i, not 42. Consider string s = "Hello "; s += "World";. You mutated the value of variable s. But the strings "Hello ", "World", and "Hello World" are immutable.
Apr
28
comment Why is String immutable in Java?
@Shamit: Similarly, you can't do something like 43 = 6 and expect the number 43 to mean the same thing as the number 6.
Apr
28
comment Why is String immutable in Java?
@Shamit: Yes, I'm sure. Adding 1 to 42 results in 43. It does not make the number 42 mean the same thing as the number 43.
Apr
26
comment Why aren't more desktop apps written with Qt?
@Tim: RE: 3: Libraries that use C++ are compiler specific. You can't e.g. throw an exception from something compiled with one compiler to something compiled with another compiler. There's no reason to turn this into a bashing piece.