Is TLS version related to the server in a Java thick client application?

Question: In a recent pentest (Java thick client), it was discovered by the pentesters that TLS version 1.3 is not supported. I'm investigating why it is not supported, so I was looking in the Java code for where TLS 1.3 is defined. However, someone told me that the TLS version is related to OpenSSL on the server itself, so it is not related to the Java code. But in Java code they only exclude old versions of TLS like 1.0 and 1.1 but they don't define which version of TLS. Is that true?
Comment: The TLS versions usable by the client depend both on what is supported by the client and what is supported by the server. If the server can do TLS 1.3 but the client at most TLS 1.2 then at most TLS 1.2 is what you get. If the server side library is OpenSSL, SChannel, gnutls, SecureTransport, NSS, ... and what TLS versions are supported depends on the specific server implementation and configuration - there are many many options.
Comment: See [What exactly determines what version of SSL/TLS is used when accessing a site?](/questions/59367/), [How is the TLS version selected between client and server?](/questions/168390/) and other similar questions.
Answer:
is tls version related to server?

Yes, it is related to the server as well as the client. The client makes the first move in establishing the TLS connection.
If the client is trying to use TLS1.3, but the server does not support TLS 1.3 it will inform that client of this during the TLS handshake and the connection will proceed via TLS 1.2.
As suggested on this website, you can try connecting the client to tls13.akamai.io to see what version of TLS the client wants to use.

but in java code they only exclude old versions of tls like 1.0 and 1.1 but they don't define which version of tls, is that true?

There's lots of different "java code" out there. We don't know what code you are referring to.
On the client side, when you setup the TLS (or "SSL") socket, you can likely pass parameters, or if not you accept the default. You may need to figure out what version of Java you are using and whether that version even supports TLS1.3. If you are using Java 11 you have TLS1.3 support as do some versions of Java 8, but not Java 7.

The TLS connection starts with the ClientHello. If you need to treat the client as a "blackbox" you can tell if the client is attempting to use TLS1.2 or TLS1.3 by looking at the ClientHello, e.g., in Wireshark. Unfortunately, both TLS1.2 and TLS1.3 use the same "version number" (0x0303 indicating TLS1.2) for compatibility reasons. So, you have to look at the Supported Version Extension to see whether 0x0304 (TLS1.3) is listed. But, Wireshark will do this analysis for you.
In addition, you can use Wireshark to observer a connection between a modern client and your web server. You will likely see that the client tries a TLS 1.3 handshake, but the server forces TLS 1.2. Wireshark will label some packets of the TCP stream of the connection with TLS1.2 labels rather than TLS1.3 labels. Another way to see if TLS 1.2 is in use it to see if you can observe the Server Certificate during the handshake. If TLS 1.2 is in use you will be able to see the plaintext certificate, if TLS 1.3 is in use you will not be able to see the plaintext certificate.

Update:
In the above answer, I have been discussing client and server as if these are the only two computers involved in the data transmission process.
A commentator has requested a few words about TLS termination endpoints. This is a device that might, for example, sit in between a client and an HTTP server and perform decryption of HTTPS traffic before passing it on to the HTTP server.
The commentator suggests that if OP's Java server application is not a TLS termination point then the TLS configuration in Java on the server side is irrelevant. In this case OP should look at configuration of the TLS termination endpoint rather than the server application.
In general, there may be lots of different devices in between the client and the server. For example, a TLS termination device, or a load balancer, or a MITM proxy (used, e.g., by corporations to inspect work computer traffic) not to mention lots of switches and routers.
Devices that manipulate TLS such as TLS termination devices or TLS-MITM proxy devices can also cause TLS downgrade (e.g., from TLS1.3 to TLS1.2) and so if both the client and the server ostensibly want to use TLS1.3, but TLS 1.2 is still in use, the culprit might be one of these devices.
Comment: Nit: in 1.3 you won't be able to read the cert in wireshark _unless_ like me you have configured your browser to write SSLKEYLOGFILE and your wireshark to read it :-)) More seriously, recent JVMs (since last year) disable 1.0 and 1.1 _at the JVM level_ regardless of your application code (and SSL3 similarly since 2014).
Comment: It is not an *abstract* question about how it TLS in general works. It is a question about *specific* case when both client and server are in Java. That's why your statement about what Chrome will try regarding TLS is *irrelevant* and *not helpful*. Instead, please focus on how *Java client* and *Java server* work with TLS.
Comment: The question is about **Java thick client**. Why are you writing about browsers? Your answer is not helpful.
Comment: Then I guess I don't understand the question. How about you write an answer? @mentallurg
Comment: The OP says *"Java thick client"*. Means, it is not browser. In your answer, just remove the part related to browser. Focus on Java specifics. Explain, how TLS can be configured.
Comment: @mentallurg I updated the answer.
Comment: @hft: Looks good. Could you add a few words about TLS termination endpoint?
Comment: @mentallurg I added a bit about TLS termination. Basically just indicated that these can also be the culprit of TLS downgrade.
Comment: @hft: I mean that the author seems not to understand that the Java server application is not a TLS termination point. That's why TLS configuration in Java on the server side is irrelevant. One should look at configuration of the TLS termination point.
Answer: You first have to understand the TLS-Handshake.
Video: TLS-Handshake - Youtube
Then you understand that both sides have an affect on which TLS Version is used for the connection.
The Client send the server a List of which TLS Versions it supports.
The Server decides which TLS Version will be used for the connection. It chooses the newest Version of the Clients List, which the Server itself supports.
In most cases the Server will support not only TLSv1.3 to support clients that aren't able to use TLSv1.3.
Example 1:
Server Supports       Client Supports
TLSv1.3               TLSv1.2
TLSv1.2               TLSv1.0

The Server selects TLSv1.2

Example 2:
Server Supports       Client Supports
TLSv1.3               TLSv1.2
                      TLSv1.0

A connection between the Client and the Server is not possible.

Example 3:
Server Supports       Client Supports
TLSv1.3               TLSv1.3
TLSv1.2               TLSv1.2

The Server selects TLSv1.2

Conclusion:
You can influence the used TLS Version on both sides. But the Server is the decision maker. A malicious person could trick the server to use a lower Version of TLS by pretend it only supports TLSv1.0 even if it is capable of using a higher version. For this reason it is important to always stay up to date and disable older TLS Version on the Server side from time to time.
At this point of time (May 2022) it is pretty normal to have Servers support TLSv1.2 and TLSv1.3 side by side.
Comment: Is this applicable to Java thick clients? This appears to be general info on how web browsers go through this process.
Comment: good question @schroeder.
Actually my question is related to yours, in case of java thick client communicating with a server, for the encryption of communication, data is encrypted using tls, however what I have doubts about is, is the tls verison related to java?  is it implemented with the java code? or it something purely related to the openssl installed on the server and java only uses it?
Comment: @ethicalhacker I edited your question to focus everyone on the Java aspect. I am not a Java expert, so I can't weigh in. But I am seeing people talk about browsers.
Comment: I found this link: https://java.com/en/configure_crypto.html

I think that java jdk has an embeded openssl which already has default tls configurations, so in this case it not dependent on the openssl installed on server but on the jdk installed on the server, right?
Comment: @ethicalhacker: no, JDK absolutely does not have 'embedded openssl' nor does Java-as-distributed ever use OpenSSL for anything, and what Java (JSSE) implements does depend on the Java version _and_ configuration/coding. However, _some_ otherwise Java-based servers notably Tomcat and things based on it like Wildfly DO have an option to use OpenSSL _instead of_ JSSE, via the Apache 'APR' library. I'm not aware of any client library that does, although it would be possible to create one.
Comment: but when using java to encrypt cummunications in tls for example I can see in a code how to exclude certain versions: supportedProtocols.remove("TLSv1.1");

so this excludes tls 1.1 from the default versions defined, but I'm still confused where are those default versions defined?!
As far as I know, openssl on linux defines which tls versions the server can support, maybe there's something that I'm missing


What is the difference between observed information and Fisher information?

Question: I have in literature saying the observed information $J(\theta)$ is equal to the Fisher information $I(\theta)$. They are given different donations and same parameter. It is not clear why if equal they have different donations. Could anyone please explain?
Answer: Let $X_1,...,X_n \sim f(x;\theta)$. Fisher information is a theoretical measure defined by
$$
\mathcal{I}(\theta) = - \mathbb{E}\left[\frac{\partial^2}{\partial\theta^2}\ln f(x:\theta) \right],
$$
where $\theta$ is the unknown parameter of interest, hence for sample of size $n$ and MLE $\hat{\theta}_n$, you can estimate the fisher information by $n\mathcal{I}(\hat{\theta}_n)$.
Observed information is defined by
$$
\mathcal{I}_{obs}(\theta) = - n\left[\frac{1}{n}\sum_{i=1}^n\frac{\partial^2}{\partial^2 \theta}(\ln f(x_i:\hat{\theta}_n)) \right],
$$
which is simply a sample equivalent of the above. So, as you can see, these two notions defined differently, however if you plug-in the MLE in fisher information you get exactly the observed information, $\mathcal{I}_{obs}(\theta)=n\mathcal{I}(\hat{\theta}_n)$.
To show it for a pretty general case, you can work out the algebra for a single parametric exponential family distribution (it is a straightforward calculations).


How to edit the start menu

Question: I installed ubuntu 13.04 on a new laptop but don't know how to handle the system. I want to edit start menu, to group items, add or remove some, get rid of icons.
Answer: Using this application, you can edit what applications are available:
https://apps.ubuntu.com/cat/applications/alacarte/
You can use it to change icons as well.
Answer:
Launch an application from the Dash by clicking on the Ubuntu icon in the launcher's top, typing the name of the app and clicking on the resulting icon.
The application starts. Now it's icon has appeared in the launcher. Once you close the application, it's icon will disappear from the launcher again.
To keep it in the launcher, right-click on it's icon and choose "keep in launcher".
To remove it from the launcher, right-click and choose"remove from launcher".
To change an icon's position, drag it.
Comment: Thanks. Actually I've figured that already. I still don't know if ubuntu allows text menu instead of icons and if they can be grouped like Internet, Games, etc.
Comment: Press Super+a to enter the Dash's applications lens and click on the filter button. I think there is also a "gnome classic" appindicator available, but I can't provide details about it.
Answer: I agree, there should be the ability to do just what you suggest.
This should be raised as a bug/feature request ..

Here is some guidance on doing some of it manually:
How can I edit/create new launcher items in Unity by hand?
Answer: You can buy Drawer for 2.99$ from the software center.
A utility for organizing related items for easy launching from the Unity launcher by "mini-dashes" or quicklists. You can also create persistent Desktop Widgets that display a directory or links to related items and applications.
There are currently three types of Drawers:
Basic Drawers: A favorite for the Unity Launcher that can contain any combination of files, applications, web links or directories. Just drag and drop on the icon or open drawer and your item will be added.  Left-clicking the launcher "opens a drawer" with an icon view of each item for launching. Right-clicking allows fast launching through quicklists.  Use Basic Drawers for quick creation of application categories or to keep shortcuts of related documents and links together when working on a project. Drawers can even be nested within one another (just drag from Dash to open drawer).
AppMenu Drawers: A favorite for the Unity Launcher that displays a "Gnome Classic-like" application menu, drawers-style!  Applications are categorized and displayed automatically, so there's no need to add applications manually to the drawer.  An AppMenu Drawer can be created at any sub-level (e.g. Accessories or Games) or items in sub-levels can be pinned to the Launcher's quicklist.  If you wish to edit the menu structure, you must currently use an xdg-menu editor such as alacarte or menulibre.
Active Drawers: A favorite for the Unity Launcher that links to a specific directory. Any files dragged to the icon will be copied to that directory.  A quicklist is generated after each opening with the 10 most recently modified files or files can be pinned to stay in the quicklist.  Opening the Drawer displays a folder view that is updated in real time.  Pin it to the desktop and you have a Folder View Widget!
For support, please contact at http://launchpad.net/drawers

How to edit the start menu


Angularjs promise not binding to template in 1.2

Question: After upgrading to 1.2, promises returned by my services behave differently...
Simple service myDates:
getDates: function () {
           var deferred = $q.defer();

            $http.get(aGoodURL).
                 success(function (data, status, headers, config) {
                     deferred.resolve(data);  // we get to here fine.
            })......

In earlier version I could just do, in my controller:
$scope.theDates = myDates.getDates();

and the promises returned from getDates could be bound directly to a Select element.
Now this doesn't work and I'm forced to supply a callback on the promise in my controller or the data wont bind:
$scope.theDates = matchDates.getDates();
$scope.theDates.then(function (data) {
      $scope.theDates = data;  // this wasn't necessary in the past

The docs still say:
$q promises are recognized by the templating engine in angular, which means that in templates you can treat promises attached to a scope as if they were the resulting values.
They (promises) were working in older versions of Angular but in the 1.2 RC3 automatic binding fails in all my simple services....  any ideas on what I might be doing wrong.
Answer: There are  changes in 1.2.0-rc3, including one you mentioned:

AngularJS 1.2.0-rc3 ferocious-twitch fixes a number of high priority
  issues in $compile and $animate and paves the way for 1.2.
       This release also introduces some important breaking changes that in some cases could break your directives and templates. Please
  be sure to read the changelog to understand these changes and learn
  how to migrate your code if needed.
       For full details in this release, see the changelog.

There is description in change log:

$parse:

due to 5dc35b52, $parse and templates in general will no longer automatically unwrap promises. This feature has been deprecated and
  if absolutely needed, it can be reenabled during transitional period
  via $parseProvider.unwrapPromises(true) api.
due to b6a37d11, feature added in rc.2 that unwraps return values from functions if the values are promises (if promise unwrapping is
  enabled - see previous point), was reverted due to breaking a popular
  usage pattern.
Comment: I just can't get why they use an unstable branch while breaking everything in supposedly freezed release candidates...
Comment: I wish that they had made this more obvious! There are so many places online (forums, Stack Overflow, etc.) that I have found that tell me that promises will automatically unwrap. This is the *only* place I've found that explains why it no longer works. Until now, I've gone months developing in angular without ever actually knowing why this never worked for me, even though it seemed to work for the rest of the world. Thanks, @Nenad!
Comment: Is this true for resources also?  It is possible to bind directly to a $resource, is that also broken in rc3?
Answer: As @Nenad notices, promises are no longer automatically dereferenced. This is one of the most bizarre decisions I've ever seen since it silently removes a function that I relied on (and that was one of the unique selling points of angular for me, less is more). So it took me quite a bit of time to figure this out. Especially since the $resource framework still seems to work fine. On top of this all, this is also a release candidate.  If they really had to deprecate this (the arguments sound very feeble) they could at least have given a grace period where there were warnings before they silently shut it off. Though usually very impressed with angular, this is a big minus. I would not be surprised if this actually will be reverted, though there seems to be relatively little outcry so far.
Anyway. What are the solutions?

Always use then(), and assign the $scope in the then method
function Ctrl($scope) {
   foo().then( function(d) { $scope.d = d; });
)

call the value through an unwrap function. This function returns a field in the promise and sets this field through the then method. It will therefore be undefined as long as the promise is not resolved.
$rootScope.unwrap = function (v) {
  if (v && v.then) {
    var p = v;
    if (!('$$v' in v)) {
      p.$$v = undefined;
      p.then(function(val) { p.$$v = val; });
    }
    v = v.$$v;
  }
  return v;
};

You can now call it:
Hello {{ unwrap(world) }}.

This is from http://plnkr.co/edit/Fn7z3g?p=preview which does not have a name associated with it.
Set $parseProvider.unwrapPromises(true) and live with the messages, which you could turn off with $parseProvider.logPromiseWarnings(false) but it is better to be aware that they might remove the functionality in a following release.

Sigh, 40 years Smalltalk had the become message that allowed you to switch object references. Promises as they could have been ...
UPDATE:
After changing my application I found a general pattern that worked quite well.
Assuming I need object 'x' and there is some way to get this object remotely. I will then first check a cache for 'x'. If there is an object, I return it. If no such object exists, I create an actual empty object. Unfortunately, this requires you to know if this is will be an Array or a hash/object. I put this object in the cache so future calls can use it. I then start the remote call and on the callback I copy the data obtained from the remote system in the created object. The cache ensures that repeated calls to the get method are not creating lots of remote calls for the same object.
 function getX() {
   var x = cache.get('x');
   if ( x == undefined) {
      cache.put('x', x={});
      remote.getX().then( function(d) { angular.copy(d,x); } );
   }
   return x;
 }

Yet another alternative is to provide the get method with the destination of the object:
 function getX(scope,name) {
   remote.getX().then( function(d) {
       scope[name] = d;
   } );
 }

Answer: You could always create a Common angular service and put an unwrap method in there that sort of recreates how the old promises worked. Here is an example method:
var shared = angular.module("shared");

shared.service("Common", [
    function () {

        // [Unwrap] will return a value to the scope which is automatially updated. For example,
        //      you can pass the second argument an ng-resource call or promise, and when the result comes back
        //      it will update the first argument. You can also pass a function that returns an ng-resource or
        //      promise and it will extend the first argument to contain a new "load()" method which can make the
        //      call again. The first argument should either be an object (like {}) or an array (like []) based on
        //      the expected return value of the promise.
        // Usage: $scope.reminders = Common.unwrap([], Reminders.query().$promise);
        // Usage: $scope.reminders = Common.unwrap([], Reminders.query());
        // Usage: $scope.reminders = Common.unwrap([], function() { return Reminders.query(); });
        // Usage: $scope.reminders.load();
        this.unwrap = function(result, func) {
            if (!result || !func) return result;

            var then = function(promise) {
                //see if they sent a resource
                if ('$promise' in promise) {
                    promise.$promise.then(update);
                }
                //see if they sent a promise directly
                else if ('then' in promise) {
                    promise.then(update);
                }
            };

            var update = function(data) {
                if ($.isArray(result)) {
                    //clear result list
                    result.length = 0;
                    //populate result list with data
                    $.each(data, function(i, item) {
                        result.push(item);
                    });
                } else {
                    //clear result object
                    for (var prop in result) {
                        if (prop !== 'load') delete result[prop];
                    }
                    //deep populate result object from data
                    $.extend(true, result, data);
                }
            };

            //see if they sent a function that returns a promise, or a promise itself
            if ($.isFunction(func)) {
                // create load event for reuse
                result.load = function() {
                    then(func());
                };
                result.load();
            } else {
                then(func);
            }

            return result;
        };
    }
]);

This basically works how the old promises did and auto-resolves. However, if the second argument is a function it has the added benefit of adding a ".load()" method which can reload the value into the scope.
angular.module('site').controller("homeController", function(Common) {
    $scope.reminders = Common.unwrap([], Reminders.query().$promise);
    $scope.reminders = Common.unwrap([], Reminders.query());
    $scope.reminders = Common.unwrap([], function() { return Reminders.query(); });
    function refresh() {
        $scope.reminders.load();
    }
});

Answer: These were some good answers, and helped me find my issue when I upgraded angular and my auto-unwrapping of promises stopped working.
At the risk of being redundant with Peter Kriens, I have found this pattern to work for me (this is a simple example of simply putting a number of famous people's quotes onto a page).
My Controller:
angular.module('myModuleName').controller('welcomeController',
function ($scope, myDataServiceUsingResourceOrHttp) {

    myDataServiceUsingResourceOrHttp.getQuotes(3).then(function (quotes) { $scope.quotes = quotes; });
}
);

My Page:
...

...

{{quote.text}}

                {{quote.source}}

...


Decuplet baryon resonances

Question: Are all baryons from decuplet resonances?? Because all resonances decay by strong interaction; but omega minus baryon can't decay via strong, because any other bound state with strangeness -3 exists.
Thanks
Answer: No, only some baryons form a decuplet under SU(3) flavor symmetry, specifically those 10  spin  3/2 baryons formed from up, down,and strange quarks,depicted in the following diagram (figure credit Wikipedia baryon article , figure listed as public domain):

On the diagram $Q$ is electric charge, $I_3$ is isospin, and $S$ is the strangeness quantum number.
If you think about just adding the charm quark and think about baryons containing a charm quark, you see that not all baryons can fall into  a decuplet, because the flavor symmetry is SU(4) once we introduce charm. And so on for the bottom baryons.
Or on a more familiar note, neither the neutron or proton, the baryons  that are most familiar to non-physicists, are part of a decuplet. They are part of an octet of spin 1/2 baryons.
The reason the $\Omega^-$ can't decay under the strong interaction is that the strangeness quantum number is conserved by strong decays . So since the decay of the particle involves a change in strangeness quantum number, it must decay by weak interaction.
By flavor symmetry, I  meant symmetry under exchange of different types (flavors) of quarks. There are six known flavors or types of quarks, and all have been experimentally verified to exist now: up, down,strange, charm, top, bottom. SU(3) and SU(4) are terms from group theory , which is a mathematical description of symmetry, and is used to express the symmetry of how things transform when exchanged. That's a very qualitative description to say the least.

Decuplet baryon resonances


Terrain Modelling

Question: all. I am new to Blender. I have modeled a terrain by joining the edges of different contour lines which I imported from a DXF file. However, I have no idea how to continue creating a small hill on top of a closed polygon or surface. Next, I would like also to know whether there is any tutorial that I could refer to in order to know how to place a road nicely on the terrain surface. Please find the Blender file if needed. Thank you.

enter link description here
Comment: Hi. Please make the title of the question specific to what you are asking and not just the general topic. Thanks.
Answer: The hill
For your small hill, I'd use Loop tools. It's an add-on that comes with your standard Blender.

Select two layers of vertices and Bridge them.

It's wise to subdivide longer edges since Looptools Bridge will not handle them great in this situation.

The road
As for your road, you could use a bunch of modifiers for that. Mainly Shrinkwrap, and a few others that increase the detail of the mesh geometry (more vertices) to help Shrinkwrap work better (give it more vertices to work with).
First something like this:

And then move the road above the hill (z-axis only) and press ALT+C and convert it to a mesh. (You could apply a Subdivision modifier first for more mesh geometry)

And finally apply Shrinkwrap (and some other modifiers to make it look a little bit nicer) The road is now projected on to the mountain surface from a top down perspective. (Note how the "Mode:" is set to Project.)

The road is shaped a bit funny where there is no mountain underneath it; that might need some manual editing/tweaking I'm afraid.
Answer: Go to EDIT MODE, select two vertices and press F (to create an edge or face).
Continue pressing F to generate all the faces (vertices have to be aligned).
STEP 1:

STEP 2:

probably there is also a better and automated way with extensions. did you look for them?

Terrain Modelling


FX Forwards collateral and discounting

Question: What is the market convention for discounting the future cash flows of FX forwards? In particular, I would be interested to know what discounting curves are used for both collateralised and not collateralised FX forwards.
Answer: See 'Collateral Posting and Choice of Collateral Currency' (Theorem 1, in particular) and 'A Note on Construction of Multiple Swap Curves with and without collateral' by Fujii et. al., and also 'Cooking with Collateral' by Piterbarg (the basics of unsecured and collateralized cases for forward contracts in general are covered in Piterbarg's paper 'Funding beyond discounting: collateral agreements and derivative pricing').
Answer: I would suggest picking up the book "Options, Futures, and Other Derivatives" by Hull. Lots of good knowledge on cash flows pertaining to FX, etc. A bit more quantitative but the discounting aspect is emphasized and I think it will make better sense. If you can't find a download link, lmk :)
Comment: Why not look up the specific question in the book and tell us the answer... referencing Chapter and page number.

FX Forwards collateral and discounting


Why do Children Steal the Afikoman?

Question: Why do children steal the Afikoman?
Comment: Why do children steal the Afikoman?
Comment: @DoubleAA Why do children steal the Afikoman?
Answer:
To show how much they love the mitzva.  (Mekor Chaim - Chavos Yair)
Based on the Mishna in Pesachim that says the children grab the Matza so they shouldn't fall asleep. (Chasam Sofer)
Dogs watch the house from burglars.  On the night of Pesach the dogs did not bark therefore they were vulnerable to thieves.  As a Zecher to this we steal the Afikoman. (Michtav Sofer - Rav Shimon Sofer of Krakow)
Matza represents parnassa.  The Ba'al HaBayis breaks it in half.  He leaves half on the table representing Olam HaZeh and the other half he hides for Olam Haba.  The little children who only know from Olam Hazeh try to grab the hidden half.  The Ba'al HaBayis must watch it and make sure they don't steal it.  (Ach Pri Tevua - Rav Tzvi Hirsch MiLiska)
When Eisav went in to get the brachos from Yitzchok, Yitzchok said "Ba Achicha BiMirma" you brother came with trickery.  The Medrash Plia adds "and he took out the Afikoman."  The brachos were given on Pesach.  Therefore the children grab the afikoman to get the brachos.  The brachos are the present that they ask their fathers to buy for them.  (Rav Menashe Klein)
Revach
Answer: So that the children will stay awake and be interested. Along the lines of K'day Sheyisha'alu Hatinokos(so that the children will ask).
Comment: Banana? What does that m.... oh I see what you did there. ;-)
Comment: Pesahim 109a: http://dafyomi.org/index.php?masechta=pesachim&daf=109a&go=Go
Answer: To quote this article by Eliezer Brodt:

Where does this minhag come from? Many Acharonim point to the Gemara (Pesachim 109a), which mentions that we are "chotef" the matzos on the night of Pesach for the children. What does "chotef" mean in this context? The Rishonim offer different explanations. The Rambam (Hilkhot Hamets Umatsah 7:5) writes that on this night one has to make changes so that the children will notice and ask why this night is different, and one answers by explaining to them what happened. The Rambam adds that among the changes we make are giving out almonds and nuts, removing the table before we eat, and grabbing the matzah from each other. Rabbeinu Manoach points to the Tosefta as the source for the Rambam that "chotef" means to grab. Some Rishonim, quoting the Tosefta, write clearly that it means to steal.

It should be noted that this custom was far from universal and numerous rabbis opposed it including the Chazon Ish, Rav Shlomo Zalman Auerbach, and Rav Yossef Qafih. (ibid).
Answer: What is the source and significance of stealing the אפיקומן?
It comes from Yackov stealing the ברכות from Eisav. It has a whole other level we tell the חכם a Halacha that אין מפטירין אחר הפסח אפיקומן why this Halacha? The answer illustrates the connection between Birchas Yitzchak and Pesach once more it was this Halacha that Yackov used when stealing the ברכות when Yackov brought the Meat from Korban Pesach Yitzchak was no longer able to eat because אין מפטירין אחר הפסח. We know that Yitzchak told Eisav "Go Prepare me food so I can eat and Bench You" .This means now that Yitzchak cant eat Eisav's food he cant give him a ברכה..Then too throw in one last connection from Rabbi Yosef Chaim Sonnenfeld When Eisav came in and asked for his ברכה his father told him בא אחיך במרמה ויקח את ברכתך and if you calculate the Gematriah of במרמה it is exactly אפיקומן
Comment: יעקב didn't steal anything from עשו...
Answer: Rabbi Dovid Rosenfeld suggests:

My teacher R. Yochanan Zweig offered an interesting insight as to why
such a curious custom took hold in Israel – especially since teaching
our children to steal seems so antithetical to how we instruct them to
behave the rest of the year. He observed that one aspect of slavery is
that a slave owns no property. Typically, whatever a slave owns or
acquires belongs to his master. Thus, perhaps taking the afikomen
represents that as slaves, nothing we owned was truly ours. The slave
of one master could take from his fellow slave with no consequences.
This practice is thus another means of demonstrating to our children
just what it felt like to be a slave.
Comment: Is it really true that there is no concept of inter-slave theft in halacha, or is this davka talking about the Egyptian slavery? Even if the latter, why would it matter what the Egyptian's rules were, we were always only bound by our rules

Why do Children Steal the Afikoman?


Selenium Firefox Pop-up blocker leads to fail the test case execution

Question: We are using the selenium with firefox webdriver to automate all our test cases. I'm automating the SDL Tridion manual activities like Creating a Component, Creating a Page, Tridion out-of box search etc....When I run the test cases for Page Creation test case, Firefox's pop up blocker ending up blocking the window that is supposed to open. This leads to failing the test case, but for other test cases it is working fine(FYI : I'm running it from my local)
On the top of this selenium project we have built one asp.net web application and the application has been configured in the IIS Successfully. When I run this project by hitting the server URL, All the test cases got executed successfully.(Note: No Firefox pop-up blocker issue)But we couln't execute the selenium project from our local, because of the firefox driver pop-up blocker issue.I have tried a couple of things but they didn't work out, And those are mentioned here1. Given the URL of the site in the firefox setting's(Options->Content->Add Exceptions->URL of the Site)2. Setting the preference in the firefox profile like below
[TestFixtureSetUp]
        public void Init()
        {
            try
            {
                //driver = new FirefoxDriver();
                //FirefoxBinary fb = new FirefoxBinary(@ConfigurationManager.AppSettings["FirefoxBinaryLocation"]);
                FirefoxBinary fb = new FirefoxBinary(@ConfigurationManager.AppSettings["FirefoxBinaryLocation"]);
                FirefoxProfile fp = new FirefoxProfile();
                fp.SetPreference("browser.startup.homepage_override.mstone", "ignore");

                driver = new FirefoxDriver(fb, fp);
            }
            catch (System.Exception ex)
            {
                logger.WriteError("Exception in instantiating Firefox driver : " + ex.Message);
            }
        }

Firefox Version :- 38.5.2
Webdriver Version :- 184.108.40.206
Any help would be greatly appreciated..Thanks...
Answer: Popups are handled in Firefox with the key "dom.disable_open_during_load". You can set this key value to false, which will allow popup windows. This key value can be set in desired capabilities.
Answer:
I found a solution for my post. Actually I was using element.sendKeys(Enter), Actually this won't work out while clicking a button in firefox. So I changed this to JavaScript Executor, I added the below code and it is working fine
IwebElement element = driver.findelement(By.Id("Id name goes here"))
IJavaScriptExecutor executor = (IJavaScriptExecutor)driver;
executor.ExecuteScript("arguments[0].click();",element);

Hope this might helpful to others.


Endnote x7: Could not initialize database support

Question: I recently come to Windows 8.1 and after I installed Endnote x7, it keeps giving `Could not initialize database support" when I try to create a new library.
Answer: Here is what I've done to solve this problem:

I uninstalled Endnote completely.
Using CCleaner I cleaned registry.
Removed directories related to Endnote from appData
Removed directories related to Endnote from Documents
Reinstalled Endnote.
Answer: This hyperlink has supplied three methods to solve this problem, and the contents have been attached as follows.
1.
Where are the libraries located on the system? If they are being placed in Program Files, that could be the problem. Try creating/opening a library in the user's Documents folder or their Desktop and see if the issue continues.
Starting with Windows Vista, Windows will not allow you to directly modify files in Program Files. If you try to modify, add, or delete files in Program Files, Windows will work with shadow copies of the files hidden elsewhere on the system which can cause errors like this.
2.
To solve the problem, change the Endnote preferences as follows. This should work.

Open Endnote.
From the top bar menu, select Edit -> Preferences.
Click on "Libraries" on the left-hand column.
Against "When Endnote starts", open the pull-down menu and then select "Open the specified libraries". (DO NOT click on the button for "Add open libraries" or "Remove Library".)
Click on the Apply button.
Click on the OK button.

3.
This issue is usually either caused by permissions for the location where you are trying to create or open a library, or an issue with a running process on the machine. The easiest way to tell is to restart the machine. 90% of the time this will fix the issue. If it does not, try temporarily disabling any antivirus to see if you continue to have the issue.
Answer: I realize that this question is already answered but what I did was open the Endnote installer and click "repair". Seemed to have fixed all of the issues with the database-related errors.
Comment: If it worked, it's good enough to mention.
Comment: This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post - you can always comment on your own posts, and once you have sufficient [reputation](http://superuser.com/help/whats-reputation) you will be able to [comment on any post](http://superuser.com/help/privileges/comment).


Horizontal magnetic attraction?

Question: I came across and interesting effect today, I have a dozen of Neodymium magnets around my house. And, they are very strong. Anyhow, one of them got attracted to my large steel plate table(use for cutting and building). It was almost impossible to take it apart, till I contacted the manufactured of those magnets and they proposed to slid it off. Amazingly, it worked. But what shocked me is the level of huge force decrease. It's like I'm going against friction alone... Only at the edge of the plate I felt a force that is strong, but half way through... The magnet as almost "off" only the edge of the magnet was attracted strongly to the edge of the plate, what explains this?
Answer: the magnetic force is downwards towards the plate. friction is a fraction of this downward force (look up coefficient of friction) and is antiparallel to the sliding force. therefore sliding a magnet across steel always requires less force than lifting it (as long as the coefficient is less than 1--usually the case with metal on metal).
once you reach the edge of the plate the direction of the magnetic force rapidlt changes more and more as the plate moves away and to the side. now the magnetic force pulls almost sideways instead of only downwards, and in the opposite direction of the sliding force. this only occurs for a moment, but is significant enough to detect as a large impulse.
Comment: What do you mean by the large impulse? And why is the "strong" side magnetic force that occurs strongly the most at the edge, occurs for a very short period of time?
Comment: a moving magnet has inertia to remain moving despite the change in direction of the magnetic force. if this inertia is high enough, the magnet is able to escape quickly--and you, the pusher of the magnet will only feel a tug, and will tumble as it flies off the plate. if you were pushing it slowly, and you can try this, the magnetic force will overcome the forward motion of the magnet, and cause it to flip over and attach to the underside of the plate--this i think, is most easily available evidence that the direction of the magnetic force changes as the magnet goes off the edge.
Comment: If the inertia is high enough, I'm applying more force aren't I? Thus, the external magnetic force wont cause much of an effect. Also, your right about the magnetic force happing for a short period of time. Because, at the edge I feel the force becoming very strong and then instantly dropping. Yet, it's as if the force is at it's maximum for a very small area,
Answer: The field of the magnet is evenly distributed upon the metal plate thus making the magnet seem to be at a neutral state in relationship to the metal (it can not get any closer to the metal and its force is evenly dispersed, you do not have to deal with that force until you try to move sideways.
The field of attraction is still apparent when you try to move sideways on the metal but not as strong as trying to pull it straight off because most of the field is straight on and that is being taken care of by the contact of the two. You are only fighting the lines of force that are angled in the field until you reach the edge when the evenly distributed force is no longer canceled out by the metal-magnet contact.
It's like sliding something heavy across a floor as opposed to picking it up and carrying across the room, sliding is much easier because you don't have to support all the weight, the floor is taking care of most of the work by supporting mass you are merely moving the mass on its support.
Answer: For moving the magnet away from the steel plate, you need to use a force larger than the maximal force the magnet can provide under ideal conditions on this surface.
Note how you pull parallel to the magnetic field lines.
For moving the magnet sideways, you need a force stronger than its force in this direction. They will not be as strong as in the main direction of the magnet, but can still be very strong. But assuming the magnet is symmetric, we find that they all cancel out.
So, when we move the magnet over the steel surface, we feel no magnetic force at all! What we feel is caused by the normal friction of magnet sliding on steel - just stronger, as it is proportional to the force of the magnet to the table.

Horizontal magnetic attraction?


IPFS File upload

Question: I am working on an idea of uploading a file on IPFS. But the requirement is, the uploaded file should be available for view only to the intended group of people. The code to upload the file is in JS. Now my question is, is it possible to upload a file in IPFS with limited permissions.  The other question is , is it required to have IPFS installed at the end user to view the file in IPFS. If you can assist me by directing to proper documentation then that would also be great.
Answer: Once you upload a file to ipfs, it is theoretically available to anyone who knows its hash. So, it's not possible to restrict the access to the file.
What is possible, is to encrypt the file in some way and only give the decryption key/password to the group of people you want to be able to access it.
Have a look at this awesome ipfs resources.
The projects that seem to best suit your requirements are:

ipfs-add-from-encrypted: This script takes a file or directroy as input, uses tar if a directory and GPG AES256 symmetric encryption with the password you provide and adds it to IPFS and returns the IPFS hash.
ipfsecret: Encrypt and decrypt IPFS files with a secret passphrase.

For your second question: it would be best to have a locally running ipfs node, but fortunately that's not required. Recently, cloudflare launched a set of hosted ipfs gateways which anybody can use.
Comment: you're welcome. please let others know this was a helpful answer by accepting it.
Answer: Regarding your first question, I believe the Submarining feature from Pinata could help you with your project as written on their documentation:

Submarining is a premium Pinata feature that allows users to share
unlockable content with their community. Technical and non-technical
creators can give fans access to exclusive gated content via NFT
ownership, Retweets, and geo-location via API, or with our no-code
solution at Submarine.me
For developers, submarining provides the security to store files for
apps and marketplaces without the risk of their data being exposed.
Similarly, creators who use NFTs to monetize their creative work can
now share content with their customers without leaving their data on
public IPFS, which reduces the risk of stolen content and NFT media.

Link: https://docs.pinata.cloud/what-can-i-learn-here/submarining
If I want to answer your second question, I would say there are several tools for making requests and fetching data to display them later, such as Axios.

IPFS File upload


Is it reasonable to do train/test splitting based upon information/entropy?

Question: I want to divide my time series dataset into training and test sets. The data is seasonal and very noisy. When I randomly split, the test and train samples do not resemble in their distributions. Sometimes, train data get most of the noisy/peak points and sometimes these points go to test data. Can I split the data into train/test by calculating how much information the two sets hold. The information can be quantified by e.g. Shannon entropy or standard deviation etc. When I tried to search literature around this, I could not find any reference?
Comment: If you are dealing with time series dataset, would it be nature that you split the data using a certain point on the time line (before which will be the training data, and after which will be the validation/test data)? If there are seasonal trends, you may want to make sure that your training data covers a full cycle.
Answer: In theory, the very first thing to do should be fixing noises and seasonality. There are various ways of approaching the noises. If possible, try to understand the reason for noisy samples and extract the noise part from them manually. Or, use the smoothing algorithms to minimize the noises. In addition, you can create a dummy predictor variable that will be accountable for the noise part in the data. In time-series data, you can manually put 1 for the dates that you consider as noise and 0 for normal data points. You can read more about dummy variables here. However, it might be unhealthy to use dummy variables for improper cases.
To overcome seasonality, there are some powerful approaches, for example, X-13ARIMA-SEATS is a good method of extracting the seasonality from the time series.
If you want to do a split on the strength of some metric, you might encounter different possible scenarios. For example, if you would use some metric to split the data like variance or information then your test data would be very dissimilar compared to your train data. Thus, the test set would perform poorly since its characteristic is not like the train data. In other words, you might not objectively assess the performance of the model.
Lastly, as Albert mentioned in the comments, if you do a time-series prediction, then it would be better to split the data using the time. In other words, n consecutive samples would be your train data and m consecutive samples would be your test data.
Comment: Regarding your 3rd para: The way I am suggesting is not by maximizing the information in training set but by reducing the absolute difference between information that is contained in the training and test sets. For example if I split the whole data such that the difference in entropy of training and test is minimum. Does that make sense? Is there any literature around that? I understand the point you are making regarding seasonality/preprocessing etc.
Answer: Very few of these highly noisy series might indicate they are

unwanted outliers; or
an anomaly, such as network intrusion in a dataset of network traffic.

In case 1 reason why they are present, and use outlier analysis techniques. In case 2 you should in fact make sure they are represented both in the train as well as the test set.
Validate you do not have a sampling bias in your dataset. Treating these samples differently might also lead to data snooping. Read more here.
Comment: Thanks for your answer. While you've provided some advice on how to deal with outliers, this doesn't answer the OP's question, which is about train/test splits and how to ensure the noise/information is evenly spread across the train and test sets. Can you update your answer to address these points? (From review).


What is the difference between Pegged token and Wrapped tokens?

Question: As the question in the title: is the pegged token and wrapped token the same thing? From my understanding - it is? Both are tied to a particular cryptocurrency in order to maintain its value across blockchains. Or maybe its the same thing?
Answer: I would say the terms are somewhat subjective in a colloquial sense because not everyone will be so precise. Here's an attempt at a descent description of each.
"Pegged": "Peg" is a transitive verb. An asset isn't merely "pegged". It must be pegged "to something." Pegging the price is the effect of some inherent design property that holds the peg. There are many ways to accomplish a peg. Two examples:

a credible minting and redemption process based on exchanging the collateral asset (to peg to) for the asset to be pegged at a 1:1 ratio.
an automated algorithmic process that attempts to maintain the peg while keeping the process (or contract) liquid.

"Wrapped": This is a method of achieving a peg and convertibility, among other things. It usually works by locking a collateral asset in a contract and issuing a new asset in equal amounts - the reverse on redemption.
For example, WETH can lock ETH in a contract and issue ERC20 tokens that are worth, or equivalent to, 1 ETH because the contract stands as a credible redemption window. This technique can help tokens migrate between chains without increasing the total supply. The intricacies of cross-chain migrations are beyond the scope of the question. Suffice it to say that issuing new tokens on the target chain usually involves locking assets on the source chain. The peg relies on a clear path back to redeeming the new tokens for the original collateral.
In summary, "wrapped" is one way among many to achieve a "peg".
Hope it helps.
Comment: Great answer. I just want to add that the utility of each is also distinct. Both are designed to maintain a 1:1 ratio between tokens. Wrapped tokens are used to either make a canonical chain's token conform to a certain token standard such as converting ETH to the ERC-20 compliant WETH or using BTC on Ethereum as WBTC. Pegged tokens are units of accounting used to maintain liquidity in use-cases like cross-chain bridges or perpetual trading, where for every 1 `token`, 1 `pToken` is minted.
Comment: Thank you, this make somewhat more sense now, however I will need to read this answer few more times to fully understand this in the layman's terms :D
Comment: In case it helps, some countries "peg" their currency to the US Dollar. For example, Cuba has a "Cuban Convertable Peso" that the banks trade for US dollars. Tourists are required to use them. They cost $1 and they can be redeemed for $1 before one goes home. The _method_ of the "peg" is a support system in the laws of the country.
Comment: That arrangement is a lot like a "wrapped" US Dollar.
Comment: Other methods of targeting 1:1 relationship with another currency or commodity are possible. For example, it can be a sophisticated trading algo that _aims_ for low-risk equivalence (rather than growth). There could be a basket of stocks, crypto, orange juice, whatever and constant shuffling such that the _target_ of 1:1 is supposed to be achieved.
Answer: This is what I understand.
Wrapped token: represents a token non-native to the blockchain it is presently on.
Pegged token: is not a thing. A wrapped token would be 'pegged to' a non wrapped token to preserve the value of the wrapped token.

To further elaborate:
Your question is linked to moving tokens from one blockchain to another.
When 1 ETH is moved from ethereum blockchain to say matic chain, it is 'locked' on the ethereum chain, and a new token in minted on the matic chain, lets call this wETH(read: wrapped ETH). This ensures total circulation of ETH does not change.
wETH is 'pegged to' ETH. This just means that the value of 'wETH' is the same as ETH at any given time. Once moved back, the wETH on the Matic chain is 'burned'(read : no longer usable ever) and the ETH on the Ethereum chain is unlocked.
Thus, tokens can move from one chain to another without any loss in value.
Comment: Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer).


What does the "Emergency stop" error mean?

Question: Emergency stop, what does it mean? How to repair?
Comment: a common cause is no \end{document}
Comment: Welcome, you have a serious probem in your code that lets LaTeX stop. You have not shown the reason. You can find the reason using [this simple algorithm](http://www.dickimaw-books.com/latex/minexample/index.html).
Comment: if you for example `\input` a file that doesn't exist then normally tex prompts for a different file namebut in batch mode it never interactively prompts so does an "emergency stop" The log file will show the error (you only see a summary in that screenshot). unrelated but the following bad box warning is almost certainly `\\ ` misused at the end of a paragarph,
Answer: Most likely you tried \input{texstudio_hy2940} and that file does not exist and you are running in \batchmode so TeX can not stop and ask for a different file name.
Look in the log file for the full error message.
The TeXBook says:

Sometimes an error is so bad that TeX is forced to quit prematurely.
  For example, if you are running in \batchmode or \nonstopmode, TeX
  makes an "emergency stop" if it needs input from the terminal; this
  happens when a necessary file cannot be opened, or when no \end
  command was found in the input document.
Answer: As mentioned by @geordie in the comment, a common cause is no \end{document}. So, scroll down and check that on your document.
_
Note:
I came here because of that, but did not read the comment. Just realize the answer that I'm looking is in the comment after I find the culprit from git diff. That is way I post this answer to help others like me.
Answer: Well, like others pointed, it can be caused due to myriad of reasons. Going to Log > Log file (it was in Log > Issues in above screenshot) is the way to get more hints about it.
One possible reason can also be that if some used package (say minted) which uses shell commands, and you have set the ComSpec environment variable to something other than cmd (like bash). Then that package won't work and emergencies in batch mode abound.


Connecting a DIY guitar pedal to a pedalboards power supply

Question: I am new to electronics and I am trying to build a DIY Fuzz Pedal. Before I construct it, I am trying to figure out how to use my pedal board's power supply with it instead of using a 9 volt battery. I am not sure of the parts I would need to get to make this work. Any help would be appreciated!
Comment: Go buy a cheap wall-wart....
Comment: Or even better, a benchtop power supply. Relatively inexpensive models are available at [circuitspecialists](https://www.circuitspecialists.com/bench-top-power-supplies), etc.
Answer: As a fellow musician, I applaud your effort, but must point out that the nature of your question leads me to believe you need a lot more information before attempting to build an electronic device.
A power supply (I assume you have a typical AC/DC transformer or "wall wart") and a battery are both voltage sources. As long as the battery or power supply can provide the required current and the voltage is correct, they are interchangeable.
But to address your question more directly, a guitar pedal (at least the ones I have) typically have a "DC barrel jack" which has a negative polarity. In other words, the polarity is the opposite of many other DC devices.

The connector on your power supply provides 9 volts, but the outer contact will be positive while the center pin will be negative.

You can see on a 9V battery that the smaller "male" terminal is positive. As long as the positive (outer) terminal of the power supply connects to the same power input pin on the device as the positive terminal of the battery, the polarity will be correct.
Comment: I always thought Boss and such did that just to make people buy their 'specialty' power supplies.  Now I think they also do it to be jerks.
Comment: I had an old Casio keyboard do the same thing. There are some potential reasons (https://electronics.stackexchange.com/q/230369/2028) but I definitely prefer positive polarity.


What keeps solids solid

Question: I'm having trouble wrapping my head around solids <insert physics based pun here>.  I vaguely understand that electrostatic force keeps my hand from passing through my desk (I don't fully understand this either to be honest, does my hand have a net charge or something?) but why doesn't that same force prevent my hand from sticking to itself?  Why is my desk shaped like a desk and not an unorganized cloud of desk molecules?  Basically What force is holding the things together?  Why doesn't that force also cause my hand to fuse to the desk?  If someone could explain it in simple terms and in complex terms with math and such that would be really helpful.  Naming what force this is (or what sub property of another force) would also help.
Comment: [Related question](https://physics.stackexchange.com/questions/9369/what-makes-matter-solid)
Answer: What you're asking about is the range of a force, and it's actually a very interesting concept.
The fundamental phenomena and their force laws
Physics has with some confidence divided the world into approximately four fundamental phenomena. You're most familiar with them as: atomic nuclei normally stick together, that nuclei sometimes fall apart (radioactivity), that like electric charges repel and unlike charges attract (electromagnetism), and that things fall down (gravity). The force laws that govern these phenomena have different scalings with distance: the first force is technically approximately constant across any distance, the second decays exponentially with distance, and the last two follow inverse square laws.
But those basic rules are only part of the story. The only one that this gives a good overall picture of is gravity, and that's because there are no negative masses to interact with the positive masses and mess with our description. It's kind of funny, gravity is kind of the asthmatic kid sister of these four fundamental phenomena, she is many, many times over the weakest: but over long distance scales with big complicated systems, she always wins. Her plans and machinations extend across the cosmological scale, way beyond anything that her other siblings can do.
Balancing charges, e.g. in the strong force
With the two other "strong" ones, the strong nuclear force holding nuclei together and electromagnetism, it's possible to have "charge balance" of different kinds. Electromagnetism of course has positive and negative charges; but let me tell you first about this infinite-range strong force, which has what we call "color charge": there are three charges (conventionally called "red," "green," and "blue," but the names are just names and don't correspond to any sort of real color in any real sense) and their anti-charges ("antired", "antigreen", "antiblue"). A given quark has one of these 6 charges, and the force particle ("gluon") that pulls them together has two such colors. So a red quark might "turn into" a green quark by "firing off" a red-antigreen "gluon" which can then be "absorbed" by a green quark, turning it into a red quark: the net effect of all of these interactions in quantum mechanics is this infinite-range "strong force" between these quarks.
Why don't you feel this super-strong force? In fact this force is so strong that it interacts with the quantum vacuum, a seething mass of particles being created for tiny fractions of seconds and then immediately disappearing. If you separate these two quarks by too far, there is more potential energy in their separation than it takes to create new quarks: so some quark-antiquark pair that the quantum vacuum creates for a tiny fraction of time, will find itself being torn apart into real existence by this overwhelming energy.
In fact the only particles that you finally see at scales the size of an atomic nucleus or larger are all "color-balanced"--either three quarks, one of each color ("baryons"), or two quarks: one of a color and one of its anti-color ("mesons"). But these mesons then create a new sort of force between two baryons: it's still kind of the same "strong nuclear force," but now it lives between two color-charge-neutral particles and it diminishes exponentially with distance. And that's how nuclei are held together.
Charge screening in the electromagnetic force
So the electromagnetic force has a similar way it falls apart, but it's much easier to understand because there's just one dimension of charge, positive vs. negative: that's it.
An isolated proton and an isolated electron will feel a very strong attractive force; two isolated protons will feel a very strong repulsive force. But if you let that proton and electron sit in a box together then that electron is likely to enter an "orbital" around the proton, where due to the laws of quantum mechanics the electron can't be clearly said to be at one place or another, but it's kind of one particle in a "cloud" of positions around the nucleus. Now that proton has become a "Hydrogen atom."
What has happened to the range of its force? It has dropped significantly! Over long distance scales, a proton will be pushed away by the proton in the hydrogen atom, exactly as much as it is attracted by the electron cloud of the hydrogen atom. It's only when you get very close that you notice the difference in the $1/r^2$ effects of the cloud versus the particle in the middle. This sort of change in effective electric charge due to configurations changing is called "screening" the charge, it makes its force appear weaker, as if seen through a screen.
Bonding
When many atoms come together, a lot depends on how the electrons rearrange themselves around the nuclei. The nuclei have almost all of the mass, so they don't move nearly so easily as the electrons do. Most of the electrons keep orbiting their respective nuclei in their various orbitals. Usually the electrons furthest out reconfigure in some way.
One nasty possibility is that an atom just steals the electron from another: this happens for example with the Chlorine atoms and Sodium atoms in table salt. Afterwards the two form ions which attract together like particles again. More common is if an electron assumes a "shared orbital" that bridges the two atoms, holding them together: this is called a "covalent bond" and the atoms inside form a "molecule". Inside a metal, the nuclei arrange together in what's locally a very periodic lattice of nuclei, and some electrons start to be delocalized, shared across many many atoms rather than just holding pairs of them together: this is called a "metallic bond".
And sometimes things just don't bond, they stick to each other through weak interatomic forces ("van der Waals" forces and "hydrogen bonds"), but it's really just this screened electric charge that's holding them together.
Anyway, the point is that this makes it hard to push these clouds through each other and creates minimum distances that they want to stay apart, because the nuclei and electron clouds start to repel really aggressively at any closer distance.
How these bonds make up you
So we've covered that atoms "take up" a (fuzzy!) ball of space because of their electron clouds, and that sometimes those balls are sort of "merged" via covalent bonding into these bigger things called molecules, where some electrons are really occupying a cloud around both atoms. This is enough to tell the difference between "these are two molecules pressed up next to each other" and "this is one molecule." I also need to tell you that the covalent bond is a lot stronger than the "stickyness" of molecules pressed up next to each other, so molecules at our scales pretty much always stay together -- there are things like UV light which can rip them apart (which, when it damages the DNA molecule, is why you can get cancer from too much UV light!) but for just pressing against your desk, molecules might be transferred but they are not leaving each other.
Beyond that: different molecules stick to each other stronger or less strongly. A good example, and very relevant to our discussion, is water. Now you know that water is a little asymmetric, looking kind of like a "Mickey Mouse" icon, and I can tell you why it's asymmetric if you really want.[1] But the point is that in this H2O molecule, this outermost electron cloud is attracted more to the big strong oxygen atom than it is to the two puny little protons that are bonded to it. It's still a molecule, it's still a covalent bond, it's still hard to rip apart: but there is a little bit more plus-charge near the side with two hydrogen atoms than the opposite side with the butt of the oxygen atom. This slight charge separation over a certain distance is called a "dipole moment," we say that water is a "polar" molecule.
It turns out polar molecules, because like charges repel while opposites attract, can stick better to other polar molecules than to nonpolar ones. They just can twist against each other into lower-energy configurations. So this makes water stick to itself, say, more than it sticks to a nonpolar thing like oil (which is made of highly nonpolar carbon-carbon and carbon-hydrogen bonds).
Cells and their walls
Your body uses this to great effect to create cell walls. So as we start to talk about "you are made up of organs which are made up of tissues which are made up of cells which are made up of organelles," you get to talk about the phospholipid bilayer around each of your cells. This is a thin membrane formed by two layers (bilayer) of molecules (phospholipids), each with a thick phosphate-containing "head" and two stringy fatty (lipid) "tails" that both jut out on the same side.
The trick? The "head" of this thing is polar, but it's covalently bonded to these tails which are these nonpolar hydrocarbon chains. In water, all of the hydrocarbon chains want to get away from the water, so these things naturally twist around to form surfaces where the polar "heads" point outwards and the nonpolar "tails" point inwards. We say that they "self-assemble" into a bilayer, literally the water would rather be around other water so much that it accidentally kicks these things together until the phosphate groups are on the outside--these, it doesn't kick so hard. You really have to imagine the microscopic world as a constant storm of particles bashing up against each other to understand this self-assembly process!
Then the cell will often embed all sorts of other junk inside these cool boundaries by giving that junk a fatty center with polar outsides, so that it wants to "stick" inside the layer. This might include a channel to let water in or out, or how the injector needles that malicious bacteria can use to infect your cells are embedded within their walls -- or any number of other things like that! Cells often have "hairs" sticking out that help hold water molecules nearby or sometimes help them crawl around their environments.
So when your skin is touching the table, it's actually a layer of dead skin cells and hairs and such, with lots of room for air gaps, touching the table. Even if your cells themselves touched, they probably have a lot of stuff around them which keeps their actual phospholipids from touching the cell. And even if those touch the table and some of them get left behind, the rest of the ones on the nearest cell will spontaneously want, in any wet condition (and your body is one big wet condition!) to "fix" that wall.
It's just added layers of complexity atop these basic ideas that "molecules stay together more than they stick to other molecules, and some molecules attract these other molecules with a different strength than they stick to those other molecules." If you can master those basic physics ideas, then the rest is biology.

It comes from a sort of strange situation where the outermost shell of the oxygen atom has 8 different electron-pairs and they all want to spread out symmetrically about the oxygen atom, so they spread out like the corners of a tetrahedron: and 2 of those pairs are wrapping these protons up, so those two are basically on the points of the tetrahedron, and no two points of a tetrahedron are 100% opposite each other.
Comment: Don't forget about the Pauli Exclusion Principle! It is important because it makes electrons not occupy the lowest energy states available and because of it two solid objects (usually) don't fuse together spontaneously.
Comment: This is a really interesting answer and I understand why my hand isn't passing through my desk but, I'm still confused about why my hand cloud doesn't fuse to my desk cloud, and why both clouds maintain their configuration.  my desk is made of wood but is there a similar "_delocalized_" electron sharing going on?
Comment: @JOJO: I mean, not in the same way that metals are delocalized, no. Once you understand that atoms "take up" a fuzzyish ball of space because of their electron clouds, and that sometimes those balls "sorta merge" via covalent bonding into molecules, you have enough to tell the difference between "these are two molecules pressed up next to each other" and "this is one molecule." I also need to tell you that the covalent bond is a lot stronger than the "stickyness" of molecules pressed up next to each other, so molecules at our scales always stay together.
Comment: I should really amend my answer with some of this stuff.
Comment: There, added a section. Does that help?
Comment: Yeah that makes more sense.  Is there some where  I can go to get a more visual representation of what seems to be 3 related but slightly different concepts?
Answer: It is indeed basically electrostatic forces that keep solids solid. They also keep atoms and molecules together, so the basic question is why some atoms (or molecules) clump together to make a solid and some don't. Even that is an oversimplification, because e.g water molecules are a disorganized collection (aka "gas") in the vapour phase, but if you reduce the temperature enough they clump together to make ice. The basic underlying idea is that they do what is energetically most advantageous: if the total energy can be reduced by forming a solid crystal, they will try to do that; but if the temperature is high enough, their kinetic energy will not allow them to "settle" in one place. The calculation of these things is difficult (and approximate) and it requires quantum mechanics: see e.g. Anderson's "Concepts in Solids" for that. Instead, people assume that there is a solid structure (generally a crystal, although there are amorphous solids, as well as glasses - which are very viscous liquids even though they feel "solid") and proceed to calculate from there.
Note that generally objects are electrically neutral, so there is no electrostatic attraction over all: your hands don't fuse together or to the table. But if you polish two pieces of something sufficiently well, so that when you put them together, the molecules of one piece are close enough to the molecules of the other so that they can "see" the inner structure, it's as if they are the same piece: they will fuse together. It's just that the molecules of your hands cannot get close enough to the molecules of the table for that to happen.
This is just a rough description using "poetic" language - things are more complicated than what I described, but I think the description above is accurate enough to be helpful.
EDIT: A large component of the stability of matter is the Pauli exclusion principle. Indeed, without it a lot of the things that you describe (sticking your hand through your desk e.g.) might very well be possible. I don't know if there is a better introduction somewhere, but absent that, the short section on the stability of matter in the Wikipedia article will have to do. It contains a reference to an article by Elliott Lieb that should be of interest, plus a reference to a 1968 paper of Dyson and Lenard containing a "rigorous" proof of the stability of matter (the article was published in 1968 and AFAICT is not available on line, but a Google search for "Dyson Lenard stability of matter" produced a number of interesting-looking results).
EDIT: According to Dyson, their proof was long and complicated and a "bad" proof, but its principal contribution was that it gave courage to Lieb and Thirring to come up with a much shorter and much better proof. See the review article by Lieb and the wikipedia article on Lieb-Thirring inequalities.
Comment: All chemical bonds (including metallic bonds) are basically electrostatic in nature: shared electrons holding nuclei together e.g. You are right about penetration I think: that's more Pauli exclusion than anything else, but I (deliberately) did not cover that in the answer: I need to do some research first. And of course classical physics is inadequate for explaining solids, let alone atoms and molecules. But Coulomb's law is still around in quantum mechanics and it very much affects everything that solids do.
Comment: Electrostatics deals with slow moving or stationary forces. Coulomb's law or electrostatic force deals with forces between point charges. I can't see how this has anything to do with with properties of solids or why they don't penetrate each other. Classical physics breaks down even for simple chemical bonds, let alone for a description of solids. They might play a role for ionic crystals like salt, but they don't have anything to do with covalently bond carbon based substances (hands and tables) or metals.
Comment: "amorphous solids, as well as glasses" may be wrong: glasses and amorphous solids might be the same thing. See e.g. [this SciAm article](https://www.scientificamerican.com/article/fact-fiction-glass-liquid/)
Answer: Solids are held together by chemical bonds. There are several types of chemical bonds and it is true that the underlying natural force is the electrostatic force (while  quantum effects dictate the way this force bonds atoms).
Your hand can pass through a table, but it would need sufficient energy to break the bonds of the material of the table.

What keeps solids solid


Why isn't the sample distribution of r normal?

Question: The sample distribution of $r$ is positively or negatively skewed if $\rho \neq 0$. However, according to the central limit theorem - the more samples you take from a population, no matter what shape the distribution is, the more normal your sampling distribution becomes. So why, despite the central limit theorem, is the sample distribution of $r$ not normally distributed?
Comment: Which $r$? What is $\rho$? You talk about skew - so variance is finite ... if it were not then CLT in its basic form does not hold.
Comment: You have a highly imprecise idea about the CLT.
Comment: The sampling distribution of $r$ is necessarily bounded by its limits $[-1,1]$. This bites, and will bite hardest when the underlying correlation is near $\pm 1$. The Fisher $z$ transformation atanh$(r)$ takes most of the the bite out of the bounds.
Comment: @Richard: I'm not exactly sure which *r* and *ρ*, since I have so little knowledge in statistics. Let's say we wanted to reject the null hypothesis *ρ* =0. We may take many samples of two scores X and Y, and compute the Pearson correlation *r* of them. The problem here is that when plotting the sampling distribution of *r*, we get skew if *ρ* =/= 0. Hence the Fisher *z* transformation. But we don't get skew when plotting the sampling distribution of the mean, explained in part because of the CLT. So what makes these different?
Comment: I get an idea what you mean after reading your remark. But shouldn't this be formulated more clearly in the question ..beginning with $X,Y$ and their true correlation $\rho$ (if this is what you mean) ...
Comment: Just to add that the sampling distribution of $r$ would depend of the joint distribution of $X$ and $Y$. For example, the original paper of Fisher(1915) - Biometrika, 10, 4 (May 1915), 507-521 - shows that the sampling distribution of $r$ when $X$ and $Y$ are jointly normal is the Bessel distribution, which however, under certain conditions, could converge to normal...
Comment: Some statistics *never* become Normal asymptotically, regardless of the underlying distribution.  The sample maximum is a well-studied example.
Answer:
according to the central limit theorem - the more samples you take from a population, no matter what shape the distribution is, the more normal your sampling distribution becomes.

This is incorrect in several respects. (I expect you've been told something close to this, but it's not the case.)

"no matter what shape the distribution is" ... not so. There are distributions for which the CLT doesn't hold (other limit theorems may apply).
"the more samples you take [...] the more normal your sampling distribution becomes" ... the central limit theorem doesn't actually assert this. It does happen (under certain conditions), but it's not really the CLT that says that. An example of a result that does say something (more or less) along these lines would be the Berry-Esseen theorem, which gives a bound on how far the distribution of the standardized mean can be from the standard normal distribution, and which bound decreases as $1/\sqrt{n}$.

So why, despite the central limit theorem, is the sample distribution of r not normally distributed?

The sample correlation statistic $r$ can be construed as a kind of (scaled) mean (especially if you define it with an $n$ denominator), and the CLT should apply to it. But the CLT is a theorem about the limit as $n\to\infty$; you have finite $n$. At finite sample sizes the distribution won't be normal -- indeed this should be obvious, since $r$ is bounded. The bounds will tend to make it skew as you move toward one or the other.
Indeed, even the effect you thought was CLT -- the one where increasing the sample size tends to make the sampling distribution of means more normal -- applies to $r$ too. As you take larger samples, $r$ does tend to be more nearly normally distributed in a very wide variety of circumstances.
You can investigate this fairly easily using simulation.
However, while it becomes more nearly normal as $n$ increases for a given population $\rho$, it is still generally skew at every finite sample size (when $\rho\neq 0$). The same applies when taking sample means from skewed distributions --- the skewness decreases with larger samples, but it doesn't go away.

But we don't get skew when plotting the sampling distribution of the mean

Not so! If the distribution you draw samples from is skewed, the sample means will also be skewed (but typically substantially less so):

As the sample size gets larger, the skewness in the sample mean will tend to reduce.
If we drew samples from a suitable distribution on $[-1,1]$, say a scaled-shifted beta, then as the population mean approached those bounds for a given $n$, the sample mean would tend to be more skewed (left skew for a population mean near $1$, right skew for a population mean near $-1$). But as the sample size increased for a given mean, the distribution would be less skewed. The situation is similar for the sample correlation.


Does the following complex infinite series converge or diverge?

Question: I'm currently tackling a homework problem that asks if the following series converges or diverges:
$$\sum_{n=0}^\infty \frac{i^n}{n+1} $$
Currently, I have attempted the ratio test to no avail, because I reach a final expression of $\lim\limits_{n \to \infty} \frac{i(n+1)}{n+2}$ which doesn't really help in determining convergence. Also, I have tried to think of similar series that could potentially be used to do a comparison test, but I can't think of anything that works. Any answers and explanations would be very useful and very appreciated!
Comment: Write down the first few terms: $$\frac{1}{1} + \frac{i}{2}-\frac{1}{3}-\frac{i}{4}+ \frac{1}{5} + \cdots$$
Comment: Hint: look at the real and imaginary parts as separate series.
Comment: @dxiv can you clarify what exactly is the "real part" of this series? To me, the element of the series is strictly imaginary.
Answer: $$\sum_{n=0}^\infty \frac{i^n}{n+1}=\frac{1}{0+1}+\frac{i}{1+1}+\frac{-1}{2+1}+\frac{-i}{3+1}+\cdots$$
$$=\sum_{n=0}^\infty \frac{(-1)^n}{2n+1}+i\sum_{n=0}^\infty \frac{(-1)^n}{2n+2}$$
Do you recognize the first sum from anywhere? Maybe the Leibnez Formula for $\pi$? What about the second sum? If we take a factor of $2$ out of the denominator, do you notice a famous series for $\log(2)$?
Answer: \begin{eqnarray}
-\log(1-z)&=&\int\frac{1}{1-z}dz\\&=&\int\sum_1z^n\\&=&\sum_1\int z^n\\&=&\sum_1\frac{z^{n+1}}{n+1}\\&=&z\sum_1\frac{z^{n}}{n+1}\\&=&z\sum_0\frac{z^{n}}{n+1}-z
\end{eqnarray}
set $z=i$, we have $1+i\log(1-i)=\color{blue}{1+\dfrac{\pi}{4}+2k\pi+i\dfrac12\ln2}$.


Can an investigator carry more than one weapon?

Question: The rule book doesn't say anything specifically about this (or I'm just missing it).  Does anyone know if an investigator can carry more than one weapon and if so, do you choose which weapon you're attacking with during your turn?
Answer: From the Attack Action section on page 9:

Attacking a monster is a common action investigators perform. The
  player selects one of his weapon or attack Spell cards and chooses
  a monster as dictated on the card. Alternatively, an investigator
  may attack a monster in his space using his bare hands.

So an investigator is allowed to possess multiple weapon cards.
Answer: There are as far as I  know no rules regarding how many weapons you can carry and you can choose which one you want to use.  There are though cards that will limit how much you can carry.
This had never really been a  problem in my games though since the investigators  usually are happy to even have one weapon let alone two.


BigSur Blurry Text on external monitor

Question: I have looked all over the internet and I have seen this issue popup all the time, but none of the 'fixes' seem to work for me.
I have recently switched from a pc to a mac.
I run 3x monitors off my computer and on PC I have had no issues what so ever.
I have a 2019 MacBookPro which is now running Big Sur. (I have recently formatted the computer also to start fresh after my switch from the PC about a month ago).
My initial 1080p monitors (hdmi to displayport) work perfectly fine on the pc, but on the mac I am having issues.
I use a Kensington SD4900P hub to connect all my bits and pieces to the mac.  Everything works fine other than the displays.
I thought they might be the monitors so I upgraded all three to the LG UltraGear 27GL850-B 27" thinking that Mac work with LG to create a 5k monitor that LG would be the way to go, but still nothing is working for me.
I have purchased a USB-C to DisplayPort cable to see if this helps, but nope, nothing there either.  The only difference with the cable running directly into the mac is I get a 'High Dynamic Range' option, which when ticked seems to work a bit, however, it does make my monitor really dull, which is a bit frustrating.
I have also tried resetting my SMC and also the following commands (all with a restart between them)
<code>defaults write -g CGFontRenderingFontSmoothingDisabled -bool FALSE
defaults write com.apple.Safari CGFontRenderingFontSmoothingDisabled -bool FALSE
defaults -currentHost write -globalDomain AppleFontSmoothing -int 3
defaults -currentHost write -g AppleFontSmoothing -int 0
defaults -currentHost write -g AppleFontSmoothing -int 2
defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO
</code>
Nothing seems to be helping.  I have already spent upwards of $3k (nzd) on trying to get this to work I really don't want to have to go and switch back to my pc for work.
Are there any other suggestions that I can try to get this to work?  It is also starting to give me a bit of a headache / sore eyes, which is not good as I stare at my screens all day.
I should also mention that my mac display is perfect.
Answer: So for my issue so far I have changed the view mode on the monitors from 'Vivid' to 'sRGB' and it seems to have sorted out the monitors a fair bit.
I will still try another cable, but for now, things are looking a lot better
Answer: Check the maximum resolution that is supported by the monitor cable. I had a similar problem as I was using an HDMI to miniDP cable which maxed out at 1080p.
Changing to a Display Port cable immediately resolved this issue.
In my understanding, you need a Display Port cable (version 1.2 or above) that supports higher resolutions (2k or 4k). Check out the image below for supported resolutions for different display port standards. Source link.

BigSur Blurry Text on external monitor


How to copy/paste text without formatting by default?

Question: I'm running Ubuntu 10.04 and I find it annoying that by default the copy/paste functionality also pastes the text format. Most of the time when I copy/paste text I only want to paste the ascii text without any formatting. Is there a way to configure that behavior?
Comment: Again a feature designed without UX. I am willing to bet style copying is useful to less than 5% of the users in less than 20% of cases. This should have never made it up to the default feature!
Comment: should be the other way around: right click "paste with formatting" for the rare cases when you want format as well
Answer: In fairly recent Ubuntus you can use Ctrl-Shift-v to paste plain text.
Comment: Anyone know if there's a way to make this the default behaviour?
Comment: Seams not to work whit kubuntu.
Comment: Works great on my Ubuntu 14.04 - what a relief to find such an easy solution!
Comment: Works on Manjaro though
Comment: how to swap the behaviours of Ctrl-Shift-V and Ctrl-V ?
Comment: Doesn't work anymore. (On ubuntu 21.10)
Answer: I use parcellite . It keeps a history of the clipboard.
Comment: CTRL-SHIF-V will do it without having to install anything...
Comment: I tried Parcellite and it seems to almost do what I want. The thing is that the Parcellite history saves the information in text only but the First copy I do stills contains the formatting. So I need to copy a string and before to paste it I have to click the Parcellite panel icon, then click the text I just copied, then I can paste it in text only.
Comment: I accepted this as "accepted answer" since there was nothing better. And it is A LOT faster than pasting to gedit first and then in my document.
Comment: @jmbouffard "since there was nothing better" Now there is, see the answer of teehoo, since using Parcellite.It sounds overcomplicated…
Comment: Parcellite *does* copy the style.
Comment: @MaxL. not if you use atlassian products...
Answer: I've found a way to achieve this after some searching online and experimenting with my environment.
You can create a custom shell script which you can then bind to a key shortcut in your desktop environment. I'm using Xfce on Linux Mint (which is based on Ubuntu). Xfce allows me to override Ctrl-C by simply defining that as the shortcut in Settings -> Keyboard -> Application Shortcuts, but I prefer using a different shortcut, Ctrl-Alt-C, so that I'm still able to copy with formatting in the rare cases I need to.
Here's how I did it.
Install xclip:
apt-get -y install xclip
I don't know about other desktop environments, but Xfce didn't like me using a pipe in the custom keyboard command, so I had to make a script with the xclip-line, which is then bound to my keyboard shortcut (Ctrl-Alt-C).
My personal habit is putting custom commands in ~/.bin and then adding that directory to the PATH variable.
Here's how you do that, if so inclined:
mkdir ~/.bin
echo 'export PATH=~/.bin:$PATH' >> ~/.bashrc
(Note that you will need to re-initialize your session for that change to take effect, meaning you'll have to log out of your desktop environment and back in again. See if it worked by typing echo $PATH in a terminal after having logged in again.)
I've then created the script ~/.bin/copy-without-formatting with the following content:
#!/bin/bash
xclip -o | xclip -selection clipboard

Remember to make it executable with the following line:
chmod +x ~/.bin/copy-without-formatting
Then, since I'm using Xfce, I've gone to Settings -> Keyboard -> Application Shortcuts and added a shortcut with the full path to the script, without variables or a tilde. So if my username were mrgaga, the string would be /home/mrgaga/.bin/copy-without-formatting. Then I've configured the shortcut.
Xfce activates the changes immediately when I've closed the window so you should be able to check if it works right away, without logging out and in again, at least if your environment is similar enough to mine.
I hope it helps.
Comment: Worked like a charm in Xubuntu 20.04
Answer: I don't know of a way to do it automatically. A workaround of course is to paste it into gedit  and copy it from there.
Comment: I've been using this workaround for a while but now I'd like to find a real solution. Thanks for the suggestion.
Comment: Another way (likely not secure) is to use your URL bar as a deformat tool. Most of the time it is easier to get to than launching another application.
Comment: I don't usually down vote since I find this counter productive, but definitely this is **not** a solution. At the best an awful workaround.
Comment: @AugustinRiedinger I agree this this only a workaround, but to say that it is not a solution implies that it doesn't work. Does it not work? Let me know if there is something broken.
Comment: You are correct, apologies because you received my anger toward this wrongly designed feature and your solution, though painful is perfectly acceptable.
Answer: In some places where, for some weird reason (looking at you Atlassian), ctrl+shift+v doesn't work, one could use this tool: CopyQ and then add a global shortcut to it, that overrides the paste without formatting behavior of Ubuntu (which sometimes might be forced to work in another way)
Answer: In my Ubuntu 20.04 focal (x86-64) Cinnamon 4.8.6 you can use Shift-Insert to paste text without formatting.


What can I use to hang an object on ceramic tile?

Question: I have attempted to hang a wall clock on ceramic backsplash using command mounting hugs. However, it falls periodically. What can I use to hang a wall clock that weighs approximately 1.5 lbs. thank you
Comment: I don't know that it is enough for an answer, but I've had good luck with using double-sided Gorilla tape to hang things on tile.
Comment: I would have suggested Command hooks if you hadn't already mentioned it. They make a lot of varieties with different weight capacities, how big have you tried?
Answer: It is common to drill through bathroom ceramic tile and its backing to install plastic anchors for screws for grab bars.
If there is a stud where you want to place the hook, then an anchor would not be absolutely needed, but you would need a long enough screw to reach 1 inch into the stud. However, you could drill a large enough diameter hole into the stud deep enough to receive the end a plastic anchor.
When drilling into a ceramic backslash in a kitchen you want to be careful not to hit electrical wires or plumbing. Be sure there is not a vertical plumbing vent where you want to drill, or water supply line, e.g., for a refrigerator ice maker or pasta pot faucet.
Even if you have no reason to suspect wires or pipes, and you proceed with drilling, drill just barely through into the space, then pull the drill out and probe through the hole with a wooden dowel or a screwdriver to make sure the space is open.
Alternatively, you could just glue to hook to the tile.
Answer: Easiest way is to use silicone caulking or like substance.   Silicone will hold up 1.5 pounds quite easily and can be cleaned off ceramic tile completely.   And can be cleaned off clock, yet it may stain the back.
Answer: Drill a 1" deep hole into a grout line (or at a corner between 4 tiles) and use a simple plastic anchor and screw hook.

For a 1.5lb wall clock ... You don't need a tile bit (use the grout line)  You don't need a joist.  You don't need to drill deep enough to hit any wires or pipes.  You don't need to rely on command strips or glue.  The tile cement and backing board will very nicely hold a simple plastic anchor.  (Don't use a drywall anchor or anything fancy with ribs etc.).
If you want the clock in a very specific location that is not on a grout line, it gets just a bit more complicated.  Buy a tile bit for your drill and use youtube to learn to use it.  Not much to learn, just how to get it started without dancing or damaging the tile.
Answer: If you don't want a hole in the tile, get some hooks:

If they're adhesive, remove the adhesive on the back, and use some MS Polymer caulk like Bostik MS118 to stick it to the wall. This has excellent adhesion to tile.
If you use a hook that is designed to be mounted with a screw, make sure it looks like the one above, with the hook on the bottom. If the hook is on top, like these:

... then it will have a lot more leverage to pull the hook off the tile and unglue it.