I guess no one has suggested this yet: use Process Explorer and search for any open handles to the file. Once all the handles are closed, you can delete it safely because it won't be in use.
This technique is a little shaky because those running programs that have handles to the DLL might be a little upset that it the handle is suddenly closed, but just reboot after you complete the process if something breaks or crashes.
I think it'll really start taking off on the desktop when there's a truly plug and play Linux distro aimed at corporate Windows desktop user. Firefox and Thunderbird and Open Office etc. bring it much much closer, but as long as Word documents still open up a little weird and the fonts look ugly as hell and printing always needs a little massage and sound cards and video cards aren't perfectly supported and UNIXy warts keep showing through and there are still little usability and interface issues -- this is what I mean by plug and play -- it's not going to take off.
I don't mean this to disparage the work that has been done in this area -- it's gotten so much better in the past 5 years, and it will get there probably in the next 3 or 4, but until you can pop in a Linux CD and have most Windows users not really be able to tell the difference (yes, it's getting closer), there won't be the exodus everyone's been expecting.
This is a super long post, but this is a very tricky issue and one that most developers encounter at some point (especially those working for startups.)
I had the same problem: I was the key (and practically sole) developer for a startup where I had worked for about two years, and wanted to resign (for reasons I won't get into.)
Though it would have been perfectly within my rights to leave after 2 weeks notice, the company would have been fucked. However, rather than leaving the company up shit's creek, I worked hard to interview and hire two replacements. Once the hiring process was complete I gave my 2 weeks notice and spent it helping the replacements get up to speed. The transition was fine and though I got a few calls thereafter, I made it clear that I would charge my hourly rate with a two hour minimum (to prevent them from hassling me with 5 minute phone calls.) I could have commanded higher rates but it wouldn't have been worth the damage to my relationship w/ the founders. I'm sounding a little preachy, but want to be clear that I didn't do this just to be "nice" -- other posters have rightly pointed out that burning bridges will come back to haunt you and conversely a good reference can be invaluable. I was lucky in that since the negotiations and transition went well, we're still on good terms and they'll be an enthusiastic reference in the future.
My case was a little different, however, because we were planning to hire people anyway and the process was nearly finished when I decided to resign -- so the timing was pretty good. In your case, it will probably be more complicated.
Realize your boss is scared shitless and knows he's fucked if you leave. This is good and bad -- it'll force him to take action but will leave him on edge. As a result, he'll make a lot of demands to cover his ass (as many of us would in his shoes.) Some will likely be unreasonable.
First, prepare yourself for the discussion.
Read this book: Getting to Yes: Negotiating Agreement Without Giving In (non-referrer link) It's inexpensive and a quick read, and you can imagine the cost of negotiating poorly and getting a sour deal (and possibly ruining your relationship with him.) In addition, think of how often you negotiate, both in personal and professional relationships -- you'll be able to use the techniques for the rest of your life.
Anyway, having gone through a similar process, here's what I'd do. I'm not claiming to be an expert, but maybe you'll find some of the suggestions useful (they're basically direct applications of the concepts in the book):
First, figure out the market value of your time (salary.com, your new salary, etc., plus premiums for late or weekend work if you can) and a fair cost for being on call (per month or per incident or whatever.) There have been other slashdot articles discussing this (google "on call" on slashdot.org.) Look over your employment contract, think of past precedents, read up on old emails and things you may have agreed to before, etc. Do your homework before the discussion.
To make things a little less adversarial, reassure your boss that you've enjoyed working with him and that you know him to be a fair person, and that you're confident you can work out a deal that is fair to both sides. Whenever you can, try to make things less personal ("separate the people from the problem.")
Then tell him that you need to move on for your reasons, and that although you sincerely want to make your former company's transition as painless as possible, you will only have a limited amount of time to help after your departure and expect to be fairly compensated for that time.
Then, figure out what your boss wants from the arrangement -- listen carefully to his concerns. You might think you have a handle on them already but you will almost certainly discover crucial details in the discussion.
Yeah, this is a total crock of shit. It was a publicly accessible URL -- no "hacking" involved, just pressing backspace. I can't believe the ill will being directed at these poor applicants.
I think it's much more like accidentally putting up a bulletin board with everyone's admit status (actually, people could only view their own data), or my acceptance/rejection envelope arriving a few days early. They're the ones who screwed up. Okay, I realize that these analogies aren't perfect. But they're much closer than most of the ridiculous comparisons and discussions and hate-mongering going on here. It's not like any admin accounts were compromised or people were altering their admit/deny status.
It's sad that Harvard crucifies its applicants instead of sacking up to the fact that they (or ApplyYourself) didn't manage their data properly.
The Markov chain-based note selector simply takes the current note and chooses among neighboring consonant (i.e. sounds good) notes, so you won't hear anything that sounds really awful.
The reason why this sounds so much better than other "random" or fractal compositions you might have heard is because the others effectively choose from any note on the chromatic scale and thus pull dissonant (i.e. bad-sounding) intervals about as often as consonant ones. But with this system, you're more or less guaranteed something that will at least sound somewhat coherent.
I seriously doubt that there is any meaningful feedback loop going on or that the hamsters are "feeling" they should go from that G# to A right now and then rest for 2 beats, or whatever. And even if they did, it's doubtful that they'd know that stepping forward would cause that note vs staying put or moving backwards.
So it would be interesting to compare to a random number generator (or some randomized approximation/model of hamster movement.)
I can't believe I just wrote 3 paragraphs about this shit. God help me.
You're right, though, that studying for the SAT is pretty much useless
That's completely wrong (both in terms of the old SAT and new.) You get better at the SAT with practice, just like you get better at playing guitar, sports, or programming with practice. Just having done a few practice tests gets you a reasonable improvement, then learning the basic strategies and concepts and serious vocab cramming gets you another big improvement, and then taking a ton of practice tests and working to improve your weak areas gets you pretty damn close to perfect scores.
I own an online SAT prep company (shameless plug, I know -- http://www.accoladeprep.com) targeted at the new March SAT (which is just as coachable, if not more so) and we provide an environment that allows kids to do the above, and they improve. (sorry if this sounds arrogant, but) I got a 1600 on the (old) SAT in 2000, and granted I do well on standardized tests but practice made the perfect score possible.
I've usually found technically minded kids from 7th grade through high school get a kick out of making computer games, even very crude, simple ones. I had a class in high school where we'd write simple programs and build things with Legos and motors, etc which turned out to be fun even for people that usually wouldn't be into it.
On the programming end, PyGame, an API for writing games in Python based on SDL should provide the gentlest introduction while still having kids do real "programming". And it's all free as long as kids have access to a computer lab. DirectX/C++ is usually too much for newbies to handle, but beginners can usually do some basic work in Python.
An element of competition may help increase interest -- I know this is way beyond anything you'd be planning and the scope of what high school kids could handle but here we have a game/AI programming contest (6.370) which provides a base platform/game engine so people without much game programming experience to still make something useful.
Lego Mindstorms probably also work in giving kids something "technical" to play with, but might be expensive for a volunteer project (unless you can get funding or have the kids buy the sets.)
I'd say start small -- many kids are elated to even get draw a ball bouncing across the screen, and it may spur their enthusiasm to learn on their own from there. Just tell them they can learn to make computer games.
No, no... This is HUGE for virtual hosting/virtual private server providers (i.e. web hosting providers that provide you with a virtual machine on which you're root, not some locked down/home directory with a million other people.) VPS'es allow you to run whatever distro you want, be root, run whatever PHP/Python/MySQL versions you need, etc. Basically (IMO) the control and flexibility of a dedicated server without the nightmare of having to replace faulty hardware or dealing with random outages. I have one for the company I run (until it gets too large for a VPS).
Hosting providers have used UML (and maybe VMware) for this but it's comparatively too slow. Virtuozzo does this (and is successful, and charges a fair amount of $ for it), so they must be shitting bricks right now.
Uh, I would imagine many of these people retrained as computer animators, which Disney, Pixar et al still need. The *tools* are different, but the core skills and concepts are the same whether it's ink and paper or Maya.
And if not, hey, they could draw kickass invitations for those company parties. With bunnies and gold stars and shit. It's a win win, dude.
i'm not a quantum physicist (sorry for not using a lame IANA* acronym) but i believe that since quantum bits can represent both 1 and 0 at the same time and thus through all the permutations of those 100 bits (2^100 states) could represent that much data -- since all possible states are represented simultaneously? again, i'm fuzzy on the details, but this could get you started wikipedia entry for qubit and there's some info on quantum entanglement that i havent chewed through yet that seems to be the basis for this.
I'm guessing it's a standalone EXE, and it would require some advanced knowledge, but you could create the process with the CREATE_SUSPENDED flag and then inject code to replace in the import table any API calls the virus uses to detect the debugging environment (I'm guessing the one they use is the simple IsDebuggerPresent() Win32 API call)
This used to be a pretty heinous hack but seems well documented now; googling for the keywords:
Pretty cool shit.. anyway, the point is after you put a dummy IsDebuggerPresent that always returns false, you can step through it normally.
Or, heh, a method that would probably be a million times easier would to simply step through the code until it calls IsDebuggerPresent and change the value of EAX to 0 after it returns (since the return value of functions is placed in EAX after return).
Anyway, just musing and putting up those links because I learned a lot about how Windows internals work through playing with things like that and figured others might want to learn.
As long as it is more profitable to simply ignore (or appeal to death) the antitrust punishments and to continue their monopolistic behavior, the fines and whatnot are simply a cost of doing business. I would do the same thing if I were them.
The billions of dollars that pour in annually from their various monopolies make even the most obscene fines look like a joke (and even the 500 million euro fine from the EU seems to be locked in appeals hell, so they're not really even getting hurt by that.)
I guess no one has suggested this yet: use Process Explorer and search for any open handles to the file. Once all the handles are closed, you can delete it safely because it won't be in use.
This technique is a little shaky because those running programs that have handles to the DLL might be a little upset that it the handle is suddenly closed, but just reboot after you complete the process if something breaks or crashes.
-fren
Dude, the IsDebuggerPresent() call can just be NOPed out if I'm not mistaken.
-fren
I think it'll really start taking off on the desktop when there's a truly plug and play Linux distro aimed at corporate Windows desktop user. Firefox and Thunderbird and Open Office etc. bring it much much closer, but as long as Word documents still open up a little weird and the fonts look ugly as hell and printing always needs a little massage and sound cards and video cards aren't perfectly supported and UNIXy warts keep showing through and there are still little usability and interface issues -- this is what I mean by plug and play -- it's not going to take off.
I don't mean this to disparage the work that has been done in this area -- it's gotten so much better in the past 5 years, and it will get there probably in the next 3 or 4, but until you can pop in a Linux CD and have most Windows users not really be able to tell the difference (yes, it's getting closer), there won't be the exodus everyone's been expecting.
-fren
The hell with that. I'm applying to the Brotherhood of Steel ;)
-fren
This is a super long post, but this is a very tricky issue and one that most developers encounter at some point (especially those working for startups.)
I had the same problem: I was the key (and practically sole) developer for a startup where I had worked for about two years, and wanted to resign (for reasons I won't get into.)
Though it would have been perfectly within my rights to leave after 2 weeks notice, the company would have been fucked. However, rather than leaving the company up shit's creek, I worked hard to interview and hire two replacements. Once the hiring process was complete I gave my 2 weeks notice and spent it helping the replacements get up to speed. The transition was fine and though I got a few calls thereafter, I made it clear that I would charge my hourly rate with a two hour minimum (to prevent them from hassling me with 5 minute phone calls.) I could have commanded higher rates but it wouldn't have been worth the damage to my relationship w/ the founders. I'm sounding a little preachy, but want to be clear that I didn't do this just to be "nice" -- other posters have rightly pointed out that burning bridges will come back to haunt you and conversely a good reference can be invaluable. I was lucky in that since the negotiations and transition went well, we're still on good terms and they'll be an enthusiastic reference in the future.
My case was a little different, however, because we were planning to hire people anyway and the process was nearly finished when I decided to resign -- so the timing was pretty good. In your case, it will probably be more complicated.
Realize your boss is scared shitless and knows he's fucked if you leave. This is good and bad -- it'll force him to take action but will leave him on edge. As a result, he'll make a lot of demands to cover his ass (as many of us would in his shoes.) Some will likely be unreasonable.
First, prepare yourself for the discussion.
Read this book: Getting to Yes: Negotiating Agreement Without Giving In (non-referrer link) It's inexpensive and a quick read, and you can imagine the cost of negotiating poorly and getting a sour deal (and possibly ruining your relationship with him.) In addition, think of how often you negotiate, both in personal and professional relationships -- you'll be able to use the techniques for the rest of your life.
Anyway, having gone through a similar process, here's what I'd do. I'm not claiming to be an expert, but maybe you'll find some of the suggestions useful (they're basically direct applications of the concepts in the book):
First, figure out the market value of your time (salary.com, your new salary, etc., plus premiums for late or weekend work if you can) and a fair cost for being on call (per month or per incident or whatever.) There have been other slashdot articles discussing this (google "on call" on slashdot.org.) Look over your employment contract, think of past precedents, read up on old emails and things you may have agreed to before, etc. Do your homework before the discussion.
To make things a little less adversarial, reassure your boss that you've enjoyed working with him and that you know him to be a fair person, and that you're confident you can work out a deal that is fair to both sides. Whenever you can, try to make things less personal ("separate the people from the problem.")
Then tell him that you need to move on for your reasons, and that although you sincerely want to make your former company's transition as painless as possible, you will only have a limited amount of time to help after your departure and expect to be fairly compensated for that time.
Then, figure out what your boss wants from the arrangement -- listen carefully to his concerns. You might think you have a handle on them already but you will almost certainly discover crucial details in the discussion.
He may bring up trust or loyalty or guilt yo
;)
-fren
Yeah, this is a total crock of shit. It was a publicly accessible URL -- no "hacking" involved, just pressing backspace. I can't believe the ill will being directed at these poor applicants.
I think it's much more like accidentally putting up a bulletin board with everyone's admit status (actually, people could only view their own data), or my acceptance/rejection envelope arriving a few days early. They're the ones who screwed up. Okay, I realize that these analogies aren't perfect. But they're much closer than most of the ridiculous comparisons and discussions and hate-mongering going on here. It's not like any admin accounts were compromised or people were altering their admit/deny status.
It's sad that Harvard crucifies its applicants instead of sacking up to the fact that they (or ApplyYourself) didn't manage their data properly.
-fren
This is actually the most insightful post so far.
The Markov chain-based note selector simply takes the current note and chooses among neighboring consonant (i.e. sounds good) notes, so you won't hear anything that sounds really awful.
The reason why this sounds so much better than other "random" or fractal compositions you might have heard is because the others effectively choose from any note on the chromatic scale and thus pull dissonant (i.e. bad-sounding) intervals about as often as consonant ones. But with this system, you're more or less guaranteed something that will at least sound somewhat coherent.
I seriously doubt that there is any meaningful feedback loop going on or that the hamsters are "feeling" they should go from that G# to A right now and then rest for 2 beats, or whatever. And even if they did, it's doubtful that they'd know that stepping forward would cause that note vs staying put or moving backwards.
So it would be interesting to compare to a random number generator (or some randomized approximation/model of hamster movement.)
I can't believe I just wrote 3 paragraphs about this shit. God help me.
-fren
I own an online SAT prep company (shameless plug, I know -- http://www.accoladeprep.com) targeted at the new March SAT (which is just as coachable, if not more so) and we provide an environment that allows kids to do the above, and they improve. (sorry if this sounds arrogant, but) I got a 1600 on the (old) SAT in 2000, and granted I do well on standardized tests but practice made the perfect score possible.
-fren
I've read a bunch of management books, of which I highly suggest a few:
Peopleware : Productive Projects and Teams, 2nd Ed. by Lister and DeMarco -- probably THE book you want to get
First, Break All the Rules: What the World's Greatest Managers Do Differently by Buckingham -- based on extensive surveys of what makes employees happy with their jobs and bosses, and what they need to do their job effectively
and I've heard good things about Becoming a Technical Leader: An Organic Problem-Solving Approach by G. Weinberg and How To Win Friends And Influence People (seen both cited by numerous successful entrepreneurs) but haven't been able to read them yet.
(BTW, those are all non-referrer links, I'm not link-whoring.)
I suggest reading a bunch; you'll start seeing overlap and will understand the basics after the first few. Good luck!
-fren
Nah, it's because we're starting our own companies now :) (ok, ok, not Ivy, but MIT) :P
-fren
I'd rather have a Jump to Conclusions mat.
-fren
Reading... his article.. makes me... wonder... if he is not... in fact... William Shatner... in disguise!
(remove spaces first, save as a
I've usually found technically minded kids from 7th grade through high school get a kick out of making computer games, even very crude, simple ones. I had a class in high school where we'd write simple programs and build things with Legos and motors, etc which turned out to be fun even for people that usually wouldn't be into it.
On the programming end, PyGame, an API for writing games in Python based on SDL should provide the gentlest introduction while still having kids do real "programming". And it's all free as long as kids have access to a computer lab. DirectX/C++ is usually too much for newbies to handle, but beginners can usually do some basic work in Python.
An element of competition may help increase interest -- I know this is way beyond anything you'd be planning and the scope of what high school kids could handle but here we have a game/AI programming contest (6.370) which provides a base platform/game engine so people without much game programming experience to still make something useful.
Lego Mindstorms probably also work in giving kids something "technical" to play with, but might be expensive for a volunteer project (unless you can get funding or have the kids buy the sets.)
I'd say start small -- many kids are elated to even get draw a ball bouncing across the screen, and it may spur their enthusiasm to learn on their own from there. Just tell them they can learn to make computer games.
-fren
Uh, actually, no. :)
-fren
-fren
...they sure do have a ghetto website. :P
-fren
No, no... This is HUGE for virtual hosting/virtual private server providers (i.e. web hosting providers that provide you with a virtual machine on which you're root, not some locked down /home directory with a million other people.) VPS'es allow you to run whatever distro you want, be root, run whatever PHP/Python/MySQL versions you need, etc. Basically (IMO) the control and flexibility of a dedicated server without the nightmare of having to replace faulty hardware or dealing with random outages. I have one for the company I run (until it gets too large for a VPS).
Hosting providers have used UML (and maybe VMware) for this but it's comparatively too slow. Virtuozzo does this (and is successful, and charges a fair amount of $ for it), so they must be shitting bricks right now.
-fren
I'm eagerly waiting for when the suprnova torrent goes gold (or until I get sent to federal pound-me-in-the-ass prison, whichever comes first ;))
-fren
Uh, I would imagine many of these people retrained as computer animators, which Disney, Pixar et al still need. The *tools* are different, but the core skills and concepts are the same whether it's ink and paper or Maya.
And if not, hey, they could draw kickass invitations for those company parties. With bunnies and gold stars and shit. It's a win win, dude.
-fren
i'm not a quantum physicist (sorry for not using a lame IANA* acronym) but i believe that since quantum bits can represent both 1 and 0 at the same time and thus through all the permutations of those 100 bits (2^100 states) could represent that much data -- since all possible states are represented simultaneously? again, i'm fuzzy on the details, but this could get you started wikipedia entry for qubit and there's some info on quantum entanglement that i havent chewed through yet that seems to be the basis for this.
-fren
This used to be a pretty heinous hack but seems well documented now; googling for the keywords: will get you some interesting results and tutorials.
* http://codeproject.com/system/api_spying_hack.asp
* http://tochna.technion.ac.il/project/Win32APIInte
Pretty cool shit.. anyway, the point is after you put a dummy IsDebuggerPresent that always returns false, you can step through it normally.
Or, heh, a method that would probably be a million times easier would to simply step through the code until it calls IsDebuggerPresent and change the value of EAX to 0 after it returns (since the return value of functions is placed in EAX after return).
Anyway, just musing and putting up those links because I learned a lot about how Windows internals work through playing with things like that and figured others might want to learn.
-fren
As long as it is more profitable to simply ignore (or appeal to death) the antitrust punishments and to continue their monopolistic behavior, the fines and whatnot are simply a cost of doing business. I would do the same thing if I were them.
The billions of dollars that pour in annually from their various monopolies make even the most obscene fines look like a joke (and even the 500 million euro fine from the EU seems to be locked in appeals hell, so they're not really even getting hurt by that.)
-fren
What can I say? Taco Bell brings it out in me.
-fren