5,532 reputation
32351
bio website
location Redmond, WA
age 23
visits member for 3 years, 10 months
seen Jul 1 at 21:04

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.


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.
Mar
16
awarded  Famous Question
Mar
4
comment Why aren't more desktop apps written with Qt?
@Jon: See my comment to Dehumanizer earlier in this long long series of comments. I believe it addresses that point. The commercial license is too restrictive for a lot of projects.
Feb
26
comment Do you have to rename the software when you fork a repo?
@nbrogi: That's what I'd argue, yes.
Feb
24
comment Do you have to rename the software when you fork a repo?
To extend Daenyth's point, if (2): Legally speaking, the license doesn't require you to do that. But ethically speaking you should. (If nothing else you don't want people you want contributing patches to you mistakenly contributing them with the project with which you are competing)
Nov
1
comment Why can't Java/C# implement RAII?
@AleksandrDubinsky: Java and C# don't eliminate leaks. Careful design is still necessary to ensure you aren't referencing the whole world in terms of memory. They don't attempt to address non-memory resources at all, and failing to release a resource like this is a common source of bugs in Java and C# programs, because people don't pay as much attention to ownership as they should.
Oct
31
comment Why aren't more desktop apps written with Qt?
@AnnonomusPerson: I don't think your criticism here makes sense -- there are dusty / shady corners of every library. The question is talking about systematic problems with Qt as a whole, not problems with a specific component. (You also appear to be trying to write an answer as a comment)