Year 2038 problem

Question: What is the likelihood of the Year 2038 issue being very problematic?
Comment: I'm already stockpiling tear gas grenades and bottled water!  :P
Answer: I have encountered this problem in an embedded Linux system that needed to handle dates past 2038 in some long-term cryptographic certificates, so I'd say the likehood of this depends on your application domain.
While most systems should be ready well before 2038, if you find yourself today calculating dates far into the future, you may have a problem.
Comment: Good one!  I did not think of that example!  What does the PKI standard use as a time syntax inside certificates?  I have never looked!
Comment: @geoffc, Actually it was a proprietary format and had its internal date/time structures, which themselves were big enough to fit dates past 2038, but it used GLIBC functions for date/time conversion. If I recall correctly, `mktime` call was silently failing.
Answer: I think this is going to be a significant problem, much more pernicious than the Y2K issues of 1999/2000 because the affected code is generally lower-level (it's CTIME) and so it's harder to spot places where time is being stored that way.
To complicate matters further, the fact that Y2K was perceived to be a damp squib will make it harder to draw attention to the problem in the runup to the event.
Cultural references:
Cory Doctorow was trying out a new model for short story commisioning / publishing under open licenses, and I suggested a 2038 theme o one of them, which he did brilliantly in Epoch: http://craphound.com/?p=2337
Comment: Speaking as somebody who was working on the issue at the time, Y2K fizzled because of a lot of work and planning beforehand.  The damp squib perception was reinforced by all the exaggerated doomsaying in the media.  I expect there to be a lot of planning and work done starting in 2035 or so, but if we're lucky we'll miss the media blitz.
Comment: Cheers for the link Mark.
Answer: A few years ago, there were reports of problems already, in areas like mortgage programs doing calculations on 30-year loans: 2008 + 30 = 2038.
Answer: This is my opinion, but this problem is due to a 32 bit counter problem, today most os are updated to handle time on 64 bit (at least on 64 bit computers), so I guess that all OS and software will be ready a long time before 2038, let's say 2020. So you might only have problems if in 2038 you will still be running software from 2020.
It likely not be a problem in almost all case. I hope.
Comment: This is a ridiculous assumption.  We still use 16(and even 8 bit) microprocessors in todays world, what is to say 32 bit microprocessors will magically disappear in the future?  It is fair to say this will not impact the average user, but in edge cases it could continue to be a problem.
Comment: I tried Ubuntu 32 bit version and it showed 2038 problems but running Ubuntu 64 bit version showed no sign of 2038 problem. I haven't tried any other Unixes.
Comment: Yes on most 32 bit version you will see the problem but not on 64 bit version. You can expect to have no longer any 32 bit OS in 2038.
Comment: Well - the 16-bit and 8-bit computers can 1. move date 0 (from 1970-01-01 to for example 2010-01-01) - however it would break certain API/ABI conventions 2. extend the timer field (which may in certain cases break 'only' ABI).
Answer: A 64 bit OS is ultimately irrelevant to the 2037 problem.  (CTIME runs out closer to 2037 than 2038).
The question is not the bit depth of the OS, rather how does the OS store time.  Or how does the database column choose to store time.  Or how does this directory services time syntax attribute store time at the back end.
This is a much bigger problem than people think, since it is so endemic and common to have used 32 bit time counters.
Each instance that stores time needs to be revisited, and all API's updated, and all tools that use it updated as well.
Abstraction layers that let you set time via a human readable time format, instead of the raw data written out make it easier, but that is only one case.
I suspect this is going to be a much bigger deal than most people think.
Comment: You're thinking of Apple HFS. FAT doesn't use `time_t` at all. It stores year, month and day as fields in one 16-bit value: 5 bits for day, 4 for month, leaving 7 for year. 2107 is 1980 (year zero in FAT land) + 2^7-1. For more fun, FAT stores time of day the same way in another 16-bit value, but if you do the math, you find that you need 17 bits to store time of day this way. FAT gets around this by dropping one bit of resolution for seconds; FAT can't distinguish changes less than 2 seconds apart. Ah, Microsoft, what a boring world this would be without your needless incompatibilities!
Comment: The biggest problem I see are file formats and filesystens, However date range for ext4 is 2514, vfat is 2107. Problem is with reiserfs (2038).
Comment: ReiserFS has other issues still as well.   I still think there are many more hidden places than people think of that store time in CTIME.  It is a darn easy and useful time format.  Of course, unsigned CTIME does not have the 2037 problem.  I think that is the 2107 timestamp case.
Answer: Not such a big deal.
During the first Y2K blitz, in which software and hardware vendors were required to certify their products as "Y2K compliant" in order to be sold (I remember network cables on PC Connection being certified Y2K compliant) a lot of companies did detailed audits of everything, by setting clocks in the future and testing.
At the time, since the cost of testing was so high, they almost always tested with several dates, such as 1/1/99 (some developers may have used 99 as a sentinal), 12/31/99, 1/1/00, the leapness of 2000, 1/19/38, and many others. See here for a tedious list.
Thus I believe that any important software that was around in 1999 will probably not have 2038 bugs, but new software written since then by ignorant programmers might. After the whole Y2K debacle programmers generally became much more aware of date encoding issues so it's unlikely to be as big an impact as Y2K was (which, in itself, was something of an anticlimax).
Comment: Except that this problem is caused by the UNIX time_t type being 32-bit.
Answer: 32 bit systems still running by then will be a problem.
Comment: Could you elaborate on that, to make it more clear **what** exactly becomes the problem, and how to react to that?
Comment: The issue is with the 32 bit integer that is used for calculating time. Time is measured in number of seconds elapsed since Jan 01 1970. For example after one day this counter will be at 86400. So in 2038 this value will overflow as it will hold a value that is greater than the number that can be held in an unsigned 32 bit integer. A 64 bit system using 64 bits for the timestamp will not have this issue as it will be able to work till 15:30:08 on Sunday, 4 December 292,277,026,596 (292 billion years)
Answer: #include <time.h>
#include <stdio.h>

int main() {
  time_t t = (time_t)(1L << (sizeof(time_t)*8 - 9));
  printf("%d\n", sizeof(time_t));
}

it should be 1 instead of 9 but ctime does not handle larger date:
8 - Sun Jun 13 07:26:08 1141709097

My system (64 bit of course) time can run even 1 million years more. The solution is to update the systems to 64 bits.
The catch is that the programs may not handle it. Especially old, propertary and not maintained. Devs are used to following facts:

int's are 32 bits (in fact they are preserved as 32 bits on 64-bit systems among others because it was assumed they are 32 bit always)
Most types (such as time_t) can safely be casted on int

In popular FLOSS software both things will probably not get through the 'many eyes' review. On less popular and propertary it will largly depend on author.
I guess on free *nix world the 2038 will get 'unnoticed' while I do expect problems on "propertary" platforms (i.e. those with large number of propertary software) - especially if some of the crutial part will not be maintained.
Comment: It is not the 'system' or 'OS'.  Most any previous 32 bit OS (heck even 16 bit OS's) could do 64 bit math.  The 64 bit depth at the OS level is basically a reference to memory model, not ability to do math.  And time is all about math.
Comment: Yes and no. It is true that 32 bit and 64 bit OS can perform 64 bit arithmetic (you can emulate any arithmetic). However `time_t` (or equivalent) on 32 bit OS happens to have 32 bits while `time_t`(or equivalent) on 64 bit OS happens to have 64 bits. I thought it was sufficiently clear even if with certain simplification.
Answer: If it's anything like Y2K, some people have already been affected and are changing software, but most developers will ignore it until sometime in the 2030s, probably 2035 or so, at which point there will be a lot of work done, and anybody old enough to know K&R C and not yet too senile will suddenly be able to contract out for a lot of money.  The actual transition will show a lot of things not yet done, probably none all that important.

Year 2038 problem


AHK ComObjCreate("Excel.Application") invalid class string

Question: I am trying to run Excel via AutoHotKey as every single tutorial suggests by using the COM object through this command ComObjCreate("Excel.Application"). However, it does not get past this command as it says "invalid class string".
This is on Win 10 with the Office 365 Excel on it.
Here is the screenshot of the issue:
Answer: try ComObjCreate("Excel.Application")

See Dealing with COM errors.
Probably you have to run the script as administrator
Comment: It still does the same ran as administrator.
Answer: Did you assign to a variable etc? Without more information, I can only say the following works on my system.
msexcel := ComObjCreate("Excel.Application")
wbk := msexcel.Workbooks.Add()
msexcel.Visible := true

>Exit code: 0    Time: 1.282

Note Excel may open minimized. You may need to look carefully to find the window.
It may be that Excel is not registered with com for some reason. Reinstalling may help.
Instead of reinstalling, another thing I have not had to do in years is to manually register an application.
Find the path to Excel. On my machine it is :
"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"
Open the run dialog box then issue the command:

"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" /regserver
Then try the above program again.

When I issued the command on my system Excel opened. Then I closed Excel.
Comment: Yes, the same exact code does not work for me for some reason, throws the "invalid class string". Very puzzling.
Comment: Updated answer to register Excel with com.


Make palindrome finder-builder function faster

Question: I built a small JavaScript function to see if a series of characters are a palindrome or not. The functions works well and does everything it has to do, but I'm wondering if something can be tweaked to make it faster.
This is the actual code:
var words = ['anita lava la tina',' a ', 'civvic', 'ddaa', 'aa', 'dca', '332', null,     'toyota','racecar'];
function getPalindrome(word){
    if(!word || (word = word.replace(/ /g,'')).length<2)
        return "-1";

    var charsCount = {};
    word = word.toLowerCase();
    var chars = word.split("");

    //ahorra un poco de tiempo cuando las palabras son grandes
    if(chars.reverse().join('')===word)
        return word;

    for(var i=0;i<chars.length;i++){
        if(charsCount[chars[i]])
            charsCount[chars[i]] += 1;
        else
            charsCount[chars[i]] = 1;
    }

    //si hay mas de un impar, ya no puede ser palindromo
    var oddCounter = 0;
    var palindromo = [];
    var oddChar = '';
    for(var letter in charsCount){
        if(charsCount[letter] % 2 !== 0)
            oddCounter++;

        if(oddCounter>1)
            return "-1";

        var times = charsCount[letter];
        if(times===1){
            oddChar = letter;
        }
        else{
            for(var i=0;i<times;i++){
                if(i%2==0)
                    palindromo.push(letter);
                else
                    palindromo.unshift(letter);
            }
        }
    }
    //agrego el impar a la mitad, si es que hay
    palindromo.splice(palindromo.length/2,0,oddChar);

    return palindromo.join('');
}

for(var i in words){
    console.log(words[i],":",getPalindrome(words[i]));
}

What I do here is this:

If word is null or the length of word after eliminating spaces is lower than 2, then it's not a palindrome, so return -1.
If the reverse of word equals word, then it is a palindrome, so return the word.
Make a map with all the chars, adding the occurrence of each char.
Loop the map of the chars: if the count of more than one char is an odd number, then it's not a palindrome, so return -1.
Simply put one char at the beginning of an array and one at the end and loop n times if the char was found.
Store the odd char in a variable for later use.
When loop (4) ends, insert the odd char in the middle of the array.
Return the built palindrome.

The function works, but how can I make it faster?
Comment: Surely the easiest way to check for a palindrome is to remove all spaces / punctuation and then check `word.split("").reverse().join("")===word` or am I missing something here.  Your other checks seem pointless?
Answer: Make a local instance of word and work with that variable through all your function code, every reference to word it's been fetched through the scope chain.
During code execution, identifiers such as variable and function names are resolved by searching the scope chain of the execution context. Identifier resolution begins at the front of the scope chain and proceeds toward the back. Consider the following code:
function add(num1, num2){
    return num1 + num2;
}

var result = add(5, 10);

When this code is executed, the add function has a [[Scope]] property that contains only the global variable object. As execution flows into the add function, a new execution context is created, and an activation object containing this, arguments, num1, and num2 is placed into the scope chain.

This resolution is performed by inspecting each object in the scope chain until the specific identifier is found. The search begins at the first object in the scope chain, which is the activation object containing the local variables for the function. If the identifier isn't found there, the next object in the scope chain is inspected for the identifier. When the identifier is found, the search stops. In the case of this example, the identifiers num1 and num2 exist in the local activation object and so the search never goes on to the global object.
Understanding scopes and scope chain management in JavaScript is important because identifier resolution performance is directly related to the number of objects to search in the scope chain. The farther up the scope chain an identifier exists, the longer the search goes on and the longer it takes to access that variable; if scopes aren't managed properly, they can negatively affect the execution time of your script.
Use Local Variables
Local variables are, by far, the fastest identifiers both to read from and write to in JavaScript. Because they exist in the activation object of the executing function, identifier resolution involves inspecting a single object in the scope chain. The amount of time necessary to read the value of a variable increases with each step along the scope chain, so the greater the identifier depth, the slower the access is going to be.
Answer: I might suggest doing as follows. Keep in mind that the Array.prototype.reverse() should be implemented by utilizing the Object.defineProperty() tool for the production code.

var isPalindrome = s => { var t = s.toLowerCase()
                                   .replace(/\s+/g,"");
                          return [].slice.call(t)
                                   .reverse()
                                   .map((c,i) => c === t[i])
                                   .every(b => b);
                        };
console.log(isPalindrome("Was it a car or a cat I saw"));
console.log(isPalindrome("This is not a palindrome"));


How does gravity slow light without an equal and opposite action?

Question: This is regarding the gravity well sort of explanation. People claim that gravity doesn't slow light by saying it curves the road by which it travels but if space is indeed without properties and empty, it can exert no force upon light therefore the light would travel unless interacted upon by a force, there exists pushes and pulls ( though the "pull" of gravity is more an influx therefore a push as well) regarding types of forces so it would seem reasonable to assume that gravity interacts with light(push or pull), though perhaps in a manner of conflicting forces resulting in the observed "curvature". Similar to throwing a ball at a clockwise tornado, it might enter straight from one side but the left spin coupled with the straight momentum from the throw would guide it around the center and as it traveled through. (Referring to light passing though the field) I would assume perhaps this might provide similar data as the other theory due to the path of light still being curved but I was curious as to 1. what problems could be found in this theory 2. Regarding a black hole, could a possible explanation be that the spin/influx of the field at event horizon becomes so great that it travels faster than light thereby inflicting a force upon light that is greater than the force responsible for facilitating the existence of light. Like swimming through a stream that gets faster as you go until it's force is greater than yours. (Stream:gravity as swimmer:light)
Comment: Hi sir simplicity, and welcome to Physics Stack Exchange! It's not really clear why you would ask this question. Where did you hear that gravity slows light? Could you edit the question to expand on this?
Comment: Gravity **does** slow light as measured by a **distant** observer (**local** observers measure no change). If the question is whether the distant observer measures an equal and opposite reaction on the gravitating body then it's an excellent question.
Comment: Gravity does not slow light. Newton's laws are not valid in general relativity/on a cosmological scale. What is it you are asking? Could you rephrase your question?
Answer: If you measure the speed of light using the Schwarzschild coordinates then you will calculate a speed that is less than $c$ when the light passes near a massive body. In this sense gravity does slow light. There are already several questions hereabouts that discuss this.
The issue tends to be a bit controversial because there are differing interpretations of what happens. An observer making a local measurement, that is measuring the speed of light at their location, will always measure the speed to be $c$. The distant observer gets a different value because the coordinate systems of the distant and local observer do not match.
Anyhow, the light does exert a force on the massive body. If you shine a laser close to the Sun, so it is deflected by gravitational lensing, then the momentum of the Sun changes by an equal and opposite amount to the momentum of the light beam. The change is far to small to be measurable, but it is there.
However things are a little more complicated than this. The laser beam does not exert a force on the Sun directly. The light is responding to the local curvature of spacetime. In doing so it changes that curvature very slightly, and that change propagates through spacetime to the Sun where it causes the Sun to accelerate. The mechanism is the same as a massive body being deflected by the Sun's gravitational field.
Comment: Fascinating, I didn't know that you can actually meaningfully (if controversially) talk about slowed light in empty space. Could you expand on how a *distant observer* can actually measure the speed of light far from him? I would naively think that this requires detecting the photon by some means, thus being *not* distant.
Answer: Gravity in General Relativity does not slow light down. What happens is, in the presence of a celestial body, spacetime curves around it. Light coming from behind the body will follow the curved path of spacetime as described here.
Answer: The speed of light in a vacuum never changes.  However, there are some effects of gravity that could make it seem like it is slowing down to an outside observer.
Gravity can bend light by essentially changing the shape of a straight line in space-time.  This could result in a slightly longer path than the light would have taken anyways, thereby "slowing" the light by increasing the total distance travelled.
Black holes seem like they slow light in that they have a point at which no light can escape their gravitational pull.  However this isn't done by slowing down the light, rather it's a side-effect of the fact that as you get closer to the black hole the escape velocity (the speed at which you need to go in order to escape the gravitational pull of the black hole) increases until at some point (called the event horizon) the escape velocity exceeds the speed of light, and even it can't escape.  But again, this doesn't slow down the light - all the light - even the light that can't escape from within the event horizon - will still be travelling at the speed of light (just think of it going around in circles if it's within the event horizon).
And that doesn't even take into account the time dilation at (and beyond) the event horizon.  But even then, no matter how the fabric of space-time gets manipulated, the light going through it (in a vacuum) never changes.
The only thing that does (kind-of) slow down the speed of light is when it goes through a medium such as water or glass.  The light still goes the speed of light, but it gets absorbed and then re-emitted a ton and (again, to an outside observer) looks like it slows down.
Comment: So... are you saying that light travels in a vacuum (emptiness) or that it travels in the medium you called spacetime. Because gravity as a force cannot exert a force upon nothing... Also, it is my understanding that a force must be applied for an effect to occur, so how can a black hole pull faster than light while not requiring light to slow. I could only fathom light being able to be trapped if it were traveling at the same speed and thereby negated.
Comment: Space-time isn't a medium, like glass or air.  It's not something that can be picked up, stored, or moved elsewhere. What you and I call *1 meter*, *1 second*, or *a straight line* (our concept of space and time) aren't absolute but can be different depending on where you are and what you are doing. Things with mass "bend" both time and space towards themselves, which adds a very small amount of acceleration towards other masses. This acceleration is gravity.  The black hole isn't pulling on the light so much as it's twisting up the road. That's why so many call it "the fabric" of space-time.
Comment: I hold that space cannot be curved, for the simple reason that it can have no properties. It might as well be said that God has properties. He has not, but only attributes and these are of our own making. Of properties we can only speak when dealing with matter filling the space. To say that in the presence of large bodies space becomes curved, is equivalent to stating that something can act upon nothing. I for one, refuse to subscribe to such a view. Nikola Tesla
Comment: Long ago [I] recognised that all perceptible matter comes from a primary substance, of a tenuity beyond conception and filling all space – the Akasa or luminiferous ether – which is acted upon by the life-giving Prana or creative force, calling into existence, in never ending cycles, all things and phenomena.

The primary substance, thrown into infinitesimal whirls of prodigious velocity, becomes gross matter; the force subsiding, the motion ceases and matter disappears, reverting to the primary substance.12
Comment: http://www.newdawnmagazine.com/articles/tesla-vs-einstein-the-ether-the-birth-of-the-new-physics
Answer: It doesn't slow light but it does bend it and I have a hypothesis that it does so because it's "faster" than light----sort of. Think of a black hole where light emitted from its center would b pulled back down into it.
If u tie two toy jets with the same mass together in zero gravity n they pull apart at the same speed they'd move nowhere. Now if jet A  travels just a meter/s faster jet b will begin to change its trajectory as it's now being pulled in the opposite direction.
Of course I could b wrong seeing as I know absolutely d*ck about physics but thinking about the laws of force here it seems gravity can reach speeds higher than c relative to its quantity.
This form can only be applied if u think of gravity as a wave like light. Now if u think of it as a force (which seems a lil more common sense[ish]) then gravity isn't faster than light but a force strong enough to disrupt an object with such a speed. But again, as force is directly relatable to speed one can argue the force behind gravity can pull faster than the speed of light given a big enough quantity of gravity (of course in this case mass and other variables must be factored in).
Again I kno d!ck about physics so this is purely abstract thought but u gotta admit it makes (common) sense as an abstract thought, no?
-my edit-
Lol I said it was jus an abstract thgt I'm just getting to learn physics ease up on me fellas u all had to learn at the beginning too. Yes @Kyle thanks for the correction "directly related to acceleration" and also as u said it moves at the speed of light and I read this a few days back
http://www.csa.com/discoveryguides/gravity/overview.php
BUT! I'm still curious if the quantity (by quantity I mean the strength of gravity, I just like quantity better it starts w/ a Q) is relevant because velocity required to escape gets lower the farther u get from the center of anything because gravity's pull is weaker right? Well could it be the event horizon is where there's just enough gravity to reach just over the speed of light I mean c<√(2GM/R) can be true so y couldn't gravity be traveling faster than the light? Just what I c in the equations if I'm wrong it's cool I'm open to learn.
And yes light travels through the vacuum of space which is the space time medium from my understanding. Also I'm there w/ u I can't fathom light being trapped unless it's speed was matched or beaten as in the example of jets A and B. If at the same speed they're "trapped" and won't move and if A speeds exceeded B's  then B gets pulled. Seems like some kind of BASIC physics but honestly idk any equations that will prove so for Anna's sake I'll stop it there lol.
Comment: Gravity also moves at light speed. And force isn't (generally) directly relatable to speed (only in particular cases like drag), it is directly related to acceleration.
Comment: Today's scientists have substituted mathematics for experiments, and they wander off through equation after equation, and eventually build a structure which has no relation to reality.

Nikola Tesla
Comment: After the time of Newton abstract thought has small probability to  describe the physical world. The language of physics is mathematics. If an abstract thought is not in the language of mathematics it cannot be discussed as a physics hypothesis.


Is it a bad thing if there's no character development whatsoever within the first half of a novel?

Question: Is it a bad thing if there's no character development whatsoever within the first half of a novel? In my novel, there's this character who's just living alone and doesn't really interact with anyone or any animal whatsoever, and then later after the first half there's some character development as he finally interacts meaningfully (dialogues) with other characters, is that ok, and can we make it work, or is this a terrible idea and why?
Answer: It is generally considered important for a novel to have character development, as it helps to engage the reader and make the characters more relatable and believable. However, it is also possible to have a well-written novel without significant character development in the first half. It really depends on the specific goals and focus of the novel.
If the first half of the novel is primarily focused on setting the stage and establishing the plot, then it may be acceptable for there to be less character development at that point. However, if the novel is primarily character-driven, then it may be more important for the characters to be developed and for the reader to get to know them early on.
Ultimately, whether or not the lack of character development in the first half of a novel is a problem will depend on the overall structure and goals of the story. It's important to consider how the lack of character development may affect the reader's engagement with the story and their ability to connect with the characters.
Comment: Hello, welcome here. I like your answer, but found its formatting very hard to read. It would be best if you wrote your answers in regular font and only used bold for emphasis of short parts. Also, please note that to make a paragraph break, you need to press Enter twice, not once, or else the paragraphs melt together. The site shows a preview of your answer under the input field.
Answer: What does happen in the first half of the novel?
How your character reacts to that will, in fact, develop his character.  If he evades people, if he plans his day to avoid where people, if he simply ignores them until they stop pestering him, all of these develop his character.  If something breaks, does he fix it, work out how to get along without it, go into town and steal or buy a replacement, leave a note on a bulletin board that he will pay three baskets of berries for a replacement?
Your question, as posed, seem to be based on the assumption that only interpersonal relations develop character.  Anything that shows what sort of person your character is is character development.
If there is nothing like this, what does happen in the opening chapters to get the story rolling and keep the readers reading?
Answer: Character development is a bit of an on/off switch, either you have it and then it permeates the novel from the first scene the character appears to the last, or you don't have it and then you use other means to make the character interesting.
Stories can be described as two parallel conflicts, one external (the outer story and plot) and one internal (character development). In the best of stories, the external and internal should be so intimately connected that they should feel like two sides of the same coin.
Having character development, at least of the main character, in only half the story risks making it lopsided.
If you "kind of" have character development, the risk is the readers will expect development and get disappointed.
If, for instance, you introduce your character with a problem and a fatal flaw that makes them feel in need of change but then you don't give them any more development, that will likely upset the reader's sense of story. The same will probably be true if they come across character development in the later half of the story without any setup in the beginning. It risks feeling like "half a bridge" going into nowhere suddenly appearing above their heads.
I'd suggest one of two things: Either remove the development in the latter half of the novel and write a non-arching character (see McCollum) or give them a full arc by going back and editing the first half.
Since your character suddenly started developing, I'd say your novel and character seem to suggest they should develop and that you've just now come to realize who this character really is, so I'd recommend the latter. Go back (now, or when you've finished the first draft) and see if you can edit in a full change arc for the character.
Recommended reading:

How to Write Character Arcs (Also available as a book.)
"Character Arcs: Founding, forming and finishing your character's internal journey", Jordan McCollum


PTIJ: is the Force Avodah Zarah?

Question: Inspired by Boba Fett, is the Jedi religion in star wars, the force, avodah zarah (idolatry)? According to a Wikipedia article, the Force is a metaphysical power. Like the Shekhinah (which means dwelling or presence of G-d) My question is, are Jews allowed to manipulate the world around them and use the Force? Is it kosher to say "may the Force be with you?"

This question is Purim Torah and is not intended to be taken completely seriously. See the Purim Torah policy.
Comment: *Lichorah* the question is backwards, i.e. if the force is *not* with you, does that mean you have made yourself into an *avodah zarah*?
Comment: Likely shittuf.
Comment: previous questions about the Force https://judaism.stackexchange.com/q/80745/759 https://judaism.stackexchange.com/q/69219/759
Answer: Correct. Although it is not avoda zara in unto itself, rather the power leads a person to engage in idol worship.
It is definitely something that we frown upon. As it says in Pirkei Avos 1:3

אַל תִּהְיוּ כַעֲבָדִים הַמְשַׁמְּשִׁין אֶת הָרַב עַל מְנָת לְקַבֵּל פרס, אֶלָּא הֱווּ כַעֲבָדִים הַמְשַׁמְּשִׁין אֶת הָרַב שֶׁלֹּא עַל מְנָת לְקַבֵּל פרס
Don't be like servants who serve their master so that they can receive/activate the force, rather serve their master without the expectation of receiving the force.

The reason is because it ultimately leads to avoda zara. Famously the Gemara in Sanhedrin 74b has a whole sugya on personal pleasure (הנאת עצמן). The Gemara there talks about the Jedi priests who would take coal shovels to move coal with which they would heat their temples with. Rav Steinsaltz helps explain it more clearly:

שהיו הכמרים הפרסים נוטלים מכל בית כלים ושמים בהם גחלי ־אש ומביאים לבית עבודה זרה שלהם בימים מסויימים
The Priests of the Force (aka the Jedi Knights) would take (the shovels) from the tool house and place in them coals of fire and would bring them to their Temples on certain days.

So we see the force indeed led to them becoming active idol worshippers.
Comment: Thanks, great answer!

PTIJ: is the Force Avodah Zarah?


Who/What is "The New Colossus" in Wolfenstein 2 the New Colossus?

Question: I probably missed some part of the story, but who is the "new colossus" in Wolfenstein 2 the New colossus?
Answer: There is no official explanation from the developers, but there are strong indications that this refers to the Poem of the same name by Emma Lazarus from 1883. This poem was written to raise money for the construction of the pedestal the Statue of Liberty is perched on. BJ Blazkowicz also quotes this poem at the end of the first game:

In this context, "The New Colossus" most likely refers to the United States of America, and the rebirth of this "colossus" of old after being conquered and broken by the Third Reich.
Answer: Technically, the New Colossus refers to Lady Liberty herself, comparing her to the old Colossus.  She's of roughly equitable height.
In game, she could be taken to represent America itself.


Are there an equal number of positive and negative numbers?

Question: For every positive number there exists a corresponding negative number. Would that imply that the number of positive numbers is "equal" to the number of negative numbers? (Are they incomparable because they both approach infinity?)
Comment: See [Cardinality](https://en.wikipedia.org/wiki/Cardinality#Comparing_sets) and [Equinumerosity](https://en.wikipedia.org/wiki/Equinumerosity).
Comment: 'Equal number' when you talk about infinite sets means you can map one to one both ways, so yes there are an equal number of positive and negative 'numbers.'
Comment: Look up "Hilbert's hotel" to see an example how we compare infinite sizes, and the counterintuitive consequences that might have.
Comment: The two sets $\text{Pos}$ and $\text{Neg}$ are *equinumerous* because there exists a one-to-one correspondence (a bijection) between them. In this sense they are *comparable* also if both are *infinite* sets.
Comment: Define "*equal*". In the sense of cardinality, yes, there are "*as many*" positive numbers as negative, but then also *as many* positive integers as *both* positive and negative integers together, or *as many* positive integers as positive *even* integers.
Comment: Key words: Set Theory, Cardinal Number, Cardinal, Georg Cantor, Cantor-Schroeder-Bernstein Theorem, Power Set,  Countable Set, Uncountable Set, Continuum Hypothesis... I rcommend Stories About Sets by Vilenkin, before taking on a serious textbook on Set Theory
Comment: @celtschk What if it's a really big zero?! JK, brainfart removed.
Comment: It might be worthwhile to note that there are other ways of talking about sizes of sets. For subsets of the integers, one can define the very logical notion of Banach density. Szemerédi's theorem says a surprising fact about sets of non-zero Banach density. Anyways, cardinality is not the only way of talking about sizes of certain sets and sometimes these other methods are overlooked.
Comment: Note that there is no 'number of positive (or negative) numbers'. Infinity is not a number.
Answer: If there is SOME function that gives a bijection between two sets, then these two sets are considered equally big. (Even if there is some other function between those two sets that is not onto/not 1-1). For example the set of multiples of 10 among positive integers being a proper subset of all positive integers seems to be "smaller". But we have a function $f(x)=10x$ providing bijection, and so they are considered to be of the same size (cardinality).
In your case $g(x)=-x$ provides the bijection.
Answer: Yes, the existence of a one-to-one and onto mapping is exactly how equality of the size of sets (the technical term is "cardinality" is defined. The (cardinal) number of negative integers is the same as the cardinal number of positive integers, and the cardinal number of negative real numbers is the same as the cardinal number of positive real numbers.
Note however that there are more positive real numbers than positive integers, so not all infinite cardinalities are equal. The proof of that fact is done by Cantor's famous diagonal proof.
Answer: The word "infinity" is used in many places in maths and the definitions are not necessarily the same.  Different symbols are used but there are still more definitions than symbols.
The most familiar symbol for infinity, $\infty$, is commonly used in calculus but it is more of a suggestive shorthand than an actual infinity.  It is not normally used when discussing sizes of sets.
When discussing the size of sets, the term cardinality is usual.  Clearly, normal counting won't work for infinite sets.  However, as others have said, it is possible to say whether or not two sets have the same cardinality / are the same size.  If a bijection (one to one and onto map) between them exists then they have the same cardinality.  One counter-intuitive property of infinite sets is that it is possible that a map which is one to one and not onto exists as well one that is one to one and onto.  So, the existence of a map that is one to one but not onto does not prove that one set is smaller.  For that, you would also need to prove that no other map that is one to one and onto exists.  The simplest example of this is the set of all natural numbers and just the even ones.  Intuitively, the set of even numbers is smaller and there is an obvious map from the even natural numbers to a subset of the natural numbers.  However, there is also a map between them which is one to one and onto hence they actually have the same cardinality.
By definition, a set which has a one to one and onto map to the natural numbers is called "countable".  This is not countable in the day to day sense but it does mean that you could name one per second and (*), although you would not ever finish, you would name any particular one in a finite time.
(*) Assuming that you and the universe were immortal.
Many sets of intuitively different sizes are countable, for example the integers $\Bbb{Z}$, the rational numbers $\Bbb{Q}$ and the algebraic numbers $\Bbb{A}$.  This cardinality / size is named countable and the symbol $\aleph_0$ is used.
 This is called "aleph null", "aleph naught", or "aleph zero".  Aleph is the first letter of the Hebrew alphabet.
However, even though many sets which are intuitively bigger turn out to be the same size, bigger sets exist.  It can be proved that there is no one to one and onto map from the natural numbers to the set of real numbers $\Bbb{R}$ so that it is bigger.  Again, some apparently bigger sets are not actually bigger.  For example $\Bbb{C}$, $\Bbb{R^2}$, and $\Bbb{R^3}$ are the same cardinality as $\Bbb{R}$.
Even bigger sets exist, the set of all subsets of $\Bbb{R}$ is bigger than $\Bbb{R}$.  There is no biggest set.
A particularly interesting question is whether $\Bbb{R}$ is the next biggest cardinality after the countable infinity of $\Bbb{N}$.  This is called the "Continuum Hypothesis".  My answer is already long enough so I won't talk about that but if you are interested in this subject then you should look it up.
Finally, there is yet another type of infinity called "ordinal numbers".  In this sense, the first infinity is usually written as $\omega$ and, unlike the cardinal infinities, $\omega + 1$ is different.
Answer: The notion of "counting" is made precise in mathematics by using functions. These functions are bijections. To "count" the elements in a set $X$, you establish a bijection from $X$ to a subset of the natural numbers $\mathbb{N}$.
Example. How many elements does the set $\{a, b, c\}$ have? The answer is 3, because there exists a bijection from $\{a, b, c\}$ to $\{0, 1, 2\}$. (Actually, there exist $3!$ bijections.)
So, certain subsets of $\mathbb{N}$ are, somehow, "measuring sticks", which you can use the gauge the size of other sets.
Using sets and functions allows one to generalize the idea of "counting" to infinite sets. The "measuring sticks" then become transfinite numbers (more precisely, cardinal numbers).
To answer your question, there is an equal number of positive and negative numbers, because there exists a bijection between these two sets. If by "number" you mean "integer", then this number is called aleph null. It's the smallest infinite cardinal.
Bonus: Using these ideas, you can show that the "amount" of (say) positive integers and the "amount" of integers is the same, or that the "amount" of even integers and the "amount" of prime numbers is the same.
Answer: There are exactly the same ones.
For each positive number there is one and only one negative,
And for each negative number there is one and only one positive,
So that both sets have the same cardinal.
There is a bijective function of the set of positive numbers to the set of negative numbers.


How do I wire my new dryer cord?

Question: I have recently moved into a new home and discovered that my dryer plug does not fit into the outlet. I have a three pronged plug and need a four prong plug. how do i wire the new cord into my dryer?
Comment: Check the manufacturer's documentation, it will tell you how to wire your specific dryer. [This answer](http://diy.stackexchange.com/a/30517/33) might be helpful.
Comment: A quick "search Q & A" of "dryer cord" will yield the answer you are looking for.
Comment: What country are you located in, and what's the Voltage&Amperage requirement for your dryer?
Comment: @CarlWitthoft That's a fair question. I'd say it's a pretty safe bet that wherever the OP is, whether on 50Hz or 60Hz power, whether 220V or 230V, they're using split-phase power with a neutral, two hots and (hopefully) a grounding wire. EXCEPT that there certainly ARE 120V dryers on the U.S. market (for example).
Comment: Which is another reason why it's a pretty good idea to find the owner's manual and see what it says about your particular dryer.
Answer: Try to find the owner's manual for your dryer and follow the instructions in the manual.
The terminal block on the back of your dryer should have connections for the neutral and both hot conductors from the dryer cord, plus a separate grounding lug for the grounding wire. The grounding lug is bonding the metal housing of your dryer to the ground. Make sure you leave any green grounding wires on the dryer itself connected, as well.
What you do NOT want to do is connect the ground wire to the neutral lug on the terminal block if there is a separate grounding lug.
Although; depending on your dryer (or if you have an older dryer), there may be a grounding strap connecting the neutral lug to the metal housing of the dryer. If this is the case, you can presume that the dryer was designed to use the neutral as a ground path and connect both the neutral and grounding wires to the neutral/grounding lug. But you still might want to call an electrician and get some local professional advice or have them do the work, especially if it's an old dryer.
The neutral (grounded) and grounding conductors are bonded electrically at the main service panel, but pains are typically taken to keep them separate everywhere downstream from the main panel in order to avoid energizing things you don't want to get shocked by, like the housings of appliances, water pipes and so on.
Make your connections tight. Loose connections get hot and start fires.

How do I wire my new dryer cord?


IPTables forward to dynamic IP

Question: I have a server running on e.g. servera.example.com and one on serverb.example.com.  I want to redirect all port 80 traffic to servera.example.com to serverb.example.com, and leave all other ports as-is.  The difficulty is that serverb.example.com has a dynamic IP, so the IP cannot be put directly into the iptables rule.  Is there any way to do this?
Answer: You can't do this with iptables/netfilter directly as the DNS is only consulted when the rules are loaded. If serverb.example.com points to 192.0.2.1 when the rules are loaded and it changes to 192.0.2.2 then netfilter won't know and packets will be sent to he wrong address.
Perhaps a reverse proxy will help you.
Answer: You can use a simple script to find out the current IP of serverb.example.com
Simply run:
<code>[root@user ~]# dig +short serverb.example.com | sed -e '1d'
</code>
Which will return the current IP address of server b. But note, this will only work if DNS records is updated with the new IP.
How to use this script is up to you, as an example:
<code>#!/bin/bash
SERVB=`dig +short serverb.example.com | sed -e '1d'`
iptables (your rule goes here) -d $SERVB
</code>
Answer: First ensure that the DNS record will auto update for server.example.com.
Second - If server autoupdates his DNS record use the script from @fallen but insert a command for refreshing the iptables tables.
Third - setting up a Cron job or systems unit for executing the script periodically.

IPTables forward to dynamic IP


a question about the character table of dihedral group

Question: As we know, quaternion group $Q_8$ and dihedral group $D_8$ have the same character table, but they are not isomorphic.I have proven that if the order of a group $G$ is not divided by $8$,and $G$ has the same character table as $D_{2n}$,then $G$ is isomorphic to $D_{2n}$. My question is what groups have the same character table with $D_{2n}$. I want to know all of them.
Answer: The only ways you can express a real number as the sum of two roots of unity are as $w+w^{-1}$ or as $w+(-w) = 0$. We have the equality $w+w^{-1}=1+(-1)$ when $w$ is a primitive $4$th root of $1$, which is why we cannot always distinguish between elements of orders $2$ and $4$ from their characters in $2$-dimensional representations.
But for $n \ge 3$ and $n \ne 4$, if you choose a faithful character $\chi$ of $D_{2n}$, then there will be an element $g$ with $\chi(g) = w+w^{-1}$ with $w$ a primitive $n$-th root of $1$, so $g$ must have order $n$. It has two conjugates, so the other one must be $g^{-1}$ and hence there exists $h \in G$ with $h^{-1}gh=g^{-1}$. Since $h^2 \in \langle g \rangle$, $h^2=1$ or (when $n$ is even) $h^2=g^{n/2}$. So the group is either $D_{2n}$ or (when $n$ is even) the generalized quaternion group $Q_{2n}$, and these do indeed have the same character table.
This argument does not work for $n=4$, but you can do that case separately.
Comment: @user94782: There are three groups of order 16 with 7 conjugacy classes: D16, Q16, and QD16. The character tables (without power maps) are isomorphic for D16 and Q16, but not with QD16 since QD16 has non-real character values. This is also what page 304 of James–Liebeck says.
Comment: Thank you for your answer.Your corollary is that if the order of a group G is divided by 8,and G has the same character table with D2n,then G is iomorphic to the generalized quaternion group Q2n or D2n.But actually there are two groups of order 16 have the same character table with D16,but they are not iomorphic to D2n by the book "representations and characters of groups"(Gorden James.Martin Liebeck) in page 304.


Joda-Time: DateTime, DateMidnight and LocalDate usage

Question: Joda-Time library includes different datetime classes

DateTime - Immutable replacement
  for JDK Calendar DateMidnight
  - Immutable class representing a date where the time is forced to
  midnight LocalDateTime -
  Immutable class representing a local
  date and time (no time zone)

I'm wondering how are you using these classes in your Layered Applications.
I see advantages in having almost all the Interfaces using LocalDateTime (at the Service Layer at least) so that my Application doesn't have to manage Timezones and can safely assume Times always in UTC. My app could then use DateTime to manage Timezones at the very beginning of the Execution's Flow.
I'm also wondering in which scenario can DateMidnight be useful.
Answer:
I see advantages in having almost all
the Interfaces using LocalDateTime (at
the Service Layer at least) so that my
Application doesn't have to manage
Timezones and can safely assume Times always in UTC.

I'm not sure I understand your line of thinking here. LocalDateTime and DateTime represent two quite different concepts. It's not the case that a LocalDateTime has some implicit UTC timezone: it actually has no timezone (internally it may be represented as a DateTime with UTC timezone, but it's just an implementation detail, it does not matter to the programmer who uses it).
You can see in the API docs that, while a DateTime is an "Instant" (a point in the world time line, a physical concept), a LocalDateTime is NOT such a thing. The LocalDateTime is actually a Partial, (a "civil" concept), in a different class hierarchy. The class names might -unfortunately- make you think that LocalDateTime is some specialization of DateTime: well, it isn't.
A LocalDateTime should be regarded as a pair {Date (Y/M/D) ; Time (hh:mm:ss.msec)}, a bunch of numbers which corresponds to the "civil" standard representation of time-related data. If we are given a LocalDateTime, we cannot convert it directly to a DateTime, we need to specify a timezone; and that conversion takes us to another kind of entity. (An analogy: Strings and byte streams in Java: to convert between them, you must specify a charset encoding, because they are conceptually different things)
When to use one or the other in the application... it's sometimes arguable, but frequently it's clear enough once the Jodatime concepts are understood. And IMO is not much related to "layers", perhaps more to use cases or scenarios.
A non-trivial -borderline- example: You work at Google, programming the Calendar. You must let the user manage (add, see, modify) an event which includes a date-time (lets ignore recurrent events), say "I have an appointment with my doctor on 2019-July-3 at 10:00 am". What is the time-date entity to use in the software layer (for this usecase)? I'd say: a LocalDateTime. Because the user is not really dealing with a physical point in time, but with a civil time: the date and time that displays the clock in his wrist or in his home. He does not even think of timezones (lets ignore the special case of a user who is traveling around the world...) Then, in the business and presentation layer, a LocalDateTime seems the right entity.
But suppose that you must also code a different scenario: a reminder. When the Google internal scheduler detects that the event stored by the user is N minutes in the future from now, it must send him a reminder. Here, "N minutes from now" is a totally "physical" concept of time, so here the "business layer" would deal with a DateTime. There are several alternatives, for example: the event was stored in the DB as a LocalDateTime (ie. just time and date without timezone - one frequently uses a UTC timestamp to represent that, but this is an implementation detail). In this scenario (only in this), we must load it as a DateTime, we convert it using a Timezone, probably from the user's profile.
Comment: DateMidnight was a bad idea and is now deprecated
Comment: Instead of the `midnight`-related classes and methods (all deprecated), see the new method [`DateTime::withTimeAtStartOfDay`](http://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html#withTimeAtStartOfDay--).
Comment: @NickSiderakis That method [`DateTime::withTimeAtStartOfDay`](http://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html#withTimeAtStartOfDay--) usually means the time `00:00:00.000`. But not always because of Daylight Saving Time and possibly other anomalies.
Comment: I always found flight status illustrates use of both `LocalDateTime` and `DateTime` quite nicely. When you look for a flight on Google, say [BA005](https://www.google.de/search?q=BA005) (LHR-NRT), it will give you local times for departure and arrival: 13:50, and 10:35 the next day, respectively - but the flight doesn't take 20h45, because [10:35 Tokyo time in GMT](https://www.google.de/search?q=10%3A35+tokyo+time+in+gmt) is actually 01:35 GMT (the next day). The trip thus takes 11h45. Internally, the flight status might use `DateTime` (zoned), but it might only expose the `LocalDateTime`...
Answer: The Answer by leonbloy is correct and vitally important. I am merely translating to the java.time classes that replace the Joda-Time project.
java.time
Specific moment
For a specific moment on the timeline:

Always in UTC is represented by Instant.
Assigned an offset-from-UTC is represented by OffsetDateTime.
Assign a full time zone rather than mere offset is represented by ZonedDateTime.

These all replace the Instant & DateTime class in Joda-Time. These java.time classes all have a resolution of nanoseconds versus the milliseconds used by Joda-Time.
Midnight versus Start-of-day
For midnight, the Joda-Time project concluded "midnight" is a vague and unproductive concept. The midnight-related classes and midnights were all deprecated in later versions of Joda-Time, replaced with the practical concept of "first moment of the day".
The java.time classes took the same lesson, using a "first moment of the day" approach. Look for atStartOfDay methods on java.time classes such as LocalDate.
Never assume a day starts at 00:00. Anomalies such as Daylight Saving Time (DST) mean the day may start at other times such as 01:00.
ZonedDateTime zdt =
    LocalDate.of( 2017 , Month.MARCH , 12 )                    // Instantiate a date-only value without time zone.
             .atStartOfDay( ZoneId.of( "America/Havana" ) ) ;  // Cuba jumps from 00:00 to 01:00 on Spring DST cut-over.

For example, see how Cuba starts the day at 1 AM on their Spring DST cut-over.

zdt: 2017-03-12T01:00-04:00[America/Havana]

Unzoned
For representing the vague idea of possible moments over a range of about 26-27 hours but not an actual moment on the timeline, use LocalDateTime. This class purposely lacks any offset-from-UTC or time zone.
LocalDateTime ldt = LocalDateTime.of( 2017 , Month.JANUARY , 23 , 1 , 2 , 3 , 0 ) ;

If your business context implies a specific time zone, you can apply it to get a ZonedDateTime.
ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
ZonedDateTime zdt = ldt.atZone( z ) ;  // Determine a specific point on timeline by providing the context of a time zone.

About java.time
The java.time framework is built into Java 8 and later. These classes supplant the troublesome old legacy date-time classes such as java.util.Date, Calendar, & SimpleDateFormat.
The Joda-Time project, now in maintenance mode, advises migration to the java.time classes.
To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310.
Where to obtain the java.time classes?

Java SE 8, Java SE 9, and later

Built-in.
Part of the standard Java API with a bundled implementation.
Java 9 adds some minor features and fixes.

Java SE 6 and Java SE 7

Much of the java.time functionality is back-ported to Java 6 & 7 in ThreeTen-Backport.

Android

The ThreeTenABP project adapts ThreeTen-Backport (mentioned above) for Android specifically.
See How to use ThreeTenABP….

The ThreeTen-Extra project extends java.time with additional classes. This project is a proving ground for possible future additions to java.time. You may find some useful classes here such as Interval, YearWeek, YearQuarter, and more.


Azure AD sync users to on premise AD

Question: Is it possible to sync users from cloud Azure Active Directory to on premise AD? On premise is a bit wrong here because it is actually a virtual network in Azure with a Windows Server virtual machine AD. I started with Azure AD and therefore all users are there but I would like to sync them to this virtual machine AD in a virtual network in Azure. I tried Azure AD Connect but this works to sync form on premise to Azure AD. How can I do it the other way around?
Answer:
Is it possible to sync users from cloud Azure Active Directory to on
  premise AD?

For now, it is not possible.
Here the feedback about it, maybe you can vote up it, that feedback will be monitored and reviewed by the Microsoft engineering teams.
As a workaround, we can use powershell to export Azure AD users' information to local file, then use that file to create users in on premise AD.
Here a similar case about you, please refer to it.
Hope this helps.
Comment: Please let me know if you need more help:)
Answer: I have written a custom algorithm to do the process and it works for me so far so well.
I would state the approach that I have followed. This process will get executed after user logs in through Single Sign On.
Step-by-step process to be followed once the user is validated with AD.

Fetch User Manager Chain for the user with Indian Region Filter
through Graph API
https://graph.microsoft.com/v1.0/users/${usermail}?$expand=manager($levels=max;

Convert User Chain Nested Objects to Array of Users

Loop user array in reverse

For every traversal, check if the user present (match with Object ID)
If User Present in Database,
a. Compare user data with OIDC :id:

b. On Variance, call update() to keep data in sync with AD information

User not Present in DB,
a. Call insert() to insert the user data to the database

Note:
I am calling this process every time a user logs in and it is able to insert any new users or update the data in the database if it doesn't match with AAD. This would be an efficient approach if the management chain is around 10. I couldn't find a way to do this thing anywhere else so came up with this process.
Comment: This might not flex for everyones needs. But just thought of putting it here so it could help someone :)

Azure AD sync users to on premise AD


Is returning to country of origin from any schengen country possible?

Question: I have multiple entry schengen visa from French Embassy in Nigeria. I am presently in Spain; I came into Spain from France. Can I return to Nigeria (country of origin) from any schengen country, specifically from The Netherlands?
Answer: Yes. While you are meant to apply for a visa to your main, intended destination country, it doesn't really matter that much once you get your visa. There's nothing to stop you changing your mind about where you go when you get to Schengen. You can travel freely within the Schengen Area and leave from wherever you like. Once you leave Schengen (in your case from the Netherlands) before your allowed stay expires.


Migration from distribute to setuptools

Question: I'm trying to convert a project that I had installing fine with distribute over to a newer setuptools based installer. For some reason I can't get setuptools to run at all. When I run my setup.py I get errors from distutils about unsupported options which are all the extension options provided by setuptools. I can't figure out why setuptools isn't taking care of these correctly. This is on a Debian Wheezy system running Python 2.7.
I created a simple test case to demonstrate the problem. It is a standalone script that I want installed as a utility with an executable wrapper script:
foo.py

#!/usr/bin/python
def main():
  print 'Foo main() ran'

if __name__ == '__main__':
  main()

setup.py

from setuptools import setup

setup(name='foo',
    version='1.0',
    py_modules = ['foo'],
    entry_points = {
        'console_scripts': ['foo = foo:main'] # setuptools extension
    },
    include_package_data = True # another setuptools extension
)

The version of setuptools in the Debian package archive is 0.6.24 which predates the merger with distribute and I would prefer to use something that retains some of the distribute heritage. I've been installing various versions of setuptools with pip. The latest 4.0.1 won't install properly but most anything from 1.4 to 3.8 works:

$ sudo pip install setuptools==3.8
...
$ python
Python 2.7.3 (default, Mar 13 2014, 11:03:55)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from setuptools import version
>>> version.__version__
'3.8'

The setuptools package/egg is placed in /usr/local/lib/python2.7/dist-packages which is normal on a Debian system when using pip.
When I try to install with my setup.py I get the following errors:

$ sudo python setup.py install
/usr/lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option: 'entry_points'
  warnings.warn(msg)
/usr/lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option: 'include_package_data'
  warnings.warn(msg)
running install
running build
running build_py
running install_lib
running install_egg_info
Removing /usr/local/lib/python2.7/dist-packages/foo-1.0.egg-info
Writing /usr/local/lib/python2.7/dist-packages/foo-1.0.egg-info

Distutils installs foo.py to /usr/local/lib/python2.7/dist-packages/ but obviously the setuptools generated wrapper script is absent. I would have expected setuptools to do its subclassing/monkeypatching thing to take care of anything not supported by distutils.
I remember setuptools being cranky years ago which is why I settled on using distribute. It's disappointing that it still doesn't "just work". Is there anything obvious that I'm missing? I have a suspicion that this has something to do with Debian's use of the dist-packages directory in place of site-packages but that was never an issue with distribute.
Answer: Well it looks like the problem is that setuptools doesn't like being installed into /usr/local/lib/....
I forced pip to put it into /usr/lib/... with:

sudo pip install --install-option="--prefix=/usr/lib/python2.7/dist-packages" \
  setuptools==3.8

setup.py installs cleanly after that.

Migration from distribute to setuptools


the different between "使命" and " 任務"

Question: the different between "使命" and " 任務" .i looked up dictionary and they are the same meaning "mission"
Answer: Both "使命 and "任務" mean an mission. The difference between them is the degree of difference.
"使命" is the mission nobody else but one can do, and one should become aware of its importance. On the other hand, "任務" is indeed not "task" but "mission". However, the importance of "任務" is less than that of "使命". Here are example sentences:
私の使命はこのチームを優勝に導くことだ。/ My mission is leading this team to victory.
私は上司が出した任務を終えた。/ I have accomplished the mission my boss ordered.
Comment: "*The difference between them is the degree of difference.*" — that's a profound statement!
Comment: Did you mean to write "the degree of importance"?
Comment: Exactly. The importance or scale of mission is different.
Answer: 任務 refers to a relatively short-lived, concrete mission or order, like "protect the fortress" or "assassin someone". There is always a boss who gave it, and you typically need a few days or months to accomplish it.
使命 usually refers to a long-lived (or lifelong), general mission or vision of a person/organization. There doesn't have to be a boss, and it may be something given from God ("calling"). For example, "contribute to the human society using artificial intelligence", "propagate a religion alone in a distant country". So basically 使命 is a bigger word than 任務; a 使命 gives a meaning to your life.

the different between "使命" and " 任務"


How Secure Rooted or Jailbroken Devices are?

Question: I am just wondering, but how can I harden the security of jailbroken or rooted devices? I understand that SD Card can be still accessible, but how could potential adversaries compromise for example the password lock? Any other precautions I should take or disable some services such as the notorious USB Debigging (adb)? How does iOS and Android platforms compare in terms of what can they expose, should the development/debugging profiles have been enabled?
Answer: Superuser access is not a security vulerability per se, nor does it weaken the security of the device. On the contrary, a good implementation of the superuser prompt allows applications to bypass OS security measures and perform more actions.
There are two factors to consider:

First, is that security is relative. An application faking GPS position may be a privacy enhancement to the owner of the device, but can be a security violation to the owners of Pokemon Go (Niantic corp) or any other game relying on player's physical location
Except for trusted and audited open source application, you can't know what a superuser application is really doing. While you run a device's overclock, the app can silently install a kernel module to proxy TLS traffic and sniff your bank account PIN

According to your question:

how could potential adversaries compromise for example the password lock?

An adversary can turn you into running a superuser app and grant it superuser privileges. Once granted, and they are likely granted forever, it can listen on a GCM (Google Cloud Messaging) notification for the app owner to remotely unlock the device.
Answer: The problem raises that when an attacker is able to establish a shell or run code on your phone, he has access to all internals. From here he could just unlock the device by overriding commands in the screen lock application or even more easy would be to just start extracting data through the shell.
A problem specifically with jailbroken devices is that you abuse a security weakness to get it jailbroken. The problem is that as long as you don't update your phone, because you want to keep your phone jailbroken, the security vulnerability remains in your device and could potentially be abused by attackers to gain access to your phone.
With android a rooted device is actually a feature, but depending on how you root the phone you need to take care of a few things. Some android rooting programs automatically enable a telnet host without authentication on it. Others automatically enable adb.
The biggest issue is that the sandbox in which your apps run when you have a rooted device becomes obsolete. The App will run as root and will be able to access data stored within other apps. Because of this you become a lot more exposed should you, by accident, install a malicious app.


Identification of plants

Question: Found these growing in our vegetable patch. Green leaves with red stems and central veins. We are in mid Michigan. Thank you
Answer: I see a few smaller seedlings that are definitely cucurbits (squash/pumpkin/gourd/cucumber), but the large ones look different. The large plants  are taller and more vigorous than the cucurbits, so it's best to remove them. Otherwise they will out-compete the cucurbits for water and sunlight.
My default assumption is that any plant that "volunteers" in your garden that you don't recognize is a weed. If it was the seedling of something you had planted before and let go to seed, you would probably recognize it. But if you're curious, you could carefully dig them out and give them their own pot. Once they get a bit bigger it will be easier to figure out what they are. At this stage all the plants in this pot have fairly small root systems, so it should be possible to save most of the root system of the volunteer plants without hurting the roots of the cucurbits. Of course fill the holes back in with soil.
Answer: Looks like squash / pumpkin / gourds. They are going to get way too big for that pot. Mabey  grow one in the pot .

Identification of plants


Git - how to completely overwrite the remote content with my local content?

Question: I installed the same Git repository on my local computer and I would like to add my changes to the remote repository.
My local repository is the newest repository and I would like to overwrite all content that is remote, as if I would just copy my files into a folder.
I have taken the files with a USB stick to my local computer and everything on my local computer is right.
I get the following error message.
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'email@example.com:happymen.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

What can I do to submit my files to this repository? I want to OVERWRITE all content that is there! And submit everything as one folder with content.
Can someone please help explain the steps?
Comment: Did you read the error message?
Answer: You can force push
git push -f

Note that this is dangerous.  The message
the tip of your current branch is behind its remote counterpart

means that there are commit(s) on the remote that you don't have.  If you force push you could literally wipe out those changes.  If you are aware of this and it is ok then fair enough.
Normally this message means you need to do a
git pull

then resolve any merge conflicts and add and commit those changes
You can also just do a git fetch to see the changes come in from the remote to your local remote copy, e.g. origin (not your local files) and then you can do a git merge or git pull and then resolve and push.
then you push (not force) to the remote.
See also https://stackoverflow.com/a/14464190/631619
Answer: One simple step is to delete the current master branch and recreate it with your latest code . You can also take a backup of your current master in case you would like to have it for reference .
git push origin --delete master
Then create a master branch and push your new code .


Is the Bengali translation of Padma Purana available online

Question: I am searching for authentic Bengali translation of Padma Purana with Sanskrit sources, specifically the portion of Uttar Khand containing Glorification of Srimadvagabad Gita (Chapter 175-192, Part.VIII & IX of N.A.Deshpande's English translation). I have uploaded the relevant portion (English) here. If Bengali translation is unavailable online then can any linguistic scholar help me by translating it.
Comment: The zip file contains Padma Purana in 6 parts with Sanskrit slokas printed in Bengali script only. No translation. I will now try to get a copy of the physical book.
Comment: Oh ok, I didn't realize that.
Comment: Does this question qualify for meta site or hinduism SE?
Comment: @Keshav I am waiting for the physical copy, compare the translation there w.r.t. english version, then decide about acceptance of answer. Be patient please.
Comment: The physical book published by Bhaktivedanta Book Trust contains four Gitamahatmyas translated in Bengali - 1)by Sri Shankaracharya, 2)from Skanda Purana, Avanti Khanda, 3)from Vaishnabiya-tantra-sara and 4)from Padma Purana, Uttar Khanda. Fourth one is a semantic translation without sanskrit verses. So my question is partially answered.
Comment: @Debanjan Good, I'm glad to hear it.  What do you mean by a semantic translation?  Do you mean a prose translation as opposed to a verse-by-verse translation?
Comment: @KeshavSrinivasan Both paraphrasing & literal translation has been done to convey the meaning.
Answer: Atlast I got a physical copy of authentic book of Padmapurana with both Sanskrit verses and corresponding Bengali translations. It matches with the English version I uploaded earlier. I have scanned & uploaded the relevant portion here as I reasonably feel the copyright has expired. Gradually I have uploaded the contents in Unicode Bengali in my Hindu religious blog. So my main question is now fully answered. Thank you Keshav'ji for helping me get the answer. The complete reference is:-
"Padmapuran, Uttarkhanda (Bengali)" by Veda Vyas, translated by Sri Tarakanta Debasharrma, Krishnadas Shastri and Sriramdas Shastri, edited by Pandit Panchanan Tarkaratna. Bangabasi-Electro-machine edition, 1915. Published & printed by Sri Natabar Chakraborty for Bangabasi Karyalay, 38/2 Bhabanicaran Datta Street, Kolkata. First Nababharat Edition, 2013 (with identical page layout). Nababharat Publishers, 72 D, Mahatma Gandhi Road, Kolkata-700009. 1062p.
Answer: Apparently this ZIP file contains a Bengali translation of the Padma Purana in PDF format; I can't tell, because I can't read either Bengali or Devanagari script.  Also, the Bhagavad Gita Mahatmya of the Padma Purana is available in Bengali as a physical book here.


How can I find the quadratic formula using calculus?

Question: Context: A few years ago, when I was in senior year, I participated in the Student for a Day at my local CEGEP (in Quebec, there are just 5 years of middle and high school.A CEGEP is a school you go to to learn pre-university stuff such as calculus and biology. It's the equivalent of 12th grade in the US). Anyways, I attended a calculus lecture (I had no knowledge of calculus at that time) and I remember the prof proved the quadratic formula using calculus. Today, I'm a second-year math major with more calculus knowledge than the average CEGEP student. I tried re-finding the formula using calculus and did not manage to do it. I also checked online and the only thing I found that was not done by completing the square is a Khan Academy video that doesn't work (the thumbnail is there but the page is inexistant). Do any of you know how to solve it?
Comment: @Aniket Is there more than one formula referred to as the quadratic formula?  That can be derived by completing the square?
Comment: Can you be precise as to which formula you are talking of?
Comment: Isn't the calculus based thing simply a more complicated way to complete the square? The parabola hits it's extrema at $- \frac{b}{2a}$ and is symmetric about it. So expand the square $(x + \frac{b}{2a})^2$.
Comment: @fleablood Do you mean this .... https://en.wikipedia.org/wiki/Sridhara? We knew it by this name...check the link to know what name I am talking of. I think the same formula can be called in different ways by different people of different nations. Did you know about the nomenclature of Morrie's formula? If not, then please check this....https://en.wikipedia.org/wiki/Morrie%27s_law  .I don't think many people call it by that name too if you conduct a survey..
Comment: Point taken.  I apologize.
Answer: Consider the differential equation
$$
\frac{dy}{dx}=2ax+b
$$
where $a,b\in \mathbb{R}$ and with initial condition $y(0)=c$. Separating the variables yields
$$
\int dy=\int (2ax+b)dx
$$
Set $u=2ax+b$ in the right integral to get
$$
\int (2ax+b)dx=\int \frac{1}{2a}u\,du= \frac{u^2}{4a}+C
$$
Reverting the substitution, we get $y=\frac{(2ax+b)^2}{4a}+C$. Now we use the initial condition to find $C=c-\frac{b^2}{4a}$. We thus can write
$$
y=\frac{(2ax+b)^2}{4a}+c-\frac{b^2}{4a}
$$
Now we want to solve $y=0$ so
$$
\begin{align}
0&=\frac{(2ax+b)^2}{4a}+c-\frac{b^2}{4a}\\
\frac{b^2}{4a}-c&=\frac{(2ax+b)^2}{4a}\\
b^2-4ac&=(2ax+b)^2
\end{align}
$$
Solving for the positive and negative root yields the famous result.
Not the most efficient way to get this formula but it works.
Answer: We can use calculus, at least, to motivate the choices made when completing the square: The axis of symmetry of the graph of a quadratic function $f(x) = ax^2 + bx + c$, $a \neq 0$, passes through its vertex, and in particular the $x$-value, $x_0$, of the line $\{x = x_0\}$ of symmetry is a critical point of the function:
$$f'(x_0) = 2 a x_0 + b = 0.$$
Rearranging gives $$x_0 = -\frac{b}{2 a},$$ so in the coordinates $uy$, where $x = u + \frac{b}{2a}$, the axis of symmetry is the $y$-axis, $\{u = 0\}$. Substituting and simplifying gives that
$$f(x) = a u^2 + \left(c - \frac{b^2}{4a^2}\right) ,$$
which we can solve for $u$ (and for $x$) simply by rearranging, compute the square roots of the expression for $u^2$, and rewriting in terms of $x$.


Inheritance of list-style-type property in Firefox (bug in Firebug?)

Question: Let's have a look at some comments 1) on a page generated by Wordpress (it's not a site I maintain, I'm just wondering what's going on here). As these pages might disappear in the near future, I've put some screenshots online. Here's what I saw:

Obviously, the list-item markers shouldn't be there. So I decided to look at the source using Firebug. As you can see, Firebug claims that the list-style property (containing none) is inherited from ol.commentlist. But if that's the case, why are the circle and the square visible? When checking the computed style, Firebug shows the list-style-types correctly.
What's the correct behaviour? I just did a quick check in Chromium, whose Web Inspector gave a better view of reality (the list item markers were also displayed in this browser):

According to WebKit, list-style of ol.commentlist isn't inherited, only the default value of list-style-type from the rendering engine.
So, we may conclude that the output of both browsers is correct and that Firefox (Firebug) shows an incorrect representation of inherited styles. What does the CSS specification say?

Inheritance will transfer the
  list-style values from OL and UL
  elements to LI elements. This is the
  recommended way to specify list style
  information.

Not much about the inheritance of ol properties to uls. Is Firebug wrong in this respect or should nested uls inherit (some) properties from ols (and if so, why aren't the elements rendered accordingly in two totally different browsers)? To be clear, my actual question is: which properties should nested ul elements inherit from ol elements that enclose them?
EDIT: I forgot about Opera and the picture becomes even more clear when looking at that browser's inspector:

As the right pane suggests, nested ul elements do inherit properties from ol elements, but the browser's default values of list-style-type and list-style-position override those specified by its parent.
As Vinhboy supports my suspicion of this being a bug somewhere (Firefox? Firebug?), I filed a bug report.

BTW, I managed to let the markers disappear by just changing line 312 of style.css to
ol.commentlist, li.commentlist, ul.children {

When also explicitly defining the list-style of ul.children to none, the markers are not painted. You can have a look at screenshots of Firebug and WebKit's Web Inspector in this case, if you like.

1) After contacting the developer of the page he fixed the unwanted list markers, so you can't see this issue anymore (without editing the CSS on the fly). You can still look at the screenshots to see what this is all about, but I also made a test case and added that to my bug report. For everyone's convenience, the HTML/CSS source reads:
<!DOCTYPE html>

  <meta charset="utf-8">
  <title><ol>/<ul> inheritance test case</title>

First item

Second one

Now let's have some fun with a nested <ul>:

First item

And the second one again (this is incredibly boring, but it's just an example)

Ho hum

Are you still there?

Just another item

Just select the ul and notice that Firebug says that it inherited the list-style property
from the ol (though it didn't, when we look at the actually rendered page).
Please compare this with WebKit's web inspector and especially with the Opera
variant. The latter explicitly makes clear that it falls back to the browser's
default values of list-style-type and list-style-position.
Comment: very good observation. it looks like firebug is wrong here.
Comment: Well spotted, but I'm not sure what your question is?
Comment: @graphicdivine: I already feared that. To make things clear, I set my actual question in bold typeface. I also added a minimal test case, as the original page I linked to is fixed.
Comment: The more I consider this one, the stranger it becomes.  This page appears to suggest that 'none' is a valid value only for ULs, not OLs, although I can't find anything more authoritative to back it up: http://www.w3schools.com/css/css_list.asp
Comment: This page, however, seems to suggest that list-styles are interchangeable between OL and UL: http://www.w3.org/TR/CSS2/generate.html#list-style
Comment: Your bug report, "Erroneous display of CSS inheritance" (which you referenced) is available [here](https://web.archive.org/web/20150519063955/http://code.google.com/p/fbug/issues/detail?id=3009) on the Wayback Machine.
Answer: Actually, your assumption of the styling inheritance is a bit off. The inheritance would be from  li.commentlist rather than ol.commentlist. The reason for the discrepancy is that Firefox accepts list-type styling to the list items as well as the list wrappers. To disable the bullets completely on the unordered list you must set the list-type for the UL tag. That is the reason why I always remove the list-type from the list wrapper and apply it to the list items.
This is just one of those rendering differences between browsers that we all have to learn and adjust. Another example of this inconsistency is the use of margin and padding on the BODY tag. To keep rendering consistent in all browsers you remove should the margin and then set the padding.


Do neutrons in an atomic nucleus exert strong force on each other?

Question: If they do, then why do we never see clumps of neutrons assembled into  "atoms" without protons? Or are neurtons mutually repelled by the strong force?
Answer: Yes, neutrons are influenced by the strong nuclear force inside nuclei. If they did not then how could they be bound in nuclei at all?
Nuclei cannot be built solely of neutrons because they would decay via weak interactions into protons. It is only when the weak decay is inhibited by the presence of protons already occupying the low-lying energy states that neutrons could potentially decay into (protons are fermions and no two identical fermions can occupy the same quantum state), that stability can be reached.
Comment: please see this answer here, it makes the role of protons clear http://physics.stackexchange.com/q/9098/
Comment: This answers another Q too, that I was going to ask :Why don't neutrons in a nucleus decay?.A free neutron has a half-life of around 12 minutes (12 of its minutes,that is,in its inertial frame of reference.)
Answer: The description of the neutron-neutron interaction at low energy can be summarized using a scattering length.  The relationship between the scattering length, the quantum-mechanical phase shift between scatterers, and the "apparent size" of an object requires some careful thought about quantum mechanics.  However for our purposes here we can say that a large scattering length corresponds to a hefty interaction.
According to some plausible-looking presentation, some recent values for the nucleon-nucleon scattering lengths $a$ and effective interaction ranges $r$ are
$$
\begin{array}{ccc}
NN & a\,\mathrm{ (fm)} & r \,\mathrm{ (fm)} \\
\hline
nn & -18.9 \pm 0.4 & 2.75 \pm 0.11 \\
np & -23.740 \pm 0.020 & 2.77 \pm 0.05 \\
pp & -17.3 \pm 0.4 & 2.85 \pm 0.04
\end{array}
$$
From this you can see that the neutron-neutron interaction is slightly stronger than the proton-proton interaction.  From the uncertainties you can also see that neutrons are slipperier to work with than protons.  (The $np$ data are mostly from deuterium.)
From the perspective of the strong force the proton and neutron are the same particle: the nucleon.  If the di-neutron were stable, we would expect also to also to find stable di-protons and a bound spin-zero excitation in deuterium; none of those objects exist in nature, but that is not evidence against the proton-proton strong interaction.
In heavier nuclei, a nice handwaving model is that the nucleons are all paired up, in the same way that electrons pair up in atomic orbitals.  In "odd-odd" nuclei like postassium-40 (19 protons, 21 neutrons), the last pair is mixed, $np$.  The nucleus doesn't like this, and the mixed pair beta-decays to $pp$ (calcium-40, 90% of decays) or $nn$ (argon-40 10% of decays) with comparable probability.  That suggests that the neutron-neutron interaction, like all the nucleon-nucleon interactions, can be either attractive or repulsive depending on circumstances; in the mass-40 system apparently $np$ is less attractive that $nn$.
Answer: There is such a theoretical element with atomic number zero.
http://periodictableofelements.wikia.com/wiki/Neutronium
Comment: Unhelpful, since stable "neutronium" does not exist. The material inside neutron stars also does not consist solely of neutrons (and for a similar reason).
Answer:
Do neutrons in an atomic nucleus exert strong force on each other?

No. There are no nuclei that consist of neutrons alone. You need protons to "stick" the neutrons together, and you need neutrons to "stick" the protons together. Have a look at the neutron/proton ratio. NB: there's some ambiguity about the strong force, see the Wikipedia strong interaction article. I tend to think of the strong force as the force between the quarks of a neutron or a proton, whilst the residual strong force is the force between protons and neutrons. This is also called the nuclear force.

If they do,then why do we never see clumps of neutrons assembled into "atoms" without protons? Or are neutrons mutually repelled by the strong force?

I don't think they're repelled so much as they aren't attracted. Check out things like the dineutron and the trineutron on Wikipedia.
"The dineutron, containing two neutrons was unambiguously observed in the decay of beryllium-16, in 2012 by researchers at Michigan State University.[6][7] It is not a bound particle, but had been proposed as an extremely short-lived state produced by nuclear reactions involving tritium..."
"A trineutron state consisting of three bound neutrons has not been detected, and is not expected to exist even for a short time."
Think of a nucleus as something akin to magnetic stix and balls. The balls aren't magnetic.


How to create a simple multicolored svg based on an image

Question: I have an image from a machine that I am using (see image below). The shapes are pretty simple and I want to create an svg version of it, with black lines to show edges and color in the planes. I am trying this with Bezier curves, but this doesn't really seem to work since it seems every shape can only have one color, and I can't really couple points from one curve to another. So I am wondering what is the right approach to do this?
Comment: It's hard to give advice on this type of question. Can you show us your attempt at turning this into a vector? You just need to start blocking out the object and add more details later on.
Comment: There's no simple answer to this question.  Shapes can have more than one colour - this can be done with simple gradients.  The image you have shared here is really far too small to work with.  Maybe start with something simpler like a cube. You can sample colour from an image to create a gradient. [Here's an example](https://imgur.com/a/NGAeRId) showing what can be done.
Comment: Do you have a particular need? Because a PNG file inside an SVG file is valid.
Answer: Use a high resolution photo of the device as your basis. The image you have inserted is far too blurry. I picked one from an advertisement of webshop "Pathologist's Heaven, Kampala"
The first step is to decide which are the important details. Lock the image on the artboard to keep it in the same place. Draw with the pen lines and curves which separate differently colored sections. Here are some lines and curves:

You may need to connect snapping frequently ON and OFF. You must zoom frequently IN and OUT. You must pan the view frequently. You must edit the nodes and curves with the node tool. Be sure you know how to do them fast and confidently. Gradually you will learn to draw the lines and the curves right with the pen at the first attempt.
I changed the color frequently to see clearly which lines and curves are separate. No need to draw closed paths. Only be sure there's no gaps. Snap on the path and on the node is a must. As I said, snap must be turned ON and OFF frequently. Too long line ends do not harm, but gaps prevent the Shape Builder to do its job.
Select all and fill with the Shape Builder the wanted closed areas:

Remove the strokes and select good fill colors. Curved zones have got gradients. They can be much simpler than the real ones and they still do their job i.e. make it look curved. Wide gaps between detachable parts are separately drawn dark grey lines:

Sometimes blurred shapes are needed in place of gradients, because Inkscape doesn't have rich enough gradients for shading complex forms. I drew only 2 linear gradients.
There's a few important things which should be known or drawing becomes a painful job:

If you are going to continue with a new line from the ending of an older line and do not expect automatic joint, press ESC. Otherwise the endpoints of a just finished line expect you want a joint.
you can delete a node and the path changes as little as it's possible with the remaining nodes. Path > Simplify removes all unnecessary nodes. Shape Builder can make numerous unnecessary nodes which make minor later edits difficult, so this is extremely useful. I guess the Shape Builder is still under development.
the node tool modifies a curve if you drag the curve itself. It's very useful alternative for adjusting the node handles, when you want a certain curvature
generally one should keep the number of the nodes in minimum for smooth and regular look. Fortunately its easy to remove (and insert) nodes and always Inkscape does its best to keep the path the same. That's totally differently in Illustrator.

Not asked, but a professionally shot high resolution photo is more than a drawing. You can add texts and other annotations in Inkscape also on a photo. I wonder doesn't User's Manual contain good illustrations of finer details?
Comment: I would summarize this nice work you've done in two steps. 1. Define specific shapes 2. That can have a gradient.


Keeping a process running on server even SSH is closed

Question: I am running long program on server, which is basically Jar file of java program. I want to keep this program running even if SSH terminal is closed, how I can keep this program running on server?
Answer: Two different ways:

Use nohup - by starting the program with nohup /path/to/program &, nohup keep the program running and any output will be redirected to the file nohup.out in the current directory
Use screen or tmux if either of them is installed on the server. They are a way to keep one or more shells going so that you can re-attach to them the next time you login - it's a much more powerful utility than nohup. man screen or man tmux for more information.
Answer: Here's how to keep a process running that you've already started without using nohup.
Suppose you started decompressing a large archive and now you want to go home.
$ tar -xzf bigfile.tar.gz

Press ctrl-z to send the processs to the background. You can type "jobs" and press enter and see the job number for your process, probably it's 1.
Then do:
$ disown %1

Answer: Either screen or tmux will both work.
See for instance http://www.jeffstory.org/wordpress/?p=132 for a quick tutorial on how to use it.
Answer: While I've never used Apache Daemon, it may do what you want. It will run your Java program as a daemon, as a process in the background.
I'd then use htop to monitor this process, and shut it off if it takes up too many resources.
You will need to install htop apt-get:
sudo apt-get install htop

Then run via
htop

When you see your process, you can kill it by selecting it in the list (via the arrow keys) and then kill it by pressing
f9, k


Create an automated, daily send of previous day email click activity heatmaps

Question: I've not seen anywhere in SFMC where it's possible to do this, but I'm hoping that there's some method I've just not discovered yet. What we would like to do is to either add a step to automations which after a set number of days will generate and deliver to specific users the click activity overlay report (as pdf) of the email in the automation OR, to create a daily task that will return the heat maps from all emails sent a set number of days prior (generally 6). However, I'm unable to find anywhere in the documentation where this is possible.
Answer: The data exists in the platform, but there's no good out-of-the-box way to do what you're asking.
You can use Query Activities to aggregate the click data from the _Job and _Click data views and write it to a Data Extension.
Then, with some AMPScript in an email, you can generate a table that lists link aliases (linkname) ordered by number of clicks.