"Personal Objective Pronouns" vs "Objective Pronouns"?

Question: Are these referring to the same words? I see them used around interchangebly. Also for the rest of the pronoun types eg:
- I believe the following are synonyms too: "Subjective Pronouns" "Subject Pronouns" "Personal Subject Pronouns" etc.
How is one supposed to be great in grammar when the structure is so loose?
Answer: In my opinion, calling them subjective or objective pronouns amounts to conflating the terminology with subjective or objective case. In any event, "subjective" and "subject" would be used synonymously here, and likewise for "objective" and "object".
I would have thought that personal pronouns are a subset of all pronouns, including I, me, you, he, him, she, her, we, us, they, them, who, anyone, somebody, while impersonal pronouns include it, what, something. However, all the usage notes I can find indicate that personal pronouns are those that stand in for "grammatical persons" (I, you, him, she, they, them)--as in first person singular, third person plural, etc.--while impersonal pronouns are like "one".
Comment: As with any closed class, every pronoun is different in its own ways, and classification is inevitably messy. _Personal pronoun_ is a standard category in virtually all languages, but _subject(ive) pronoun_ is not, at least not in the sense of 'subject form of pronoun'; it can often mean the pronoun that is the subject of a given sentence, but that's not generic. The thing is that not all languages have subjects and objects; many are ergative, for instance. So these usages aren't standard, and therefore vary, from language to language, which means from linguist to linguist.
Comment: I recently looked at the *Cambridge Grammar of the English Language* pages on pronouns, and it uses the term "personal pronouns" to refer to not only the "core" pronouns "I, we, you, he, she, it, they" but also "one" and "there" (see the explanation in the book here: https://books.google.com/books?id=L1rPCgAAQBAJ&pg=PA278&lpg=PA278&dq=eight+core+personal+pronouns&source=bl&ots=fr0-mSjxUO&sig=Jzq2uEFR0oHDnBhxL5PjSXdqGmw&hl=en&sa=X&ved=0ahUKEwjIptetut3ZAhVi64MKHeEPC-4Q6AEIRTAC#v=onepage&q=eight%20core%20personal%20pronouns&f=false
Comment: basically, the authors seem to use "can it appear in a tag question" as the main criterion)
Answer: Not all pronouns are personal pronouns.
I recently looked through the Cambridge Grammar of the English Language and from what what I remember, it uses the term "personal pronouns" to refer to not only the "core" pronouns "I, we, you, he, she, it, they" but also "one" and "there" (see the explanation mentioned in Elise Mignot's paper "Pragmatic and stylistic uses of personal pronoun one"; basically, the authors seem to use "can it appear in a tag question" as the main criterion).
The word who is an example of a pronoun that is not a personal pronoun. Who is classified either as an interrogative pronoun or as a relative pronoun, depending on the context and usage. (I still haven't learned all the criteria for distinguishing between these two uses of who).
Subjective, subject, objective, object
"Subjective"/"Subject" and "Objective"/"Object" are examples of variable terminology. The problem is that English does not really have a systematic distinction between one morphological case typically used for subjects and another morphological case typically used for objects in the way languages like German, Russian or Latin do.
In English, there are only six pairs of distinct "subjective" and "objective" forms—I/me, we/us, he/him, she/her, they/them, and to a lesser extent who/whom—and you can see that for about half of these, the two forms don't even have any clear resemblance to one another.
Because the phenomenon of English pronominal "case" is so different from the prototypical examples from other languages of a nominative case/accusative case distinction, some people don't like to use the terms "nominative" and "accusative" when talking about English grammar.
Some people think that the terms "subjective" and "objective" are a less misleading way to describe the distinction between different types of pronouns in English. (The Wikipedia article on "Nominative Case" says "The English language is now often described as having a subjective case instead of a nominative, to draw attention to the differences between the "standard" generic nominative and the way it is used in English.")
"Subject pronoun" and "object pronoun" are just variant terms.
Objective pronouns
There are a number of contexts where me, us, him, her, them behave differently from whom. Most obviously, a "personal objective pronoun" form must be used if the pronoun is (by itself) the direct object of a verb ( *"They helped I" is not grammatical; it has to be "They helped me"), whereas the form whom is optional as the direct object of a verb ("Who did they help?" is grammatical; "Whom did they help?" is not required).
Another difference is that it is ungrammatical to use whom as the predicative complement of a finite copular verb (*"Whom was it?") whereas it is grammatical to use me, us, him, her, them predicatively ("It was me").


How to make a dimensionally stable panel using hardwood?

Question: I need to create a panel that is about 24" square and about 1.5" thick and I want it to be dimensionally stable and not prone to splitting or warping. The material will probably be oak. What is the general pattern to approach the lay up?
Answer:
What is the general pattern to approach the lay up?

Slice your boards into thin veneers and glue the veneers up in a stack, with the grain of each layer at 90° to the layer below it. Put the stack in a press to cure under pressure. Trim the edges and cut to final size.
Now, you're probably not actually going to make your own plywood, but that's how you get dimensional stability. Solid wood panels expand and contract with changes in humidity, and there's not much you can do to stop it short of controlling the humidity. Allowing for seasonal movement is an important consideration whenever you're making something out of solid wood.
So, if you want a panel that looks like it's solid hardwood, make it out of plywood (or another stable substrate such as MDF), and then wrap the panel in thin pieces of hardwood. Be sure to use end grain pieces where the ends of the boards making the panel would be, edge grain on the other sides, and face grain for the pieces. If you do it carefully, you should be able to hide the joints pretty almost entirely.
Up to this point, I've understood your use of panel to mean a flat piece of wood with no moving parts, but maybe you just mean that you want a 24" square thing made of wood, and you're OK with letting some parts move. In that case, a traditional approach would be to use a frame and panel design, where a solid panel "floats" inside a frame that has enough room for the panel to move seasonally. Since the frame is made up of narrow parts, it's relatively stable.
Another method would be to not glue the boards making up the panel together, and to hold the panel together with e.g. breadboard ends. Usually, breadboard ends are pinned in the middle and the panel is allowed to expand and contract at the edges. However, if you use joinery like lap joints, tongue and groove, or spline joints, and if you don't glue them, and you leave enough space for seasonal movement, you could pin the breadboard ends at the ends so that the panel's width stays the same.
Comment: Ok, so you recommend laying up the pieces at 90-degree angles. In butcher block and things like that, it seems like they have the grain going the same way.
Comment: @TreowWyrhta I was describing the way plywood is made from thin veneers laid in alternating directions. I was mostly kidding because making your own plywood would be extremely difficult, but also wanted to describe why plywood is stable.
Answer: You can't create a dimensionally stable panel in solid wood under normal circumstances.
This is because wood naturally responds to changes in humidity by changing EMC. The length will remain effectively unchanged; thickness too (but only because that dimension is so small any changes due to moisture takeup and loss are small enough they're hard to measure). Width on the other hand will continually vary (but see footnote 2).
No guesswork is needed for how much the width might change, you can calculate the expected movement in service for oak, and alternative hardwoods, for your location using tables published online. See What is the maximum width for a full cross grain glue up? These tables use data usually derived from figures published by the FPL, go directly to the source for coefficients of movement for all commercially important US domestic woods.
As the data will suggest, you could almost ignore movement if you select the right species and with the correct grain orientation. See which direction does wood expand?
In addition to selecting for minimal movement with quarter- or rift-sawn boards (do note the issue with oak in regards to the sometimes extreme figure in QS material however) you can minimise wood movement with species selection, although availability and cost are definitely practical considerations now, due to Covid.
See also:
What general considerations do I need to take into account for wood movement?
What is the maximum width for a full cross grain glue up?

splitting or warping

Splitting or warping are separate issues to dimensional stability.
Unless the wood chosen is unsuitable (e.g. too wet before use, or badly dried) it should not split in service, same as almost any tabletop or cabinet panel would not normally be expected to split.
Warping can be similar, in that with good stock selection you help ensure, or at least minimise, the potential for any of the boards that make up the panel to contribute to a specific type of warp. Once a panel is made however it starts to act like a single board to a degree, and there's always the potential for cupping if one side can dry more than the other.
But circumstances and use are factors, especially over the long term.

How the wood with be fixtured to (as in a tabletop), or held by (as in a floating panel), whatever else it needs to interact with.
If it's intended to be free-floating or nearly so, stiffeners can be installed on the back if felt necessary. In the past this was often achieved with cross-grain stiffening strips (battens) running in dovetailed slots1. Now steel C-channel might be used for the same purpose and if installed correctly the resulting panel can remain the same thickness, a trick harder to achieve historically.
Whether the wood will be finished and with what, and to what thickness2.

1 This is one of the classic ways drawing boards were built to stay flat prior to the widespread use of plywood
2 Coat any wood in a thick enough application of any film finish and moisture uptake and loss can be reduced to almost zero. But this 'encased' look isn't to every taste and isn't suitable for many applications anyway.


C# Auto Resize Form to DataGridView's size

Question: I have a Form and a DataGridView. I populate the DataGridView at runtime, so I want to know how do I resize the Form dynamically according to the size of the DataGridView? Is there any sort of property or method? Or do I have to determine the size myself and update accordingly?
Comment: How do you "determine the size myself" please? I just need to know how many pixels the DGV "wants". (I can place reasonable limits to stop the form from getting too big.)
Answer: You can find the actual width by count Columns width.
Don't forget that your form may be more complex and your should count other controls.
public class YourForm : Form
{
    public YourForm()
    {
        DataGridView _dgv = new DataGridView() { Dock = DockStyle.Fill};
        Controls.Add(_dgv);
    }
    public void CorrectWindowSize()
    {
        int width = WinObjFunctions.CountGridWidth(_dgv);
        ClientSize = new Size(width, ClientSize.Height);
    }
    DataGridView _dgv;
}

public static class WinObjFunctions
{
    public static int CountGridWidth(DataGridView dgv)
    {
        int width = 0;
        foreach (DataGridViewColumn column in dgv.Columns)
            if (column.Visible == true)
                width += column.Width;
        return width += 20;
    }
}

Answer: int dgv_width = dataGridView1.Columns.GetColumnsWidth(DataGridViewElementStates.Visible);
int dgv_height = dataGridView1.Rows.GetRowsHeight(DataGridViewElementStates.Visible);
this.Width = dgv_width;
this.Height = dgv_height;

this.Width resizes this Form width.
Of course you've to add fixed values (for example margin, Form title heigth, ecc.).
With tests i've reached the values working for me (don't ask why...):
this.Width = dgv_width + 147;
this.Height = dgv_height + 47;

Answer: Normally controls adapt their sizes to the size of the containing form.  To adjust the size of your form to the size of your DataGridView, you do have to determine the size yourself and then set the form's size to match, remembering to take into account the extra size required by the form's menu strip and/or toolbars, status bars or other controls.
In your case, it would probably be best not to resize the form to match the grid view control.  Most likely, you will have many more rows in your grid view than could fit on your Windows screen, and you don't want to have a form that extends below the viewable desktop area.  Generally speaking, this type of situation is exactly why you want to have a scrollable grid view - for viewing more data than can fit on the screen at one time.
Comment: "To adjust the size of your form to the size of your DataGridView, you do have to determine the size yourself"

Is there a way to do that please? My DataGridView only has a few cells and it read-only. Resizing the form to fit is no problem at all, except I don't know how many pixels the DGV needs.

Many thanks.
Answer: I would go the other direction and size the grid to the form.  (some users may have low res)
Set 'WindowState' property of the form => maximized.  (optional)
Set 'anchor' property of the DGV => 'Top, Bottom, Left, Right'.
Answer: You may be able to make use of the PreferredSize property (MSDN PreferredSize entry). For DataGridView controls, I found that the preferred width and height were about 20 units bigger than I expected. I guess that the control might be calculating its preferred size taking scroll bars into account.
Another caveat I discovered is that the PreferredSize calculation will not be accurate immediately after adding or changing items in the table. To get around this I made a handler for the RowHeadersWidthChanged event.
Here is what worked for me:
class GridToy {
    private DataGridView grid;
    public GridToy(DataGridView dgv) {
        grid = dgv;
        grid.RowHeadersWidthChanged += AdjustWidth; // Event handler.
        Layout();
    }

    public void Layout() {
        // Just do some arbitrary manipulation of the grid.
        grid.TopLeftHeaderCell.Value = "Some Arbitrary Title";
    }

    public void AdjustWidth() {
        Control horizontal = grid.Controls[0]; // Horizontal scroll bar.
        Control vertical = grid.Controls[1]; // Vertical scroll bar.
        grid.Width = grid.PreferredSize.Width - vertical.Width + 1;
        grid.Height = grid.PreferredSize.Height - horizontal.Height + 1;
    }
}

Comment: I'm not sure whether RowHeadersWidthChanged is the best event to listen for, but it seems to get the job done.
Comment: Hmm. Further experimentation reveals that `PreferredSize` also takes into account the width of row headers, even if `RowHeadersVisible` is false. Looks like piecing together the size sum by hand is going to be more reliable.
Answer: You could set the Property " Height " to Auto in the form after classifying or using an ID and this should do it ,,
I just tried it .. and It worked
#form1{
 background-color:white;
 height:auto;
 width:1500px;
 border-top:medium solid #3399FF;
 margin-top:100px;
 margin-left:30px;
 display: inline-block;
 text-align: center;
 float: none;
}

I'm just putting exactly what I did in case you got lost .. Don't worry about the other properties there for my design.
Answer: Set AutoSizeColumnsMode :Fill in Grid Properties


Can I take my feral cat to my new home?

Question: About 3 years ago I spotted a feral cat coming at night to my backyard.  I started putting food out for her.  I set up trap and took her to the vet to get her fixed.  Came to find out she already was so I released her.  She would run to hide every time she would see me or any light.  2 years later (about a year ago) she started coming to my yard when she would see me putting food out.  Little by little she has trusted me, not fully but enough to pet her.  She now comes out when the sun is setting.  During the winter I tried to put her in the garage and it didn't workout, she is still feral.  Not extreme as when I trapped her but she definitely has trust issues. I plan to move in about 6 months and my heart breaks thinking of leaving her behind.  If I trap her and release her in my new neighborhood, will she be able to adjust?
I have no experience with cats so your help is greatly appreciated!
Answer: I'd say you shouldn't.

She doesn't even let you touch her. If she has problems in the new place, she can't ask help from you.
She might be too old to compete with the other cats from scratch. Now, she should have a territory of her own, and it is easier to defend than claim new one.
She might have other people giving out food.

The best you can do is to contact the neighbours to offer food at least from time to time, at a point close to your current feeding point. Even if they do it one-two times a week, it would help the cat a lot. Also, try to contact the new residents of your place, you never know when you meet a cat lover.
The odds are stacked against moving the cat, but it doesn't matter much. Bad things happen to feral cats all the time and it might happen to her whether you move her or leave her.
I hope this helps.
Comment: and even if op were successful in catching the cat and releasing it in a new environment, the cat's likely to just pack up and leave, trying to find its old hunting grounds. That's why it's always advised to leave cats indoors for a period of time after acquiring or moving them to let them acclimate and get a new claim on territory before allowing them outside.
Comment: @jwenting I agree. She'll look for familiar scents or scenes, unable to hunt or fend herself, with no human to help her. It looks bleak

Can I take my feral cat to my new home?


Uk Postcode lookup field with covering a range of districts

Question: Need some efficient solution of district range selector for an area in UK. Lets say I selected Manchester which covers many small districts like M1,M2,M3.....M20, M30... My users can be sharing responsibility of some of the districts of Manchester like from M1 to M10 and another user with M11 to M21. Also they can have multiple areas like Manchester(M), Aberdeen(AB) and so on and the range will be needed even then.
How to develop the interface for it so that it should create minimum load on mysql DB as well as handy for user to add a lots of areas with their desired district range.
All selected range postcodes will be added in DB and postcode info will be matched against each one so that the person responsible can be referenced.
For more idea: http://screencast.com/t/6qwCVhKA
thanks in advance
Answer: It sounds like you should be breaking the postcodes down into area, district and sector. So you have
<code>area | district | sector
------------------------
M    | M1       | M1 0AA
M    | M2       | M2 0AA
M    | M3       | M3 0AA
</code>
etc, this will enable you to reference by whatever level you want.
It's described in more detail on page 17 of this and on wikipedia, which is actually very accurate.


When generating PWM wave, shall I minimize switching or maximizing it?

Question: For instance, for a 50% duty cycle, what's the advantage/disadvantage of using 01010101 rather than 00001111?
Comment: The two are the same, just with a slower pulse rate.  So, you could use a high pulse rate and do 00001111, or pulse at 1/4 the rate and do 01010101.
Answer: As in so many engineering questions, the answer is "it depends".
Suppose you are just generating a voltage by filtering the PWM. In that case, the cost of switching is very low and you will get less ripple in the output by using your first example.
However, in the case of PWM to a massive load, perhaps using relatively slow-switching devices such as IGBTs, the cost of each switch transition is high and you may wish to minimize switch transitions- perhaps even to the point of using "magic sinewaves".
Comment: Your link points back to this answer. Did you intend to make it a reference to [Don Lancaster's site](http://www.tinaja.com/magsn01.shtml)?
Comment: @DaveTweed Rather to the less relentlessly self-promotional article in EETimes- thanks for pointing out the bad link.
Answer: In many cases, a device which is being controlled by a PWM signal will effectively lengthen or shorten pulses by some unpredictable amount.  If one has the ability to turn the output on or off once per microsecond and a device may arbitrarily lengthen or shorten each pulse by up to 100ns, then a sequence of PWM output patterns which successively has 1, 2, 3, or 4 separate "1" intervals per 8us interval, and then 3, 2, or 1 separate "0" intervals per 8us interval, would yield average output values (in eights) of
1 +/- 0.1 = 0.9 to 1.1
2 +/- 0.2 = 1.8 to 2.2
3 +/- 0.3 = 2.7 to 3.3
4 +/- 0.4 = 3.6 to 4.4
5 +/- 0.3 = 4.7 to 5.3
6 +/- 0.2 = 5.8 to 6.2
7 +/- 0.1 = 6.9 to 7.1

There's a rather nasty bit of uncertainty in the middle, and if the device tends to ride the high or low side of the range the outputs will be decidedly non-linear.  By contrast, if one only has one rising edge and one falling edge per 8us interval the output values would be:
1 +/- 0.1 = 0.9 to 1.1
2 +/- 0.1 = 1.9 to 2.1
3 +/- 0.1 = 2.9 to 3.1
4 +/- 0.1 = 3.9 to 4.1
5 +/- 0.1 = 4.9 to 5.1
6 +/- 0.1 = 5.9 to 6.1
7 +/- 0.1 = 6.9 to 7.1

Much more predictable, and much less likely to introduce non-linearity.
Reducing switching will thus minimize some kinds of non-linearity and
unpredictability in the output response, but will also increase the
amount of low-frequency content in the output, which may be harder to
filter than high-frequency content would be.
A hybrid approach which may be useful if one e.g. wanted to output about
225 distinct PWM values using a 1us sampling clock but one wanted to
minimize the amount of frequency content below 50Khz would be to have
every 256us interval contain 16 groups of consecutive 1's, which could
vary in length by 1us.  The lowest output level (code 16) would have
sixteen 1us pulses every 256us; the next higher value would have fifteen
1us pulses and one 2us pulse.  The next would have seven 1us pulses,
then a 2us pulse, then seven 1us pulses, then a 2us pulse.  The next
would have five 1us, one 2us, four 1us, one 2us, four 1us, one 2us.
So long as one only uses code values within the middle 14/16 of the
range, this approach would yield consistent linear behaviors while
minimizing the amount of lower-frequency content.  I don't know why
I never see hardware to implement this, but it's certainly workable in
software.
Comment: You have seen it, but perhaps you didn't recognize it for what it is. It's called a "delta-sigma modulator".
Comment: @DaveTweed: I thought delta-sigma modulators were normally used in cases where frequency-dependent non-linearity in the output transforms is well-characterized (and often deliberately introduced).  What I had in mind would basically be the ability to cascade two 8-bit PWM generators such that one of them would control whether the other would have its output indicate whether the count was less than the programmed value, or indicate whether the count was less than or equal to the programmed value.
Comment: Yes. In both cases, you're doing what's called "noise shaping". It's just that the delta-sigma modulator does implicitly what you're trying to do explicitly. That's why everyone does it that way.


Windows Installer-Avoid FileinUse dialog box when Installing a package

Question: When ever there is an update patch of files that have to be replaced with the existing files and if one of the files is being used by any of the processes, then a file in use dialog box pops-up.I wanna avoid that dialog box and get that file queued up for installation so that it can be installed at the time of system reboot.
I have read that the queuing the files for update at the time of reboot is the inbuilt functionality of windows installer.
Can someone suggest me the way to remove that FileInUse Dialog box.
I tried setting up the "MsiRMFilesInUse" property to "0"  but it didn't work.
Comment: Hi teja, this issue has surfaced again. I do not think setting [**MSIRESTARTMANAGERCONTROL**](https://learn.microsoft.com/nb-no/windows/desktop/Msi/msirestartmanagercontrol) is an acceptable solution, but [**maybe check it out anyway?**](https://stackoverflow.com/a/51602964/129130) [Here is a quick link to itninja (bottom)](https://www.itninja.com/question/how-to-suppress-restart-manager-prompt).
Answer: "Short" Answer

Essentially: you could 1) run completely silently (suppresses the files-in-use dialog), 2) shut down locking
applications gracefully (application update to allow graceful shutdown - with or without restart manager support), 3) ensure proper service control (if dealing with services), 4) force-kill
running processes (the "sledgehammer-approach"), 5) abort setup if locks are detected, 6) require logoff before deployment, 7) install to a new folder for each version (side-by-side install), etc...

Below is a little drill-down of files-in-use issues and the Restart Manager - intended as a quick review for files-in-use and reboot issues.
In terms of your actual problem. I wouldn't mess with the FileInUse dialog(s). It won't really solve your problem. Maybe consider these pointers:

Services: If you are installing services and they trigger files-in-use issues, please see section on services towards the bottom to determine if you can improve your setup's logic.
Silent Mode: Running your setup in silent mode would be an obvious way to suppress such files-in-use dialogs, but then you have to suppress automatic reboot, or the system will spontaneously reboot without warning. Details below.
Policy: Please check if the DisableAutomaticApplicationShutdown policy is enabled on your box / standard PC configuration. See details below.

Registry location is: HKLM\Software\Policies\Microsoft\Windows\Installer.
I am not sure if enabling this policy will make the files-in-use dialogs disappear.

Restart Manager Compliance: Maybe check if you should update your application to heed the design of the Restart Manager feature - to allow for auto-magic and problem free upgrades by applications shutting themselves down gracefully (provided you are dealing with binaries that you can actually change yourself - in other words:  you have the source code). Lots of details below.
"Setup Overkill": If you deem it safe to kill your application without mercy during upgrades, see section on this below.
Graceful Shutdown Custom Action: If you make your application capable of graceful shutdown (restart manager-style), then you can trigger such a shutdown yourself as well (easiest for user context processes) via an immediate mode custom action (in case Restart Manager is disabled by policy - look out for timing and timeout issues though - especially for silent running - "deadlock").
Side-By-Side Installation: some details below. Some companies decide to install applications truly side-by-side so there are no file overwrite issues with their new deployments (old versions uninstall may still trigger required reboots though).

I suppose you could also abort the install if locked files are detected, or you could require users to log off before the installation is run - if you have a distribution system.
Please at least skim the rest of the answer for more details and context.

Restart Manager
Your applications and services should be prepared to be shut down by the Restart Manager and save user data and state information that are needed for a clean restart. This requires updates and changes to the application / service to adhere to standards for shutdown and restart of the application.

The Restart Manager: is a new C-style API available beginning with Windows Vista and Windows Server 2008. Restart Manager consists of a single DLL that applications can load to access the Restart Manager API. The idea is that the Restart Manager will auto-magically shut down and restart your applications during installations / updates, by having the application / service follow a set of guidelines:

Guidelines for Applications - (the crucial tech-read)
Guidelines for Services

In essence: The whole idea is basically to prefer restarting applications rather than restarting the OS - and also to avoid reboots in general.. To that end: 1)
Your application calls RegisterApplicationRestart() with a command
line specified for its eventual restart - it "signs up" for restart
management. 2) Your application watches for WM_QUERYENDSESSION
messages and shuts down gracefully saving data in an appropriate way
when told to do so. 3) Then Restart Manager can restart the
application when finished installing (restart can be disabled).

More Technical stuff:

Here is a nice Symantec article on "Files In Use & The Restart Manager".
How do I add support for Windows Restart Manager to my application? (Advanced Installer)

Restart Manager Configuration: There are a number of properties that will affect how the Restart Manager will operate with Windows Installer:

MSIRESTARTMANAGERCONTROL - use the Restart Manager or FileInUse Dialog
MSIDISABLERMRESTART - restart or don't restart shut down applications
MSIRMSHUTDOWN - shutdown, force shutdown or do not force shutdown

When Restart Manager is used, the MsiRMFilesInUse dialog is used instead of the FileInUse dialog to show a list of applications that have locked files.
N.B! The whole Restart Manager feature can also be disabled by policy:

DisableAutomaticApplicationShutdown policy.
Check in HKLM\Software\Policies\Microsoft\Windows\Installer.
Restart Manager behavior with Windows installer

FileInUse
If you don't have the time or resources to implement proper interoperability with the Restart Manager (which is frankly the only sane thing to spend your resources on at this point in Windows's development), then there are a few things that might be good to know:

Silent Install: The first obvious thing to point out is that there will be no FileInUse dialog if you install the setup in silent mode. However, this could trigger a system reboot unless you specify the REBOOT=ReallySuppress property.
Services: Do you install services that you do not properly shut down during upgrade? There are built-in MSI constructs to shut down services during upgrades - the Service Control table.

Used properly, this ServiceControl feature means you no longer have any problems with service executables triggering a reboot to be replaced (barring shutdown problems in the service itself).
This is a built-in MSI constructs and works well when used right. People should not resort to custom actions to install services.

Application Support: Beyond interoperability with the Restart Manager, some application - that have files in use - can shut down gracefully when told to do so.

Some applications shut down properly when sent a command line, for example App.exe -shutdown, despite not having been written to be interoperable with the Restart Manager. Maybe system tray applications that save no data for the user?
This obviously has to be implemented specifically for the application in question - and if you do that, you should use the Restart Manager instead at this point (or additionally, you could have both call the same actual shutdown implementation).

"Setup Overkill": some setups are designed to just kill application processes that are open at the time of installation.

Not ideal, but it can work for certain types of applications that run in the background (OK, it is nuts, but it is done regularly).
Use a custom action or whatever built-in constructs are available in your deployment tool.

WiX: Kill windows service forcefully in WIX. WiX: CloseApplication.
VBScript: Close an application using VBScript.
Advanced Installer: How to detect or stop a process.
Installshield: Kill process. Kill process documentation.

REINSTALLMODE: Do you perhaps use REINSTALLMODE="amus" to force overwrite files during installation?

This can dramatically increase the amount of files in-use and reboot prompts since all files are attempted replaced - and generally unnecessarily so - especially in repair and modify scenarios.
This is particularly true for setups that install services that do not use the ServiceControl table properly to shut down the service before trying to overwrite its binary.

Side-By-Side Installations (SO): adding this for reference, it is beyond the scope of what is "normally relevant". This approach requires quite a bit of technical changes and proper distribution processes to be successful - it is primarily for in-house, core corporate applications (full app control possible) - in my opinion.

New versions, targeting new installation folders (add version number to installation folder?), can generally install without any file overwrite issues (unless any system-shared files are updated - in which case you should split them to a separate pre-requisite MSI - with its own distribution logic - when required - which should be rarely).
Older version uninstall can still trigger reboot requirements as the files can be in-use and not ready to be uninstalled. Obviously.
You can use automatic GUIDs for the setup components - so MSI can keep them tracked separately in a correct fashion. You must generally eliminate all need to set static components (or they must be installed to shared locations and kept static - or updated via a separate pre-requisite MSI when required).
The whole application must be "well behaved" for side-by-side use and installation. In other words not fight over file associations and load all resources properly and manage database connections that could be shared between instances, etc...
You add the version number to the start menu shortcut? Somehow you must be able to differentiate installations and launch the desired version - obviously. The application should be aware of its doppelgängers?
I might consider setting a new upgrade code for each release, in order to decouple the products from one another, and then use the distribution system to uninstall older, legacy versions (as a weekend or monthly batch job?). This is not 100% necessary, it all depends on your scenario. Lots of things can work when planned coherently - obviously.
Applications not suitable for normal side-by-side operation may sometimes be virtualized and sandboxed using App-V (virtual packages) to allow different versions to co-exist on the same box. New challenges.

Some Further Links:

FileInUse or FilesInUse (lots of inside information from a Symantec employee towards bottom)
Terminating process in CustomAction
Restart Manager behavior with Windows installer
How can I stop an .exe on repair, update and delete in wix?
RmGetList() API fails when file is locked using Ez file locker but works with another file locking utility
Suppress an MSI error code
Wix stop service on uninstall/upgrade: prevent "restart popup" (file-in-use situation)
Comment: Thank You so much for letting me know all the possible options. The main problem in my updates installation is, I cannot force close the files(Applications or Services) that are in use so I have to queue them for installation and install them when the files are released which usually happens when the system is rebooted. @Stein Åsmul
Comment: Sorry to "spam you" with a lot of "options" (not all are relevant for you). The answer was written for potential re-use. Hope you found something useful in there. If you need to install interactively (silent would solve the problem?), then maybe check the very last link in the answer above?
Comment: All the answers helped me and I have learnt something new. As I have send the updates as a patch group policy is not giving me the options for interactive installation. Is there any other way that you can suggest me in this situation.
Comment: Are these services? Or regular desktop applications?
Comment: Mostly desktop applications but sometimes I have send an update for services too
Comment: If they are your own applications, and you have the source code, then hooking up to restart manager might be the way to go? If not, then you are facing the age-old distribution issue of trying to update the machines of busy knowledge workers - no silver bullets.
Comment: If you do, please be sure to share the results with us. The rebootless future would be welcome for multi-user systems. I don't think restart manager works across login sessions, but I am not sure.
Comment: Ya Sure. I am planning to try the silent installation as well I think that might solve my issue.
Comment: OK, for the record you can find [a sample silent install command line along with some reference links here](https://stackoverflow.com/a/46224987/129130) (towards bottom).
Comment: Thank you so much for taking time and helping me.
Comment: No problem. Hope you find a good solution. I would try restart manager, but I wouldn't expect miracles. I am particularly worried about the cross session shutdown issues (multiple logged on users).
Comment: I think I will not have this cross session shutdown issue. Because only one user will be using the process on one system at a time. If that user releases(which happens after reboot) the file then it can be updated.The main issue is queuing it till the file is released.
Comment: Hi,@stein asmul could you please help me with running the files in silent mode. What would be the best way to write the script for silent installation. I tried using batch script but no luck.
Comment: Are these regular MSI files, or patches? [The basic method for silent installation](http://www.installsite.org/pages/en/msifaq/a/1024.htm). [Here is another take on it](https://stackoverflow.com/a/46780834/129130) (maybe also scroll upwards to the other answers). Maybe there is a need to add another question, so we can get to the bottom of this without too many comments added here? There are issues where you need to suppress the reboot by adding `REBOOT=ReallySuppress` and stuff like that.
Comment: Regular MSI Files. And I have posted one more question. https://stackoverflow.com/questions/51032433/batch-file-script-to-prompt-a-reboot-message-at-the-end-of-exe-msi-installatio
Comment: Looks like the other answer is closed. I'll try to get it reopened - which isn't too common. Two hints to get you going: you can check for `ERRORCODE == 3010` in a batch file after running an `msiexec.exe` command. This error code means "success, reboot required". Also, the property `ReplacedInUseFiles` will be set in an MSI if it has a need to replace in-use files. Checking if this property is 1 at the end of the install can tell you if a reboot is needed.
Comment: Something like: `msiexec.exe /i MyFile.msi /QN REBOOT=ReallySuppress` |
`if %errorlevel% == 3010 goto REBOOT` |
`if errorlevel 1 goto ERROR`
Comment: Thank You soo much @SteinÅsmul. I have found that copywhiz is have a feature which can achieve the desired functionality. But I am not sure how can I achieve it.       Here is the Copywhiz  feature  link:http://www.conceptworld.com/Copywhiz/Copy-File-In-Use-Replace-File-On-Reboot?Rewind=1.                                                 Also I have found a property "PendingFileRenameOperations" in vb.net. Can You please help me if you think I can find a solution using this property.
Answer: Assuming you are the package author, I would suggest following the norms, which are to use the MsiRMFilesInUse dialog. But if you want to attempt to disable things anyway, start by understanding the guidance for package authors on Using Windows Installer with Restart Manager:

Add the MsiRMFilesInUse dialog box to your package. If the MsiRMFilesInUse dialog box is present in the package, the Windows Vista user running an installation at the Full UI user interface level is given the option to automatically close and restart applications. An installation package can contain information for both the MsiRMFilesInUse dialog box and the FilesInUse dialog box. The MsiRMFilesInUse dialog box is only displayed if the package is installed with at least Windows Installer 4.0 on Windows Vista, and is otherwise ignored. Existing packages that do not have the MsiRMFilesInUse dialog box continue to function using the FilesInUse dialog box. A customization transform can be used to add an MsiRMFilesInUse dialog box to existing packages.
  End-users typically run installations at the Full UI user interface level. Basic UI or Reduced UI level installations give the user the option of using the Restart Manager to reduce system restarts even if the MsiRMFilesInUse dialog box is not present. Silent UI level installations always shut down applications and services, and on Windows Vista, always use Restart Manager.
: : :
Package authors can base a condition in the LaunchCondition table on the MsiSystemRebootPending property to prevent the installation of their package when a system restart is pending.
Package authors and administrators can control the interaction of the Windows Installer and Restart Manager by using the MSIRESTARTMANAGERCONTROL, MSIDISABLERMRESTART, MSIRMSHUTDOWN properties and the DisableAutomaticApplicationShutdown policy.

Setting MSIRESTARTMANAGERCONTROL=Disable, possibly removing the FilesInUse and MsiRMFilesInUse dialogs from your package, and optionally tweaking further settings discussed on System Reboots (such as setting the REBOOT or REBOOTPROMPT properties) may have the effect you desire.
If you are not the package author, you are probably asking in the wrong forum. The
DisableAutomaticApplicationShutdown policy sounds like it could do most of what you describe, and would apply to all packages installed on your machine. It is intended for use by systems administrators instead of package authors. Alternately you could create transforms (or specify properties on the installation command line) to effectively alter the package like the package author would have.
Answer: Hopefully not repeating too much here, but I'll start by pointing out that the reason for that dialog is to avoid reboots. You didn't say why you want to wait for a reboot instead of using the in-use functionality that lets you avoid rebooting in the first place. It's also unclear about when your next reboot is expected, the issue being that the install of the app is not complete until all the files have been completely replaced and updated. It's not unusual for an incompletely installed app to crash because its current state is some set of old and new files mixed together.

There is no MsiRMFilesInUse property, so setting it has no effect.
The MSIRESTARTMANAGERCONTROL property tells Windows whether to use the older FilesInUse behavior or the new Restart Manager FilesInUse methods of in-use detection. It does not turn off files-in-use behavior detection, it's just a switch between old and new methods. Because the detection methods differ you may see different behavior depending on what files are actually in use (only apps with open windows are detected by the old methods).
You should say which tool you are using to build your MSI file because they have different capabilities. Visual Studio setups have virtually no support for automatic shutdown, except that if you are installing services with installer classes then your Uninstall method could be extended to stop the service at uninstall time. If you are using WiX then there are util::CloseApplication capabilities.
The supported Windows shutdown method is to integrate your apps with Restart Manager, and Stein has links. For services, the "normal" service install with MSI ServiceInstall/ServiceControl takes care of this, but not for Visual Studio setup projects with installer classes.

Finally, create an MSI verbose log and look for in use entries, usually with a 1603 error (the file in use flavor, not the install crashed flavor). You may not need this log if the dialogs tell you the apps that need shutting down, so just focus on a way to get them stopped on an update, because that's a better solution rather than attempting to suppress the default Windows behavior.
Comment: The reason I wanna avoid that dialog box is I don't want my customer to stop their process in the middle  to complete the update. I want the update to be completed after they release that file.And I want the update Files to be queued. To complete the queued files update I want a reboot prompt. And for the update I am flexible to use any tool which can help me solve my problem.Right now i have tried using WIX, Install Shield, Advanced Installer
Comment: Windows Installer will queue files for replacement on reboot auto-magically. You can avoid that dialog - and all other dialogs - by running the MSI in silent mode. Reboot will then happen automatically when the setup completes, unless you specify `REBOOT=ReallySuppress` on the command line to prevent this behavior. As far as I know there is no way to get an MSI to install silently and then show a reboot prompt at the end though - all dialogs are suppressed. You can merely show a success message using the switch `/QN+`. I wish that switch would show a reboot warning as well, but it does not.
Comment: What if you would use WiX's Burn feature (bootstrapper / chainer) to install all MSI files in silent mode, and then check whether a reboot has been scheduled for the system afterwards? You would need to check prior to all the installs too. [Some reboot checking info](https://stackoverflow.com/a/49743175/129130). Throwing in two more links: [Preventing installs until reboot](https://stackoverflow.com/a/49744040/129130) and [detect multiple sessions](https://stackoverflow.com/a/49725074/129130).
Comment: I tried using WIX bootstrap but no luck. with that FileInUse dialog box appears and if I try to avoid that the installation stops at that point(at the file which is in use) forever till the file is released. But I wanna try the way you suggested(Silent Mode). Right now I am trying to install the files in silent mode using batch file.


2 sites sharing one user table

Question: How can I make 2 Drupal websites share the same user table so when a user is logged in on one they are automatically logged in on the other?
Answer: Your question seems to be all over the place. However, the Bakery Single Sign-On System module sounds like what you need.

Bakery provides a "single sign on" feature for Drupal based sites that are on the same second-level domain (i.e. example.com, subsite.example.com, subsite2.example.com). It could also provide support for any other website that implements the same web cookie, xmlrpc, and POST methods.
This module started at the 2009 Drupal.org redesign sprint in San Francisco as a way to manage single sign-ons across *.drupal.org infrastructure.
Read the bakery documentation for more information.
Answer: tl;dr Try using the Domain module suite. I allows you to run a site that "pretends" to be more than on domain, and helps you with relevant access rules and content sharing.
My experience with sharing tables is that you are in for a world of pain. I've tried it twice in the past and it has had various odd effects, due to various modules becoming confused. I no longer remember any specifics though, but if I did it today, I would take my own advice from above. :)

2 sites sharing one user table


external css in email template

Question: Im building a email template in marketing cloud and i would like to use the external css inside the email template. I have created a css file and dragged and dropped in content builder folder but it didn't generate the link for the css file. I tried using the cloud pages code resource but when i used the url in the email template css was not rendering. Is there any solution for this?
Answer: Firstly, I would state that having externally referenced CSS inside of an email is a bad idea. I believe really only the Apple clients have full support, everything else is partial or no support (ref). Also see this link to Campaign Monitor to show support of 'Link' tag inside HTML emails.
Outside of that, To fulfill your need inside of Content Builder, you would need to load the CSS not into a content block, but as a piece of content.  This is identical to how you upload images or documents.  I would save the file inside of Notepad or similar editor and save it as a '.css' document. (e.g. myStyles.css).  You then drag and drop that into Content Builder / Email Studio.
From there you can click on the item to bring up its properties and there you will find the reference link you need to insert into the email.
If you want to host it via CloudPages instead of Content Builder (recommended), you would just create a new 'Code Resource' page and then copy/paste in your CSS. You then use the URL for this 'page' inside your link tag.  Please note that you are not using the 'Code Snippet' feature, but 'Code Resource'.
Comment: This is a little confusing. You say externally referenced CSS has support issues, but that externally referenced via CloudPages is recommended? Or are you saying externally linked via CloudPages is better vs externally linked via Content Builder (given that either uses [unrecommended] external referencing)?
Answer: I was confused by the other two answers, but I was able to accomplish including a chunk of CSS in a script element by inserting (drag/drop) an HTML block in the email template Content Editor. I was also able to accomplish similar by inserting CSS in HTML reference content. So there you have a way to do it as a one-off (click to edit) or as a reusable component.

Answer: For embedded [external], you may run into support issues on many email clients as Gortonington mentioned, but if you do decide to go this route then you should be able to "templatize" your CSS by putting it in a content block in Content Builder and then using the ContentBlockbyId() (https://developer.salesforce.com/docs/atlas.en-us.mc-programmatic-content.meta/mc-programmatic-content/contentblockbyid.htm) [or ContentBlockbyKey(), or ContentBlockbyName()] AMPscript function.

external css in email template


qt signals/slots in a plugin

Question: I have an app with such structure: all the datatypes (class INode) are stored in plugins (DLLs). Some of the datatypes can be drawn (if they're IDrawable).
To load an object of, e.g. class PointCloudNode: public INode I have a special input plugin (DLL) which is called class PointCloudParser: public IIOPlugin and IIOPlugin is a thread with some specific functionality: class IIOPlugin: public QThread.
All the objects are created by NodeFactory class which is a singleton stored in separate DLL.
And here's the problem:
void PointCloudNode::update()
{
QObject::connect (this,SIGNAL(tmptmp()),this,SLOT(drawObject()));
emit tmptmp();
}

If I do this from any thread (main thread or the Input Plugin thread)
NodeFactory* fab = NodeFactory::getInstance();
boost::shared_ptr<INode> pc(fab->createNode("pointCloud","myPC"));
boost::shared_ptr<IDrawable> dr = boost::dynamic_pointer_cast<IDrawable>(pc);
dr->update();

The update launches, the tmptmp() signal is emitted, and the slot (drawObject()) executes correctly.
BUT
if do just the same, but create the object in my Input Plugin, pass over the shared pointer and execute dr->update() in another function, the slot drawObject() is never entered though all the code is executed (including connect, etc.).
To be more precise, here's the Input Plugin:
 void PointCloudParserPlugin::doLoad(const QString& inputName, boost::shared_ptr<INode> container)
 {
   NodeFactory* factory = NodeFactory::getInstance();
   boost::shared_ptr<INode> node = factory->createNode("pointCloud", inputName);

   // here goes the loading itself, nothing special...

   container->addChild(node); //that's the container where I keep all the objects

   //boost::dynamic_pointer_cast<IDrawable>(container->getChild(inputName))->update();
   //If I uncomment this line, it all works: the slot is launched.
   emit loadingFinished(inputName); // it executes the following function
 }

The last emit is connected to this:
 void GeomBox::updateVisualization(const QString& fileName)
 {
   boost::shared_ptr<INode> node = container_->getChild(fileName);
   boost::shared_ptr<IDrawable> nodeDrawable = boost::dynamic_pointer_cast<IDrawable>(node);
   nodeDrawable->update(); //this is the problem line: update() executes, connect() works, but the slot never runs :(
 }

How come? The node object is the same all the way through, it is valid. Every line in code in launched, QObject::connect doesn't write anything to debug window, the signal tmptmp() is emitted, but the slot drawObject() in one case is never reached? Any ideas?
Upd.: If I do not inherit IIOPlugin from QThread, everything works fine (i.e. load the object in the main thread). I expected the signals/slots to work across the threads...
Comment: have you done, qmake, make clean, make all again?
Comment: * have you included this last line in the source for plugins? ( Q_EXPORT_PLUGIN2(xxx,XXX))
Comment: yep, I've done all of that
it seems something's wrong with signal/slots between DLLs..
Comment: Did you double check if plugin is loaded? Put some asserts on plugin loading code
Comment: Yes, all the plugins are loaded correctly.
Answer: Since you are sending a signal across to a different thread, you might need to explicitly tell Qt that the connection should be a queued one:
QObject::connect(this, SIGNAL(tmptmp()), this, SLOT(drawObject()), Qt::QueuedConnection );

By default Qt will use Qt::AutoConnection as that last parameter, and it will choose whether to use a direct connection (if the slot is in the same thread as the emitter) or a queued connection (if the slot is in a different thread). But since your thread is in a separate library, maybe Qt isn't making the right assumption here.

qt signals/slots in a plugin


Why would an airplane pilot choose to intentionally use more runway than required for a takeoff?

Question: An assumed temperature takeoff intentionally requires a pilot to use more runway than would be normally required.  Why would someone want to do that instead of getting off the runway in the minimum distance possible?
Comment: Relevant article: http://www.skybrary.aero/index.php/Reduced_Thrust_Takeoff#Assumed_Temperature but I'll leave an actual answer to someone with jet experience :)
Answer: Imagine you're doing a takeoff at a high density altitude. You need more runway to get up to speed because your engine is producing less power and you need to move faster to move the same amount of air over your wings as you would at a lower DA.
Aircraft can pretend the DA is higher by using a higher than normal temperature when calculating takeoff information. In jets with automated engine controllers, this setting -in a round about way- allows you to set the engines to produce only the minimum thrust required to get off the ground safely. Since that results in less thrust, there is less wear on the engine and that adds up significantly over time.
Your trade-off for this decreased wear is that you need more runway, which is usually readily available. If you suddenly need full power you just move the throttle to the Take-Off/Go-Around (TOGA) or emergency power setting (or push a TOGA button on the throttle), which overrides the temperature preset.
Comment: Very good answer, wish we could accept more than one!
Comment: If runway "is usually readily available" then the aircraft has spent too much time taxiing to the end of the runway.
Answer: An assumed temperature takeoff (also known as "flex" on Airbus/Fokker aircraft) is where the engine thrust is reduced to match the performance on a higher-temperature day, up to either the maximum thrust reduction allowed or the maximum assumed temperature that meets takeoff distance requirements. Unlike a derate, assumed temperature takeoffs do not reduce the minimum control speed used for calculating takeoff speeds ($V_{MCG}$ for $V_1$, $V_{MCA}$ for $V_2$).
The minimum selectable temperature is the lowest temperature beyond the flat rating temperature range (the range of temperatures where maximum thrust is achievable, limited by an engine control unit), and the highest temperature is the temperature at which the maximum thrust reduction allowed will be met. Except with specific certification and approval (such as 40% flex on the A340), such a procedure must not reduce the thrust beyond 25% of the nominal takeoff thrust (either full rate or a takeoff derate). For example, the range of assumed temperatures permitted is 30-75°C (flat rated to $ISA+15$, thrust at 75°C is 75% of normal rating).
The main reason for performing an assumed temperature takeoff is to conserve engine life, therefore reducing maintenance costs. According to Boeing, engine wear exponentially increases with the takeoff thrust used -- with engines costing about 10 million USD each, this has the potential to save a lot of money for airlines.
If you are taking off using assumed temperature, you may (but are not required to) add thrust to TOGA in the case of an emergency, however if you are using a takeoff derate, you must not increase the thrust beyond the derated N1, as this could cause a loss of control (higher thrust = higher actual $V_{MCG}$).
Not all aircraft allow assumed temperature in conjunction with derates. For example, you can only select a derate or a flex temperature on all Airbus aircraft (if a derate option is offered).
NOTE: do not attempt to "copy the jet jocks" in a piston aircraft and attempt a reduced throttle takeoff: only at takeoff throttle levels is extra fuel injected for cooling and reduction beyond this point could result in CHT levels rising to unacceptable levels, increasing the risk of engine damage.
Comment: It seems that engine wear decreases with longer runways. Are there ways for airliners to invest in longer runways?
Answer: It's basically a question of economics. Derating your takeoff means using a lower thrust setting for the engine which means less wear and thus less money spent on maintenance.
Comment: Economics for whom? That extra time of taxiing costs a lot to the passengers. I also imagine that loss of time for the airliners also costs a lot.
Comment: @DavidJonsson: What extra taxiing time?  You're still going to be starting from the same place, just rotating and lifting off further down the runway.
Comment: I refer to techniques to lessen the time from gate to the runway in order to minimize total travelling time for the passenger. Do people mean that any lengthening of the runway will be used as a longer lift off time to save engine wear?
Answer: Airshow pilots will sometimes use more runway than necessary.  They'll get the wheels off the ground but remain in ground effect (sometimes only a foot off the runway, which I count as "still using the runway") while accelerating.  The extra speed will permit them to make a dramatic vertical climb that's a lot steeper than Vy or Vx would permit.
Comment: Good point, but my question is about assumed temperature takeoffs!  :-)


Transaction options over Web Service calls

Question: Does anyone have any insight into transaction options available over web-service calls?
1.) There are two applications that we have that need transactional communication between them.
2.) App1 calls a web service on app 2 and then makes some changes to its own db. the call on app2 and the changes to it's own db need to be co-ordinated. How can we do this? what are the possible options ?
Answer: You make the webservice call and if its successful do change in your own DB. If changing your own DB fails then call the webservice to revert the changes done in earlier call. For this to happen the webservice must provide the revert functionality.
For example, the webservice have createUser function then they should have deleteUser function.
Answer: It depends what technology stack you are using. In .Net WCF offers transaction features, otherwise the only thing that you can do is minimize the timespan an error can occur.
In previous applications, I've given the service a token to the web service. When the service returns (sync or async) it returns the token. The token has an embedded timestamp. If the timestamp has expired then the transaction is aborted, if not I assume the web service call was successful.
After successful return of the webservice call, the NEXT method call is to record the transaction within your system. This creates a very small window where the system behind the web service and your system will be out of sync. It also lessens the chance that an unexpected error will occur that will prevent the update/insert on your side.
Answer: You could try Atomikos ExtremeTransactions. It includes support for WS/SOAP transactions whose rollback spans multiple sites.
Guy


What did Zod break at the beginning of Superman 2?

Question: I'm watching Superman 2 on Syfy and I have sometimes wondered what was that red
crystal rod that Zod broke?  Based on the "S" on the front of it I assumed it was something of Jor-el's. Was it something really important or was it a "honey pot" to draw Zod and his "gang" out to arrest them and put them on trial?
Comment: He broke a red crystal thingy.
Comment: He broke the Richard Donner's contract
Answer: There's nothing to indicate exactly what it is, but the screenplay seems to indicate it's somehow related to Jor-El's role with the council (emphasis mine)

ZOD leads the way into the chamber. This imposing crystalline space, the parliament of Krypton, is empty for the moment. But the signs of its members are ever-present: around the great floating slab that is their conference table each has his (or her) own console of crystals - a transparent container marked with the identifying insignia, c.f. the symbols on each of their robes in Part I.
As Non and Ursa follow two paces behind. Zod strides along the slab, ignoring console after    console, stopping only when he reaches the one emblazoned with the S-like crest of Jor-El.
ANGLE DOWN ON IT as Zod lifts the lid of the console and removes, from among all transparent crystals, the one red crystal.
PAN UP as he lifts it high. It glows even in the dim light of the empty chamber - until Zod, with a satisfied and sinister smile, snaps it in half. He tosses it to the ground and looks with a self-congratulatory air at Ursa and Non.

Given that they are tried and condemned immediately afterward, it's likely it was the final piece of evidence in Zod's scheme to overthrow the council. In other words, it's just a MacGuffin so they can tie the trial of Superman I into Zod being the villain of Superman II.
Comment: On this question, that screenplay is probably a very good source.  However, despite it being labelled as the "shooting script," it must have been cobbled together *after* Richard Donner left the project, since Donner has been emphatic that this scene (among others) was not present in the shooting script he was working from when he started on the film.
Comment: @Buzz It probably wasn't. Richard Donner's cut doesn't recap this, since most of the scene was from Superman I. But trying to find a serious canon on anything Richard Donner is difficult.


When should you specify PAD_INDEX?

Question: So, you can use FILLFACTOR to leave space in leaf index pages. Specifying PAD_INDEX also leaves space in intermediate nodes. What scenarios should you specify PAD_INDEX, and what benefit does it provide to the index?
Answer: From Kimberly Tripp's post:

Typically, PAD_INDEX is not needed unless you have extremely unbalanced activity and are unable to rebalance the tree (meaning you need to achieve high availability).

Read more: http://www.sqlskills.com/BLOGS/KIMBERLY/post/MSDN-Webcast-QA-Index-Defrag-Best-Practices-Fragmentation-Questions-Part-I.aspx
What she means by high availability is that you don't have the ability to run index maintenance jobs that would lock the table.  Personally, I wouldn't recommend ever setting this by default - leave it to DBAs who find that they're unable to manage index maintenance appropriately with any other methods, like using Ola Hallengren's maintenance scripts during off hours.  His scripts are genius - they'll do as much as possible online.
Comment: You rebuild it less often, but with much more free space available.
Comment: How would `PAD_INDEX` help if you are unable to regularly rebuild the index to enforce the `FILLFACTOR` on the non-leaf nodes of the index in the first place?

When should you specify PAD_INDEX?


Ring topology by using arduino and Bluetooth

Question: I want to connect Bluetooth in a circular ring is it possible to contect 8 arduino with each other via Bluetooth hc05 or hc06  and share data into tha ring..
Answer: Its probably possible, but I don't think it would be a good idea.
Each Arduino is going to have to forward information it receives that is not for it.  This is a drain on processing power.  Add to that you are going to need to give the devices an identity, so they know what data is for them, and a inform them of the topology of the network so they know how to connect to the adjacent nodes.
Depending on what problem you are trying to solve you might want to look at direct radio coms implementing a mesh network, or the simplest of all solutions Wifi.  You could use an ESP8266 to form an access point and others to connect to it.  I believe there might be a limit to the number of connections an ESP8266 can have at any one time but this could be mitigated by dropping the connection after the message has been sent.
Comment: Every arduino needs two HC05 since it's only BT 3.0.
A BT 4.1 or 4.2 can pair multiple devices, only one BT hardware is needed.


how do i create a /map frame?

Question: I have the following tf tree, but I'm missing the /map frame. Where does it come from? What is supposed to publish it?
Answer: and welcome to Robotics Stack Exchange. Could you provide why you would like to create a /map frame? This could be done easily creating a tf publisher using tf2 package like this:
<code>rosrun tf2_ros static_transform_publisher x y z yaw pitch roll frame_id child_frame_id
</code>
However, this is just for statics transforms as you can read. Normally the map frame is used to do some localization algorithms, and it wouldn't make sense to say that map and base_footprint transformation is static. Normally, you would like an odom frame as well.
I would encourage you to read ROS tutorials as well as REP-105
Comment: hello thankyou for the help , i need the /map frame and the /odom frame because i am currently trying to do localization with amcl.  But i am new to ros and currently having troubles with the odom and map frame which is currently missing , i triedd static transform but doesnt workout since i need map --> base_footprint / map -->odom--->base_footprint.  Dont have much time left for my project as i wasted too much time on this frames
Comment: i now have the /map frames but im just missing the odom frame
Comment: Odom normally is created by the controller of the wheels of your robot, in order to know where should it be taking into several aspects as the radius of the wheels. If you are working in simulation you can use some plugins or even ros control, but this last one is  a bit harder to set up. Another possibility could be to develop some software in order to create it yourself, taking information such as speed and IMU data, as an example. There are many possibilities out there. The issue here is that you shouldn't post projects tasks as it violates rules in the forum.
Answer: Normally, I use robot_localization
package that does both kalman filter and publish a TF tree from "map"->"odom"->"base_link". Also, here is the Wiki page

how do i create a /map frame?


Torque based bending on shaft

Question:
I wanted to see if the force acting at A (30 kN) would create a deflection from OB other than twist. In other words, would a force perpendicular to the axis of rotation cause anything other than twisting?
Comment: What have you tried to convince yourself one way or another? Showing what math or thinking you have done so far will help people answer. For example, try free body diagrams - what are the reactions at point O, or, cutting the part to look at equilibrium of bar AB, what are the forces at B that are applied to to tube OB? What do these FBDs tell you about the loads tube OB is subjected to?
Comment: "Yes". Try it with two rulers taped together and see what happens.
Answer: Yes the force will have at B a torque of
T= -30* 0.8= -24kN.m
And BO will act as a cantilever beam under 30kN upward load. The moment upward at 0 will be:
M= 30kN * 1.2 =36kN.m upward.
Assuming up as positive sign fo force.
So the BO will both twist clockwise and bend upwards.
Below is an exaggerated sketch of the deflected bar.
Comment: Thanks Karmran, to clarify are you saying that 30KN can be placed at point B ? Also if rod OB was connected to handle AB through two keys, would that change anything?
Comment: Yes you could replace the original load with a 24kN torque and a 36kN vertical load at B. And unless we wand to analysis the stresses at be the details of the handle AB connection at B are not relevant as long as they are strong enough to apply the torque and P load at B. Like you could weld it or use 4 screws or tie it tight with a rope.
Answer: This is a riff on @kamran's answer, but I hope it's different enough to be worthwhile.
Look at the arm AB, and the action of the upward force.  Now do the statics around just the arm -- you'll find that at point B, there is an upward force and a moment.
As long as the deflection in the member from B to O is small enough, and nothing hits its elastic limit or just plane breaks, you can separately calculate the effect of the torque from the effect of the upward force.  When you're done, you can add those effects together for a final answer.

Torque based bending on shaft


What does Hume mean by metaphysics that fall under superstition?

Question: Hey guys I'm reading Hume's 'An Enquiry concerning Human Understanding' and there's something I can't quite understand. Through sections I and II Hume talks about how he is trying to come up with the foundations of a science of the mind or at least he is arguing why it is necessary. Then he goes on to talk about how metaphysics kind of takes advantage of hard philosophy being so complicated that it ends up being superstitious (probably referring to religion)
However I'm not really sure what metaphysics is so I was wondering if any one could give me an example of "real metaphysics" and another one of "fake metaphysics" which Hume is trying to distinguish.
There's also this conclusion he gets to at the end of section II where he says

All ideas, especially abstract ones, are naturally faint and obscure:
the mind has but a slender hold of them: they are apt to be confounded
with other resembling ideas; and when we have often employed any term,
though without a distinct meaning, we are apt to imagine it has a
determinate idea annexed to it. On the contrary, all impressions, that
is, all sensations, either outward or inward, are strong and vivid:
the limits between them are more exactly determined: nor is it easy to
fall into any error or mistake with regard to them. When we entertain,
therefore, any suspicion that a philosophical term is employed without
any meaning or idea (as is but too frequent), we need but enquire,
from what impression is that supposed idea derived? And if it be
impossible to assign any, this will serve to confirm our suspicion. By
bringing ideas into so clear a light we may reasonably hope to remove
all dispute, which may arise, concerning their nature and reality.

I'm not sure what he means there regarding a "philosophical term employed without any meaning or idea" I feel like an example would help me understand it. What would be an example of a philosophical term WITHOUT any meaning? What would be an example of a philosophical term WITH meaning? At first I thought he was saying that ideas that can't be tracked back to their original impression wouldn't be valid ideas but then I realized that according to Hume ideas don't just come out of nowhere so there must be an impression first, so he is actually referring to TERMS that come out of nowhere and that we think are associated to an idea but in fact aren't. So I'm really curious about what a term like this would be.
Thanks in advance for the help.
Answer: Hume discriminates between ideas and impressions. Ideas are our mental combinations of impressions. A philosophical term without meaning would be a term combining two or more impressions in a wrong way.
A winged horse (horse + wings) or an aureate mountain (mountain + gold) are two terms without meaning, of course they are not philosophical terms.
As an example of a philosophical term, meaningless according to Hume, I consider the term "causation". The term links two impressions which often occur in a fixed time order. According to Hume, "causation" is no other then the regular temporal neighbourhood of both impressions.
For an academic paper on the subject see Hume's Explanations of Meaningless Beliefs. I can send you the paper on request.
Comment: Thanks! This makes sense. I would appreciate it very much if you could share the paper with me.
Comment: No problem, please get me your email address.


How do you continue to cast video with Google Photos after 5 mins

Question: When you play a video in google photos and your casting it to chrome cast the screen will shut off stopping the cast. So I end up having to use Wakey to keep the screen on. But that just heats the device up, draining the battery. Any ideas how to set it to continue to cast after 5 mins
Answer: If you have rooted device, you can use http://forum.xda-developers.com/android/apps-games/app-screen-backlight-off-xda-exclusive-t3037380
Otherwise you can search for other app for streaming (I mean replacing Google Photos)


The most efficient DHT

Question: What is the most efficient DHT? I am looking for name and/or some kind of implementation or related work, but I am not looking for the one that is most used.
Efficient in terms of CPU execution cycles, load balance, and memory consumption.
Comment: Efficient how? CPU cycles, network traffic, storage space?
Comment: reword your question to be more specific about your use case, and how it specifically defines "efficient", or the question is likely to get closed.
Answer: These slides [PDF] describe a DHT that uses IDA (Information Dispersal Algorithm) for:

High Availability
No waste of Resources
No waste of Bandwidth
Simple and lightness protocol
It can be a start point for further works

Also, the DHT design described does not need a leaving protocol.
Regards,
Andreas
Comment: @Vincent, It seems to have been taken offline. I still had it on my computer so here is a link to the file in my public Dropbox: http://dl.dropbox.com/u/11733855/Bella_Pistagna_Riccobene_vodca04.pdf
Answer: Most DHTs are pretty similar in terms of functionality and differ mostly in how they handle neighbor sets and routing. It's not clear to me that one would be better than the other for any application. You would need to look at DHTs behavior and suitability and then choose the best based on your application.
A good technical comparison paper is A performance vs. cost framework for evaluating DHT design tradeoffs under churn (PDF). This paper compares several DHTs and discuss their suitability for different applications.

The most efficient DHT


NHibernate vs. EF 4.1+

Question: I am trying to decide the pros and cons of the 2 ORM primarily in this area.

Compatibility with Sql Server 2008 R2 & 2012.

This is very important as we simply don't have the resources to debug poor support of existing MS technology stack.
Also planning ahead since 2012 is pretty much out and plans to migrate to it are in place.

Support for .NET 4.0 and 4.5 (upcoming)

Again very important for pretty much the same reason above.

Transaction handling and table hints eg. forcescan forceseek, read uncomitted.

A lot of times the query optimizer does its job well, other times I want the flexibility to tell it what to do.

Support for conversation, self tracking attach & detach

This is somewhat fundamental. I hate to keep the session open for prolonged period. Especially in distributed computing/web farm environment.

Ability to handle code first development, create and update schema without destroying data.

EF 4.1 seems to be wanting in this regard, although 4.3 is leap and bound better. Also liking the data annotation better than seperate mapping classes in NH. Reason being I want to be able to send in the class and from there be able to create persistence model without widening the method for the mapping classes.

Support for IRepository pattern
Support for LINQ

Somewhat tied to (6) above I want really good support for linq. I don't want developers to muck around with lower level implementation and getting ourselves stuck to one particular ORM

Performance
Support for bulk CRUD operations, without having to load the data into the application layer. Eg. I want to increment all rows in a column of a particular table by 1. I don't want to load this up to memory, and increment the rows one by one. This would be crazy for such a simple operation. Linq2Sql used to have Magiq to handle this sort of thing, what does NH and EF have?
Caching, eager loading, lazy loading, navigation properties.

Let me be frank I hate these things when done implicitly. Reason being it's hard to distinguish what is cached, stale from what is new. In EF I usually drop all navigation properties, because I don't want these properties loaded with top 5, because that's what the current operation needs, but further down the stream another developer attempts to do a count which will be inaccurate.
So my personal policy - all SOA shall be stateless unless there is a good reason otherwise. If you need referencing data, get it from persistence. It will be slower but the code will be more readable and flexible.
Similarly for caching. It is complex enough as it is in distributed environment, I want all caching to be very very explicit. If a developer wants to code against the cache, it should do so, not code against the ORM, and make it appear as if he is pulling fresh data from persistence when in fact he is getting stale data.
Now question is, does NHibernate have any concept/abstraction that would make caching, eager/lazy loading so much more explicit than the one currently available in EF. In this case I don't care much about ease of development, I care more about clarity and explicitness.

Also I don't care much for OSS vs. propietary argument. The team cannot afford the time to peek under the hood and start messing around with other people's code. I care more about the "it just works" angle than anything else.
Comment: Well written question, though I fear it's a bit open-ended for SO; questions here usually/often have some source code, and should lead to clear, practical answers. Perhaps it's better suited to Programmers.SE?
Answer: While I wrote about some of these issues in another question, I think it's worth answering this one point by point.

Both are compatible with all SQL Server versions
Both are compatible with .NET 4.x. NH is still targeting 3.5, which is not an issue.
Both have transaction handling. Neither supports query hints in the native query languages, but both allow you to use SQL.
Both allow you to reattach disconnected entities. I personally do not think this is a good practice (I prefer passing DTOs around)
Schema migration is more mature and flexible in EF. Mapping is way, way better in NH. It does have support for mapping with attributes, which is a lot more powerful than EF's equivalent, which you'll quickly find does not support even basic stuff (like specifying a decimal field's precision)
You can implement your Repository on top of either one.
Both support LINQ. EF supports a wider range of queries, at the cost of generating extremely inefficient ones sometimes. You shouldn't dumb down your development practices; each query method has its advantages and a good developer should know the options.
Performance is usually better with NH because of its mapping flexibility and support for batching, caching, and DML statements
EF does not support bulk (DML) operations. NH does, using INSERT/UPDATE/DELETE statements that are very similar to the SQL ones, but over the object model (for example, you can specify conditions using dot syntax instead of explicit joins)

EF does not support caching, period. There are some unsupported samples that are not ready for production. All caching in NHibernate is explicit (you specify which entities, collections and queries you want to cache, for how long, etc). It supports distributed caches like memcached, so it can take care of stale cache data too.
Both allow you to explicitly eager load references and collections. NH has, in my opinion, a better proxy design, which doesn't pollute your model with FKs (this is a long topic, you can post a followup question if you want). And as usual, you DO have more flexibility when specifying how each relationship must be loaded.

In a nutshell: NH is more flexible and better performing, hands down. EF has better migration support, a slightly easier learning curve and a more complete LINQ provider.
Comment: A lot of good answers but I find this one to be the most objective and relevant to the question asked. Thank you.
Answer: First of all, I prefer NHibernate under various aspects. Entity Framework misses something also in the version 5.0.

Is very easy to add a new type in NHibernate, so if SQL Server 2012 has new types you can implement the relative dialect/provider, but the community is always working
I know that the NH team is working on the support of FW 4.5, EF supports it from the 5.0
Using NH you can do all what you want
NH supports the Merge method to re-attach an entity, EF also
EF does not support naming conventions, NH does, I'm also writing an auto mapper based on DataAnnotations, here the link to the old version, wait 2 weeks for the new one
Using NH or EF you can implement the Data Layer with the Repository and Unit Of Work patterns, I've to release also this package on NuGet
EF fully supports LINQ, NH not but you can patch using an extension point
I think that performances are on the same level, NH better supports the secondary level cache so is easy to prevent hits to the database
NH has an improved batching support, I don't know about EF (specially the 5.0)
NH has a better implementation of the extension points, so proxy/caching/logging are powerfull than EF, but in EF you can write a wrapper to get what you need

At the end, with NH is easier to implement DDD pattern, because the mapping is more flexible.
Comment: How is the NH mapping more flexible? I've found the EF 4 fluent API to be very flexible, especially since its defined separate from the entity classes.
Comment: @MatteoMigliore I like that you brought up wrapper support that was really good to know! But yes, please clarify how is it that NH is more flexible than EF? EF Pretty much allows you to modify the edmx and do mapping anyway you see fit, same from code first.
Comment: The mapping in NH can be made in a various (multiple) ways. [Read](http://fabiomaulo.blogspot.it/search/label/Fluent-configuration) the posts of Fabio Maulo about mapping. If you are interested, wait for my package of the auto mapper based on DataAnnotations to fast switch between NH and EF and viceversa.
Comment: @MatteoMigliore - I'm interested in your automapper, as a possible replacement for Fluent NHibernate. Can you point me to docs, or a blog post with simple code examples?
Comment: @TomBushell I published an old version on [Nuget](http://nuget.org/packages/EyeOpen.DataAnnotations.Nhibernate). I've to publish the new version in two weeks, with improvements to automatically map all and to use with DDD, waiting for it you can also try [ConfOrm](http://code.google.com/p/codeconform/) by Fabio Maulo.
Answer: You could use bltoolkit ;) -> http://www.bltoolkit.net/Doc.Linq.ashx
Just take 2 minutes to read this -> http://www.bltoolkit.net/Doc.LinqModel.ashx
But in short

extremely good Linq support
DML operations (nr 9)
great performace / bulk support
great generated Sql
enum support ;-)
no lazy loading / entity tracking / special magic caching, you now these things that usually cause problems
No magic features -> less abstraction -> less leaks -> less troubles -> smaller learning curve

btw it does nr 3, it has attributes TableFunction & TableExpression to support table-valued UDF, hints, and other around table decorations.
So you can write your own extension methods to use in your Linq-statements
for example
<code>[TableExpression("{0} {1} WITH (TABLOCK)")]
public Table<T> WithTabLock<T>()
    where T : class
{
    return _ctx.GetTable<T>(this, ((MethodInfo)(MethodBase.GetCurrentMethod())).MakeGenericMethod(typeof(T)));
}
</code>
and then
<code>using (var db = new TestDbManager())
{
    var q =
        from p in new Model.Functions(db).WithTabLock<Parent>()
        select p;

    q.ToList();
}
</code>
Sample DML operation
<code>  db.Employee
    .Where(e => e.Title == "Spectre")
    .Set(e => e.Title, "Commander")
    .Update();
</code>
Answer: You don't want either of them.  You're not going to be able to specify arbitrary table hints, and it won't be anywher near as flexible as you want it to be.
If all those are requirements, there is no ORM on the planet that will meet them.
EDIT:
Based on your comment.  nHibernate will give you the most power, but at the cost of increased complexity in setting up your model.  There are some tools that might help, but each has it's plusses and minuses.
EF is easier to configure and use, but less powerful.  nHibernate is the opposite.  You have to choose between power and complexity.
BTW, regarding Bulk operations and what not, you can just issue SQL directly from the framework for such operations.  Or call a stored proc.
Comment: No I'm going to pick the least of the 2 evil. Put it that way.
Comment: Thanks, but I need details. I hate untoward complexity and I need substantiating argument for why the complexity is there. The above are things that I look for I want to know how the complexity will help me reach that goal.
Comment: @Alwyn - I don't really understand what you mean.  You need substantiating argument for why the complexity is there?  It's there because that's the way they built it.  nH has grown and evolved over time and most of it's earlier practices were rolled forward.  They could have built nHibernate in a way similar to EF, but they didn't, and the only reason why is beacuse they have always done it the way they do it. There have been numerous attempts to bring nH into modern configuration mechanisms, some of them even gaining some hold in the core FW.  In the end, though. Configurability = complexity.
Comment: @Alwyn - It's not constructive to ask why something is the way it is, it just is.  The question is whether you are willing to use it the way it is.  nH gives you lots of flexibility, but you're going to be writing lots of XML, or trying to make fluent nH work.  or any number of other side-projects.
Comment: please don't take offense at my response I appreciate your time and your reply, but I was looking for more of a point by point comparison similar to Matteo's answer above. I don't have a legacy system, I just want to know which of the frameworks meet my needs better. And those needs are detailed above. p.s. I don't want developers to write sql directly, it defeats the point of having an ORM.
Comment: @Alwyn - But yet you want to do bulk operations that bypass the Object model, so that defeats the ORM in and of itself.  I'm not arguing that functionality isn't necessary, just that it's a different way of doing things that is not ORM friendly.
Comment: @Alwyn - I'm not taking offense either.  I'm just pointing out that the differences between nH and EF are huge.  They approach the problem in different ways, and I don't consider them to be comparable in a side-by-side way.  They're just different.  EF is typically in lock-step with MS technologies, nH supports a wide variety of technologies, and tends to move a lot slower.
Answer: Just to add to other answers...
Ricardo Peres wrote a very good, unbiased comparison of NHibernate and Entity Framework few days ago. It might help you in your research.
You can find it here: http://weblogs.asp.net/ricardoperes/archive/2012/06/07/differences-between-nhibernate-and-entity-framework.aspx

NHibernate vs. EF 4.1+


Golang: How to Convert time.Time to a Protobuf Timestamp?

Question: I have a time.Time variable in Golang 10-30 00:49:07.1236 that needs to be converted to a Go Protobuf timestamp.Timestamp. Any idea on what functions can be used to accomplish this? Or am I looking at this from the wrong angle?
Comment: Recommend using `godoc` or going to pkg.go.dev to read the documentation for the libraries you are using. For example, go to https://pkg.go.dev/google.golang.org/protobuf/types/known/timestamppb#Timestamp
Answer: See New and Timestamp.AsTime in timestamppb
These support conversion to/from time.Time and Timestamp
Answer: Below code will give convert time.Time to protobuf timestamppb format
import "google.golang.org/protobuf/types/known/timestamppb"
timeNow := time.Now()
timestamp := timestamppb.Timestamp{
    Seconds: timeNow.Unix(),
    Nanos:   int32(timeNow.Nanosecond()),
}
fmt.Printf("as timestamp %+v\n", timestamp)
fmt.Printf("as time.Time %+v\n", timestamp.AsTime().Local())

Output looks like this:
as timestamp {state:{NoUnkeyedLiterals:{} DoNotCompare:[] DoNotCopy:[] atomicMessageInfo:<nil>} sizeCache:0 unknownFields:[] Seconds:1694773177 Nanos:777135000}
as time.Time 2023-09-15 15:49:37.777135 +0530 IST

Comment: Question: Convert given timestamp to time and vice versa. Not finding current time.
Comment: Use `timestampb.New(time.Now())`, as per the top answer.


Dialogue alternatives questions

Question: When writing dialogue, what are some good alternatives to writing "he said" "she said" all the time?
Comment: Were there any ideas missed here : https://writing.stackexchange.com/questions/6911/alternatives-to-he-said-in-dialog?rq=1, or anything that requires clarification?
Comment: Nineteenth century overuse of said bookisms has ruined them. Your focus should be on how to not need dialogue tags.
Answer: This is actually a tricky situation. Because 'said' is invisible. No one bothers with it, but it tags the speaker nicely. So there are two main schools of thought on this.

'Said is dead'. In this school you avoid 'said' like the plague. There are dozens of other options here. 'Hinted', 'murmured', 'suggested', 'demanded', 'commented', the list goes on.

See Pintrest for one such list.

'Said' should make up 70% of all dialogue tags. Mind you, this is a rule that some literary agents use. Because they are tired of 'hinted' and 'gesticulated' and a whole bunch of other words that are just stand-ins for said, when in fact there's nothing wrong with the word.

Now, as commenters already said, "try to avoid dialogue tags", while a good thought, isn't good for everyone. It depends on how well you can manoeuvre around not needing them. Some like to use this technique:

"What are you doing?" Timmy stood with his hands on his hips, eyes angrier than a rabid dog.

In which it is inferred that the character mentioned in the action is the speaker. But this doesn't always work either, and for those of us that prefer to have one person speak, and have another person do the action in response to what is said... then this becomes annoying. Unfortunately, it's already a well-established convention, so I just have to live with it.
But you know what I find fun to do? Skip all that. In some of my dialogue heavy scenes, I don't put in actions at all. I don't put dialogue tags. Nothing. Just row after row of dialogue, with two or three speakers hashing out whatever they need to talk about.
It's difficult to do so well that everyone knows exactly who's speaking, which is why I only ever put this in well after the first act is concluded, so the reader has the time to get to know the character's motives and speech patterns, but when I feel comfortable with this? Ooh. I get cover ground like I'm a bloodhound on the hunt.
P.S.: nothing wrong with using the person's name, in case there are more 'hes' and 'shes' in the scene.

Dialogue alternatives questions


Dark wallet stealth address

Question: Please can anyone recover my coins from a dark wallet stealth address, how do i go about recovering the private key?? i have the seed but i don't know what derivation path the stealth addresses are stored, please help me
Comment: What software did you use to generate the address?
Comment: Looks like Dark wallet is the software in question: https://www.darkwallet.is/. I'm not sure how their stealth addresses work, however
Answer: Dark wallet (https://github.com/darkwallet) is essentially inactive and was alphaware, never meant to be used for production use. It was a grand experiment. Its architectural integration vision with libbitcoin is shown here at this deprecated webpage.
Take a look at https://monero.stackexchange.com/questions/1500/what-is-a-stealth-address/1506#1506 to understand what a stealth address really is.  Funds sent to a stealth address will require scanning a blockchain for appropriate OP_RETURN address to complete Diffie-Hellman key exchages to calculate private keys. There will be different private keys for each transaction sent using a wallet that supports stealth transactions. The libbitcoin-server (bs) indexes stealth transactions, see https://github.com/libbitcoin/libbitcoin-server/wiki/How-to-Initialize. The libbitcoin-explorer (bx) also supports bs stealth interactions, see https://github.com/libbitcoin/libbitcoin-explorer/wiki/Stealth-Commands. Good luck.
Comment: Update - see https://samouraiwallet.com/features.html supports BIP 39. If the Darkwallet used BIP 39 keys for configuration, you try loading those Darkwallet BIP 39 keys if the into a Samouraiwallet. Also see this dated URL: http://www.openbitcoinprivacyproject.org/stealth-address-tracker/.
Answer:
i don't know what derivation path the stealth addresses are stored

According to bitcoin.it

The project gained significant media attention for its use of modern BIP 0032 wallet format

You can obtain the Javascript source code from sourceforge

We're still in alpha state, that means we're still changing things a lot and it's not safe at all to use the wallet.  ...
You are very welcome to test, just remember the following:

Write down your seed and be always ready to use it to restore the identity.
First thing you should do is get familiar with creating and restoring an identity.
You can do: "create new identity", choose same name as before and restore, this will upgrade your store (you will still need to re add pockets and addresses, contacts etc...)

If you notice strange behaviour after upgrading, you should:

Restart the background process from darkwallet (from "manage extensions")
If that doesn't work: Clear Darkwallet storage, (from darkwallet settings), restart chromium

Remember: Your funds are safe as long as you don't lose your seed to restore later.
Other than that we're not making many guarantees.

(my emphasis)
This project seems to have fizzled out a couple of years ago, so you may find it difficult to find anyone who is able and willing to help ... and honest.
See also

What is a stealth address?
Comment: Thank you for your time, i just need someone to help me write a script to get the private key from the stealth address or can do it for me and i will pay 50$ in btc.
Comment: @chicopee, don't put your seed/private key into software you don't understand. I'd only run it on a PC that will never be connected to a network.
Comment: so should i give you the seed and stealth address?
Comment: @chicopee: Don't give the seed to anyone, if you do, you are giving them all your Bitcoin. what I meant was if someone sends you software they created for you, before putting your seed into it, you need to be 100% certain that the software does not send your seed to a scam artist who will use it to steal your bitcoins. Create a new seed and stealth address with zero balance to use in testing any software sent to you. Also make sure you can read and understand what the source code does. By the way $50 is unlikely to get the attention of a software developer in a developed / western nation.
Comment: ok, so what do i do, no one has any clue on what stealth address is.

Dark wallet stealth address


How to encrypt/decrypt the database password with FME 2011?

Question: Is it possible to use the encryption MD5 or other for database password with FME 2011?
Link
Comment: md5 doesn't really _encrypt_ though, does it? Isn't that just a secure one-way hash?
Comment: No the value password is clear in FME SERVER request. I think that Python must have a library for the decryption of password.
Comment: @Chad: Why md5 doesn't really encrypt ?
Answer: You can ENCODE the workspace itself.
Q) How secure is a password protected workspace?
A) We've taken efforts to make them as secure as possible to casual scrutiny. For example, there's no use anyone trying the FME_DEBUG keyword with the MAPPING_FILE option because we've made it invalid on protected content. I tried a number of ways to view a protected workspace in a text editor, or otherwise access the content, and couldn't.
However - we won't guarantee absolute security. We encode files, but we don't encrypt them; so it isn't like your local security agency of choice couldn't read them in ten seconds if you're thinking of creating a custom transformer such as 'DirtyMoneyLaunderer'!
As with all IT systems you can help security by...
<code>Choosing a non-obvious password (ie not your name, your initials, your company name, "FME", "password", "pa$$word" etc)
Choosing a longer password (in general longer passwords are more secure)
</code>
source:
http://fmepedia.safe.com/articles/How_To/Password-Protection-for-FME-Workspaces
Comment: No the value password is clear in request If the public parameter has a crypted password, is it possible
Comment: The password is clear in FME Server request so is it possible to crypted the password before the translation with FME ? If yes, how to make ?