What is the 127.0.0.2 IP address for?

Question: I'm running the example in hiredis, which is using 127.0.0.2 as the Redis server IP, and it is running properly. Actually, the redis server is running on the same machine. I know that 127.0.0.1 is the IP address of lo, but how about 127.0.0.2? Is it the same as 127.0.0.1?
Answer: Yes:

http://en.wikipedia.org/wiki/Loopback
https://en.wikipedia.org/wiki/Localhost

IPv4 network standards reserve the entire 127.0.0.0/8 address block for loopback purposes. That means any packet sent to one of those 16,777,214 addresses (127.0.0.1 through 127.255.255.254) is looped back. IPv6 has just a single address, ::1.

Various Internet Engineering Task Force (IETF) standards reserve the IPv4 address block 127.0.0.0/8, in CIDR notation and the IPv6 address ::1 for this purpose. The most common IPv4 address used is 127.0.0.1. Commonly these loopback addresses are mapped to the hostnames, localhost or loopback.

or from the RFC itself:

RFC 3330 - Special-Use IPv4 Addresses

127.0.0.0/8 - This block is assigned for use as the Internet host
loopback address.  A datagram sent by a higher level protocol to an
address anywhere within this block should loop back inside the host.
This is ordinarily implemented using only 127.0.0.1/32 for loopback,
but no addresses within this block should ever appear on any network
anywhere [RFC1700, page 5].

For fun, try by pinging:
$ ping 127.127.127.127
PING 127.127.127.127 (127.127.127.127) 56(84) bytes of data.
64 bytes from 127.127.127.127: icmp_req=1 ttl=64 time=0.110 ms
64 bytes from 127.127.127.127: icmp_req=2 ttl=64 time=0.065 ms
^C
--- 127.127.127.127 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.065/0.087/0.110/0.024 ms

Comment: @CMCDragonkai  127.0.0.1 and 127.0.0.124 may be on the same interface but they are not the same address. One might use an uncommon ip like 127.0.0.2 if one wants to use set up a service on a common port and not interfere with other services that may be listening to that same port on 127.0.0.1
Comment: @SilverSkin Would you mind explaining what you mean? The only difference between what's in answer and what's in Wikipedia now is that they (correctly) excluded 127.0.0.0 and 127.255.255.255, which are network / broadcast addresses. The gist is still the same - 127.x.x.x == 127.0.0.1 (except for 127.0.0.0 and 127.255.255.255, which is expected on any /8 network).
Comment: Need to mention that it is not the same in OS X, which only 127.0.0.1 route to loopback. See [here](http://superuser.com/questions/458875/how-do-you-get-loopback-addresses-other-than-127-0-0-1-to-work-on-os-x).
Comment: So there's no difference between binding to 127.0.0.1 versus binding to 127.0.0.124? So why does the hiredis bother with 127.0.0.2, if it's the just the same address? Also what happens if you did send a message to 127.0.0.0?
Comment: The Wikipedia page has since changed, and now says "although any address in the range 127.0.0.1 to 127.255.255.254 is mapped to it", rendering the gist of this answer in direct conflict with Wikipedia.
Comment: You seem to have answered the question "are all `127.x.x.x` addresses loopback addresses?" and the supplementary question "is `ping` listening on all my machines addresses?". However the question is "Is `127.0.0.1` the same as `127.0.0.2`?"
Answer: I will answer each of your questions below, with references and examples. It is not as simple as Yes or No.

"Are all 127.x.x.x addresses restricted to the local machine?" Yes
"Are all 127.x.x.x addresses bound to the lo interface" Yes
"Are 127.x.x.x addresses routed over the network?" No
"Are all 127.x.x.x addresses the same?" No (depending on operating system)

127.0.0.0/8 - This block is assigned for use as the Internet host    loopback address.  A datagram sent by a higher-level protocol to an address anywhere within this block loops back inside the host.  This is ordinarily implemented using only 127.0.0.1/32 for loopback.  As described in [RFC1122], Section 126.96.36.199, addresses within the entire 127.0.0.0/8 block do not legitimately appear on any network anywhere.
— RFC5735 Emphasis mine.

"Is 127.0.0.2 the same as 127.0.0.1?" NO According to rfc5735 it may be, but it does not have to be. This is an implementation defined behaviour. See your operating system manual. In any case the whole range is reserved, and must not be routed over a network.

While 127.0.0.1 to 127.255.255.254 are all local addresses bound to interface lo. They are not the same. You can use each address to bind a different service onto the same port. E.g 16 Million web-servers on port 80, only accessible from the local machine (If you don't run out of memory, or other resource first)
I have just set up a docker service to bind to 127.0.0.2:80. I have then added an alias to /etc/hosts. Now I can connect to it via http://myserver, but not via http://127.0.0.1 or http://localhost. However it is only available to this machine. As it is only on the lo interface.
I then set up another docker service to bind to 127.0.0.3:80, and a python service on localhost:80 and another on 127.0.0.4:80.

This may not work on all operating systems.
I am using Debian(9) Gnu/Linux, Linux kernel 4.9.0-3-amd64. Some OSs may treat all addresses 127.0.0.1 → 127.255.255.254 the same. Some may only work with 127.0.0.1.
Note services such as ping will be listening on 0.0.0.0 (ipv4) so ping 127.127.127.127 will be received by the listener, because 127.127.127.127 is one of your addresses. However if a service listens on a specific address, then you need to use this specific address to connect to it (Depending on operating system used).
see also

https://serverfault.com/a/157508/111338
Comment: Let us [continue this discussion in chat](http://chat.stackexchange.com/rooms/66501/discussion-between-ctrl-alt-delor-and-ramhound).
Comment: It took me about an hours worth of research but I was able to finally understand what you were attempting to convey.  I have updated the quote from the Wikipedia article in the accepted answer.  Since the quoted statement has changed over the years, i quoted a different statement, to restore that original information the answer contained.
Answer: Not a comprehensive general answer (there's one already). This answer of mine shows an example where 127.0.0.2 was used to solve the problem.
Extract:
The OP there attempted to test some software in a case when its connection to a server was rejected. This was done on the server by a temporary iptables rule that rejects all traffic from the client IP. The client was immediately able to "see" the connection was rejected.
The problem appeared when this person moved the server software to the same machine as the client and tried to use loopback interface. The rule was set to block communication from 127.0.0.1 but the information a connection was rejected underwent the same rule and never got to the client software which hanged (presumably till timeout).
The solution was to use 127.0.0.2 as the server address and set a rule that rejects connections to it. The information about a rejection went to 127.0.0.1 and was able to pass to the client software.

What is the 127.0.0.2 IP address for?


What are all things you will check in API Testing? (Assuming you are a manual software tester)

Question: This is an interview question. What points are they looking for when asking this question, you are using REST API.
Check for errors, data accuracy, right status codes?
Comment: There is no such thing "testing", in the vacuum. Testing happens in a context and a tester has a testing mission. For your question (and for the interview), I suggest specifying what is the testing mission: What information do you want to extract, what risks do you want to explore, etc.
Comment: Lee Jensen, thanks a lot! this was really helpful. Appreciate it. I'm new to this interview process, and sometimes I feel so lost.
Comment: Can you give a bit more context? Is this a question you have been asked in an interview?
Comment: This is the question that was asked in the interview. Should I first ask the interviewer "Is there any API documentation?"
Comment: Hey Chris! Seems like you are asking a lot of interview questions. To me, that's fine. The community would like to see more context. To help get answers to your interview questions, can you add how you answered them in the interview? This way, we can help pinpoint gaps or provide alternate ways to answer.
Answer: First, I'd recommend to not assume. QA means "Quit Assuming." Assumptions lead to miscommunication and ambiguity, which leads to bugs in the software. Part of being a good tester/Quality Engineer is to ask questions and remove areas of ambiguity. The more context you can get, the better and easier your job will be.
Interviewers tend to give broad/general/open-ended questions, so it's up to you to ask for clarification. Some interviewers ask questions because they are in need of certain skill sets immediately. So, this allows you to pry into what problems they are having. If you are ever confused by a question an interview asks, you can and should ask them for clarification.

What are all the things you will check in API Testing?

All is subjective. Unfortunately, when testing software, we really can't ever get to "all." How can we find all the bugs? We can't; there's no way to guarantee we find them all. How can we find all the test cases? We can't. This is why context matters. All we can do is verify as much as possible in a given time, using testing techniques, and verify against the requirements / acceptance criteria. Requirements are the rules you judge against. And yes, at times, these rules can be wrong.
Is the interviewer giving you an example API? For example: "Here is an API for a weather app." Or, an example of their own API?
Ok, back to APIs specifically.
Check for errors, data accuracy, right status codes? Yes! "Check for errors" is a very generic answer. What errors are you looking for? Get more specific here.
Data accuracy is also generic. How are you verifying the data? Are you checking for data inputs or data returned? APIs utilize both input and output data.
right status codes. Yes, but what context? What does "right" mean? Are you verifying client-side status codes or server-side status codes? Both? What happens if you get a "status 200 with a message: not found?"
As an interviewer, I'm looking to see if you know the difference between 400-level and 500-level status codes. What are the most common status codes? Do you understand HTTP verbs/methods like GET, POST, PUT, HEAD, DELETE. This is bare minimum.
How are you interacting with the API? Are you using the UI/Web-app in the black-box fashion? Are you using tools like Postman or Insomnia? Accessing the API via code for integration testing or contract testing?
What does an end-to-end test look like for an API? Is the API performant? (See my answer to your performance question as it applies to APIs). Are you sending requests and receiving responses in a timely manner? How are errors handled? Are errors logged? Does the status code make sense with the response? What does the API documentation look like? Are you able to look in the codebase to see status codes and responses? Is authorization needed to use the API? What happens when authorization is not provided? Are there different types of users and different levels of user permissions to consider?
Will you test the API by itself as a single endpoint? As an integration test with the UI, database, messaging brokers/queues (ActiveMQ, RabbitMQ), event streams/processors (Kafka), or as part of other API endpoints? Is the API used in a distributed system? Are you checking for race conditions? How are async messages handled?
All these questions can be turned into test cases and test strategies; I'm just forming them as questions for areas to learn and consider as APIs can get very complicated very quickly.


Using 1Gbps internet connection with 10/100Mbps LAN Chip

Question: Would it be a problem if somebody subscribe for an 1Gb internet connection, but have 10/100Mbps LAN Chip in one of its computer? I have wondered as the provider's site shows 1Gb Card as a minimum requirements, i5/i7 processor, 4GB RAM, which are not an option on the computer.  Is it a problem which will not enable the computer to connect to the internet, or it will be "only" slower?
Comment: The provider side wouldn't have a minimum requirement NIC card for the subscriber. The person who installs the service may inform the subscriber about getting a newer NIC, but that's about it. The subscriber would simply be limited to 100 Mbps download speed.
Answer: That wont be an issue the only downside is you wont be able to make use of its full potential.
Answer: It will be "only" slower, if you want to put it that way.
However, what doesn't make sense here is buying a gigabit connection only to use it with a slow network card. Even then, sure, the computer will be able to connect to the network and browse at 100mbps, since the protocols are backward compatible.
However, as Ron Maupin has pointed out, it is possible that the equipment may not support slow speeds, but it is unlikely for consumer equipment.
Comment: The are only backward compatible in some circumstances. There are newer devices that do not support some of the slower speeds.
Comment: @Ron Maupin, can you cite a source? Also, in that case I wonder why the other answer is so upvoted
Comment: I have no idea about the votes, but I know, for instance, that some network devices, e.g. Cisco Nexus, no longer support 10 Mbps for some ports, or 10 and 100 Mbps for others. It is also not confined to Cisco. Something like this has come up before on [networkengineering.se].
Comment: @Ron Maupin, I have added an edit.


A Schauder basis of Schwartz space.

Question: It is well-known that hermite functions $\{h_n(x)\}_n$ form a Schauder basis of the Schwartz space $\mathcal{S}(\mathbb{R})$.
Let $\alpha, \beta \in \mathbb{R}^*$. Does the 'modified' family of functions $\{\alpha h_n(\beta x)\}_n$ still form a Schauder basis of $\mathcal{S}(\mathbb{R})$ ??
Comment: Did you try the automorphism on $\mathscr S(\mathbb R)$ defined by $T(f)(x)=f(x/\beta)/\alpha$?
Comment: It is so clear now. Thank you so much.
Answer: COMMUNITY WIKI: VAGUE ANSWER, USE AS A DRAFT
I vaguely remember a "dilation formula" or "linearization formula", something like that, unfortunately I forgot the exact nomenclature. It reads
$$
H_n(\beta x) =\sum_{j=0}^n a_{j, n, \beta} H_j(x),$$
for $\beta >0$. This is relevant here.
Indeed, you can forget about that $\alpha$, it is irrelevant, if a set is Schauder then $\alpha$ times that set is still Schauder. The problem is that $\beta$. The formula I vaguely remember might take care of that.
Comment: Thank you for the answer, it was helpful.
Comment: Oh really? I'm glad to hear that, but the comment of Jochen provides a quicker answer to this problem. The linearization coefficients may be useful for something else, anyway. I have been skimming the book of Askey, "Special functions and orthogonal polynomials". The chapter called "Lecture 7" is dedicated exactly to those. But I could not locate the exact formula you need here.
Comment: Yes it is ! thank you so much for the aded suggestions, it's gonna help a lot

A Schauder basis of Schwartz space.


Can you replace chemical fertilizers with organic ones in a way that doesn't compromise food security?

Question: Environmentalists advise us against chemical fertilizers and tell us to use organic alternatives instead. Sri Lanka tried to do that, and now its economy is in a total shambles (not only because of that, but partly because of that): they had crop failures and were forced to buy food from abroad, depleting foreign reserves. It also hurt the country's tea and rubber exports. Is it really such a good idea after all?
Comment: Based on [this q on Skeptics.SE](https://skeptics.stackexchange.com/q/53220/38403), it's my understanding that the problems in Sri Lanka stem from the attempt to make the transition with no training for farmers and no understanding of the proper way to transition farming methods.
Comment: You will find the objectively measured nutrients ( N, P, K ) , in organic fertilizer is inadequate for substantial crop production.
Comment: The situation in Sri Lanka may be more complicated than reported in the media. I wonder whether the right type of organic fertilizer was used. Did it have all the requirements needed by the crops and did the farmers have enough fertilizer?
Comment: it's possibly more helpful to think about it as "industrial farming" or "chemical farming"... there's a whole interlinked web of systems that go into the "green revolution" modern farming systems. Similarly with organic and especially sustainable farming techniques. Although worth noting that agriculture is traditionally extractive and short term, we have few example of agricultural societies lasting more than a millenia and the major one was deliberately exterminated (the British invasion of Australia). Some useful terms to look for are "regenerative farming" and "permaculture".
Answer: Recycling. Processing sewage is most effective means recovering rebuilding fertilizer use. Human reuse of excreta is thousands of Yeats old.
China, Japan, Korea did so, China in particular did so foe four millennia. Collapse of Rome eliminated sewers as method of waste disposal for centuries,  unlike Medieval Europe where waterborne diseases proliferated due to collapse post Roman hygiene. China's waters were drinkable up until 19th-20th century. Documented in RF Kings book,"Farmers for Forty Centuries "
Answer: Organic fertilizers are in my opinion a very good idea but require some development to make them economically feasible. The idea is that whatever nutrients are in crops don't disappear but will be in animal/human excrement. It's a 100% efficient process since you can't make matter appear or disappear out of thin air (leaving aside nuclear processes that don't really happen here). So food security won't be compromised, we will have enough of these organic fertilizers for 100% circular economy. We just need to learn to use the correct amount.
If every farm has land for growing crops and a number of animals for meat and milk, most of the crops goes to animals and a very little amount to humans, as animal agriculture is very inefficient. It makes sense to use that animal excrement as fertilizer. Only very little of the nutrients is lost (the amount that humans eat), so some nutrient replacement is necessary using chemical fertilizers.
In today's world, however, there are farms that specialize in growing crops and farms that specialize in meat and milk. It's more economical that way. For example, automated milking machines make sense only if there are a lot of cows, so we will have concentrations of cows producing heavy excrement with some nutrients, and long distance away are the plant-producing farms that have no animals. Unfortunately, transporting that excrement to farms that grow crops may not make sense, since the journey would be long, the product is so heavy and fuels are expensive (and for long journeys battery electric vehicles don't make sense). A solution could be to somehow make two waste streams from that excrement, one that is poor in nutrients but could be used for biogas for example, and another that is rich in nutrients. I think we don't have economically viable commercial solutions for making that nutrient-rich stream yet.
Another problem is that due to limited ability to grow crops on finite land and increasing population and wealth in developing countries, it is imperative that most of the population of this planet goes vegan (not necessarily fully vegan but 70% vegan at least). Without that, we can never produce enough food to feed all starving people. Animal agriculture is just way too inefficient. In this case, the nutrients in human excrement are in the wastewater. So wastewater treatment plants should in the future extract those nutrients and make recycled fertilizer out of them. Otherwise we will lose all of the nutrients.
Nitrogen is something that can be included in fertilizers using chemical processes, no sustainability problems there. Air is mostly nitrogen, and nitrogen can be extracted from it by making liquid air and distilling it. To fix that nitrogen, we need hydrogen, but fortunately that can be made from water and renewable electricity using electrolysis. The main problem in chemical fertilizers is that we have limited phosphorus reserves, so a circular economy would really help there. Fortunately, what phosphorus reserves we have go a long way, so developing solutions to make organic fertilizers make economical sense will have enough time.
I suspect, though, that the final solution will not be to distribute human or animal excrement on crop-producing fields directly but rather make a dense nutrient-rich "semi-organic semi-chemical" fertilizer from recycled nutrients, stopping most phosphorus mining.
Comment: Your answer would be improved by a whole truckload of citations
Comment: But with the current technology, we can't do without chemical fertilizers, can we? They say we don't have enough manure to keep crop production at its current levels. We would have to keep more cattle and grow more grains to feed them (doesn't sound sustainable)
Comment: Nitrogen is not a problem as substance, but it is very much an energy problem in terms of sustainablilty. I crunched numbers some years ago, and came to the conclusion that about 1/6 of the worldwide fossil gas consumption goes into the production of nitrogen fertilizer. Nitrogen losses to the air or ground water are a concern for organic fertilizers as well, a quick googling told me an order of magnitude of about 10 % (for fermented manure), but with a range that can be as low as 2 %, but also as high as 40 %. (It still may be most effective to let parts of  the nitrogen of the manure ...
Comment: ... be converted to N2 which escapes into air during fermentation and instead have biological nitrogen fixation by e.g. mixed crops with Fabaceae (legumes/peas/beans).) However, right now, IMHO the energy aspect is not to be neglected.
Comment: Yes, today natural gas is massively used to make hydrogen, to make ammonia, to make fertilizers. However, we need to look into the future. There's massive land wind power resources in many countries (like Finland), and even more massive offshore wind resources practically everywhere. Wind power is already competitive. Green hydrogen projects are popping up all the time. It won't take long until green electricity produced ammonia is used to make fertilizers.


Java or Jython code to connect to a unix server and take the logs populatinmg while running a request hitting a webservice

Question: i am using parasoft test tool to automate my webservices testing .basically i hit a wsdl and run the operations related to that wsdl . i do see the logs for the particular operation by connecting to a server running on unix using putty . i wish to automate this task too as basically parasoft supports java and jython extension tools ... i dono how to connect to this server since my coding knowledge is nil and how to grep the logs from a particular file ..can anyone share me the code and help me please
Answer: Here is a link to create a ftpClient in Java
http://commons.apache.org/proper/commons-net/examples/ftp/FTPClientExample.java
Answer: This question lists a couple of libraries to use SSH from Java: SSH library for Java
A simple solution would be to create an SSH connection and run tail -f + path to the logfile on the remote side.
You can then read the command's stdout to get the log in your test.
Note that the remote command doesn't terminate. You have to close the connection to kill it.
You may find this to be too brittle. In my own projects, I start the server locally from the tests with a local database that I set up from the tests as well. That way, I have full control over the environment.
If that doesn't work well for you, the next step would be to write proper unit tests. You can use an appender in your logging framework to collect the log messages that you're interested in. Those tests will be much more stable, reliable, easier to maintain than what you have now.
Comment: why the `-f ` parameter if you are going to kill the connection?  Basically `cat file` the log of `tail -100 file` would be better.
Comment: @user2310289: He just wants the log entries written **while** he runs the test.


Video keeps saving single frame

Question: I have been trying to figure out the video making in blender. I have a green screen and decided to film myself in front of it. I uploaded the video into blender in the compositing category. Once I filled my green screen in with a background I was ready to save the video I have created. I Have the file format as an xvid but it still only saves the single frame of the video I am paused on. Yes, I am new to blender. Any attempt of help is greatly appreciated!
Answer: If you're talking about exporting, you'll have to press the "animation" button.
Comment: Thanks for helping. I did press the animation button, however I didn't even think about exporting it. That helped me save the video to my computer, but I have another problem. I try to play it in Windows Media player but it is a DAE file extension. What could I export it with so its just a video I could watch or upload to youtube with?
Comment: Whoops never mind. I figured it out! Thanks for the help!

Video keeps saving single frame


Is photon truly a photon only in vacuum?

Question: To me, it seems like photon becomes "heavier" in different mediums, as its speed slows down. And, as I know, only particles with mass travel slower than the speed of light.
Answer: To answer your title, "Is photon truly a photon only in vacuum?", yes indeed this is true. In a medium, light is a quantum superposition of pure photons and excited matter states.
You are absolutely right that only particles with nonzero rest mass are observed at relative speeds less than $c$. A stronger statement ican be made: a particle's rest mass is nought if and only if it is observed travelling at a relative speed of $c$ and it is massive if and only if the observed relative speed is less than $c$.
Light in a medium has a rest frame - i.e. one travelling at speed $c/n$ relative to the medium, where $n$ is the medium's refractive index. So, one can calculate the light's rest mass by working its energy in this frame out. I show how to do this in my answer here and an optical light quasiparticle in a typical medium $n=1/5$ has a rest mass of about $m_0=3\times 10^{-36}{\rm kg}$ or about 4 millionths of an electron mass.
Comment: @another'Homosapien' No - you need to use relativistic velocity addition: two collinear velocities $u,\,v$ add according to $w = \frac{u+v}{1+\frac{u\,v}{c^2}}$. This means that no finite sequence of finite boosts can ever give rise to a relative velocity of $c$.
Comment: Is this only one interpretation by the scientific community or is the idea that the light travels at c in a medium but interacts with it and therefore appears to slow down not valid at all?
Comment: @Jaywalker  se my answer for the present day physics models of light and photons.
Comment: @Anna pretty much explains it, but in essence yes, light only travels at c unless it is interacting. If you see light is because some photons were traveling at c before they hit you. They may have been coherent or incoherent (same or different phases), and may have interacted a lot with the medium or not (and if they did would have effectively slowed down their passage through the medium, and even been dispersed in freq with non elastic collisions).
Comment: Another case: suppose I am travelling at speed c/2 and another particle (say proton) moves with speed c/2 in opposite direction. Relative to me, that particle is moving at speed c. Wait, did I just make that particle massless?
Answer: One should not confuse light with photons, in the same way that one does not confuse the ripples in a pond with the molecules of water. Ripples and molecules have different physical behaviors and obey different boundary conditions, nevertheless a stone thrown in the pond will generate ripples, and molecules will move back and forth to pass the ripple on, similar to the wave in a stadium.  where people are not the wave.
Light emerges in a mathematically complicated way riding on zillions of photons . Photons obey a quantum mechanical Maxwell's equation and thus the emergence of collective effects as light is explained. In this image pictorially for a special case one can get an intuition of  how light emerges from photons.

Left and right circular polarization and their associate angular momenta

The photons, in the middle, have only spin + or - in their direction of motion. They build up the polarization of the wave.
With this as physics background:

To me, it seems like photon becomes "heavier" in different mediums, as its speed slows down. And, as I know, only particles with mass travel slower than the speed of light.

It is not the photon that becomes heavier, it is light as explained in the other answer. The photons in a transparent medium travel longer paths due to quantum mechanical  elastic scatterings with the lattice of the medium and still keep coherence so as to transfer images. Longer paths explain how their velocity is still c while the emergent light slows down.
Due to the angles introduced by the elastic scattering of the constituent photons in transparent media, an invariant mass for the light, which is a conglomerate of photons,  is generated as described by Rod Vance in the other answer. Similar to the pi0 having mass but decaying to two photons with an angle between them to balance energy and momentum, which is what mass is in special relativity.

Is photon truly a photon only in vacuum?

A photon is always in a "vacuum" unless it is interacting. If the interaction is elastic it retains its energy and momentum .


How do I calculate the amount of heat transfer to agitated air?

Question: Suppose my room is x degrees C. The air in my AC ductwork is a constant y degrees C and is blowing at z m/s. We assume there is no heat transfer from the outside. How can I figure out how long it will take for my room to reach the desired temperature?
Comment: That depends on what's in your room. You don't just have to cool the air down, but also the walls and whatever else is in there. If there are a lot of people in the room, you have to assume that each of them is a 100W heat source. Then there are the lights and other electric and electronic equipment.
Comment: Is the room closed with respect to airflow going out? There is a sense in which the room is basically a tank of air with an inlet pipe (and possibly fixed wattage heaters if there are people present) and could potentially be modelled as such, given your assumption of perfect insulation.
Comment: Too many missing details.  Is this really a problem which you are struggling to solve?  Or is it a passing curiosity?
Comment: @RobertdeGraaf Yes.
Answer: You are missing some key params, like volume of the room, humidity or energy consumption.
Simplifying the assumptions:
Steady state conditions
1D heat transfer from AC to room
Fluid properties are uniform
Adiabatic system
0 thermal radiation (Shades drawn)
Cooling happens everywhere simultaneously
No new energy enters or leaves system

The last one is the least likely, since the AC is bringing in energy to power it, and heat will be lost to surroundings heating the room.
You need Newton's law of cooling, since you say temps are constant and adiabatic system.
Since you give z in m/s, I would propose assuming an area, A, that the air flows through. You then need to assume that the system expels mass at an equal rate.
Then you can say:
q/A = h * deltaT
Where q is the convective heat flux and h is convection heat transfer coefficient  (assuming air). I don't know how you would get q without statements about the energy the AC needs, but this is solvable if you determine a relationship between h and z, through either AC manufacturer or estimate (text gives h = 10.9 W * s^0.8/m^2.8 * K * z^0.8 for a similar problem…determining that can be involved). Then you can determine q, the energy needed.
Using q would be more accurate, since you're looking for change in internal energy over time, dU/dt. Since U is only dependent on the volume, density (rho), specific heat (c) and temperature of the solution (assuming air), you get…
dT/dt = q/(rho * V * c)
Then you use newton's law of cooling,
T(t) = Ti + (T_AC - Ti)exp(-kt)
Solve for t.
This again is my assuming a number of key params: Volume of room, quality of air/humidity, properties of fluid (assuming air), and a relationship with velocity from your manufacturer as well as the AC's opening area.
There are complicated ways to go about driving at this accurately, but even those require simulations.
Comment: While this would be a useful comment, I'm not sure it qualifies as an answer
Comment: Really not finding your comment qualified @JohnRennie


Saving spot color channel file as a TIFF in Photoshop

Question: Is there a way to save a photoshop file as a TIFF with multiple spot channels in CMYK mode?
Answer: Yes. merely tick the Spot Colors option when saving the Tif with Photoshop...

Whether or not those channels are visible, accessible, and separate properly in anything other than Photoshop may be another matter.
In most instances, saving as a .PSD, .PDF, or .DCS2 is best if you have spot channels.
Answer: yes - save the spot colours as new channels - you can then bring them into illustrator and they'll be there as spot layers.
Comment: Just note that if the plan is then place that Illustrator file into a layout application, such as InDesign or XPress... a Tiff will not "round trip" any spot colors from Illustrator. You need psd, dcs, or pdf for round trip spot colors.


How to install an HP Deskjet 3000 J310 Printer on Linux Mint 10

Question: I've tried searching for the correct driver but Linux Mint 10 does not include one for the HP Deskjet 3000 J310 printer.
Answer: I tried to install the correct driver on linux mint 10 last week and I have a HP Laserjet 1200. I think you don't have to install anything. Just look if you have the HPLIP package.
On my desktop, the ubuntu version was installed automatically, but it works fine.
So you can just add the printer, without installing anything.


What is in 'stealth paint' to absorb radar, and how does it work?

Question: What is in the 'stealth paint' that coats stealth bombers e.g B-2 spirit, and stealth aircraft, e.g SR-71, and how does it absorb/deflect radar?
Comment: *Reflecting* radar is exactly what you **don't** want stealth paint to do...
Comment: Oops, I thought it reflected it!
Answer: Stealth paint doesn't reflect radar, it absorbs it by converting it to heat which is absorbed and dissipated by the airplane's structure. Paint is only one of several Radar Absorbing Materials available.
The paints known have suspended balls of ferrous material which absorb radar energy at certain frequencies and convert the radio energy into mechanical vibration, which causes friction and in turn heat.
Comment: Reflecting is fine, as long as it scatters the reflection.
Answer: Formulae for stealth paint seem to be closely guarded secrets. In electromagnetic test chambers we use radiation-absorbent materials (RAM) to absorb stray fields. I have seen stealth paints offered to motorists wishing to avoid police radar speed traps (some hope there!). They appeared to be ferromagnetic powder mixed with some kind of binder (back in WWII the Horten brothers experimented with carbon soot in glue). Certainly, ferromagnetic materials tend to be less bulky than other RAM solutions and their operational bandwidth can be optimised by tailoring the formula in various ways. Early stealth coatings were also reported in the press to wash off in the rain and the planes were repainted for every mission, which gives some clue as to the difficulty of finding a durable binder which is also electromagnetically transparent.
Answer: The physics fundamental is what happens when an incident electromagnetic waves changes mediums of different speed-of-light transmission index.  In the case of the transition is very low energy microwaves going from air medium to metal medium which is millions orders of magnitude slower speed of light results in total reflection. Radar absorbent paints work by using a high refractive index (to microwaves) coating to try to exploit destructive interference but that success depends on many factors like angle of incidence, wavelength and specific coating thickness. Radar absorbent materials depend on the specific spectral absorbance to convert wave energy into heat energy (like water getting hot when it absorbs 2.4 Ghz microwaves).  But again the success depends on the coating material and the frequency of the radar.  The biggest factor is geometry.  You can consider an aircraft with a shiny mirror surface and a radar as a flashlight beam.  If you can make the plane with faceted surfaces the mirrors don't reflect the flashlight beam in a consistent manner, only intermittently.  There is no such thing as true stealth, only "Low Observability". This is all knowledge one can gain from college level chemistry and physics degrees.
Comment: "millions orders of magnitude". Physics rarely deals with more than a dozen orders of magnitude, astrophysics perhaps with 3 dozen. In reality, this effect is about 1 order of magnitude, so that part of the answer is off by millions of orders of magnitude. Destructive interference only works if the coherence length is sufficient, and you can't rely on the enemy to cooperate here.


mingew32-g++.exe stopped working in CodeBlocks

Question: I am using CodeBlocks in Windows 10 64-bit. It says 'mingew32-g++.exe' stopped working every time I want to build my code. I have tried reinstalling CodeBlocks many times.
Answer: Rename the file to mingw32-g++ : Go to C:\mingew32\bin -> find a file with -g++ at the end, make sure to save the current name for a backup file, then rename it to mingw32-g++. After that check to see if there's anything with -g++ at the end in C:\mingw64\bin.
If renaming to mingw32-g++ doesn't work, the next place to check would be in Programs and Features to find which program installed mingew32-g++.exe. You don't need to uninstall that program in order to check if it has a legitimate looking name. If it also looks wrong in Programs and Features, you can uninstall it, download it again and reinstall it.


load/save small data in the cloud (reliably)?

Question: There are similar questions:
Looking for a simple and minimalistic way to store small data packets in the cloud
Mine is this one:
1) it needs to be reliable
2) it needs to be secure
Thanks
Answer: Your best option is to use object storage on one of the big cloud providers. The key thing to note is to not use a CDN and use an API to access your files (all the big providers have clients in Python, Java, .NET, PHP, Ruby, node.js).
Here's a little list:

Rackspace's CloudFiles,
built off of OpenStack
Swift.
Amazon's Simple Storage Service (S3)
Least Authority's Simple Secure Storage
Service
Microsoft's Azure Blob
Storage
Answer: Nasuni has a free white paper on the state of cloud storage and you can see the benchmarks of the major cloud providers (Amazon, Azure, Google).  How reliable they are, performance etc.
http://www6.nasuni.com/the-state-of-cloud-storage-in-2013-nasuni-industry-report.html
All major providers provide: free ingress to their cloud, global CDNs, https security based on certificates and 3x/6x redudancy backups. (it is the smaller/cheaper providers to watch out for that do not provide everything mentioned).
All major cloud providers provide high level APIs to their cloud platform.  For sending small data packets.  However, I would be interested in low level API features.  For example, you can have a 40 gig file in Azure and download/manipulate the last 16 bits if you want to rather than downloading the entire file locally.  Another thing that some cloud providers don't all provide is custom domains behind your storage URL that sometimes is important.
The API language if you need to do automation may be important to you.  If you look at Google, they support Java, Python, Go and PHP...if you need .NET Azure has much better support there.
In my opinion, you can't really go wrong with any of the major providers and the best part is to test the upload/storage of Azure/Amazon/Google is really cheap even for a large amount of files.
Answer: Take a look at this:
https://www.dropbox.com/developers/datastore/tutorial/http
You can use it either from a JSON or a HTTP posting point of view.
(I recently asked about it: Temporary cloud storage and sending script)


Can light exist without spacetime?

Question: Since the medium in which light propagates is spacetime, would light be able to exist if spacetime did not exist?  Is this like one of those chicken/egg problems, or can light be thought of as a legitimately independent entity?  This might be bordering on an philosophical question, so if it is, let me know and I'll delete it.
Comment: Its a difficult question as I can't imagine "something" without space and time.
Answer: Space-time is not really a "medium", it does not vibrate when a light wave is passing through. It just gives a reference of positions and instants in times in order to measure these quantities. Waves always need variations in time and space so you need to define the space-time first.
The "oscillating thing" of light waves is called the "electromagnetic field", which is not composed of matter per se. We do not perceive it directly. We are only able to observe some of its consequences, for example the light that gets in our eye, or the heat that we feel from the sun.
A couple related questions:

https://physics.stackexchange.com/a/15775/24774
Why do we think of light as a wave?
Comment: You're definitely right to put quotes around "medium".  I was more asking the thought experiment since light/spacetime are so tightly coupled, is light as a wave/particle/entity/idea/whatever something that is able to be completely divested from spacetime, or maybe asking the converse will help: "Can spacetime exist without light?"  Since the limiting quantity of so much of this universe depends on the speed of light.
Comment: @JoelB Actually the limiting quantity $c$ is not, from a fundamental standpoint, meant to be understood as the speed of light, but a (initially free, when deciding how to build a universe!) parameter of a class of transformations that respect very basic symmetries. It comes from that to mean the speed of a *massless* particle, which light just "happens" to be. If light were found to have a tiny mass, this would not affect our definition of $c$ (although it would be a sharp headache for the SI committee!). See http://physics.stackexchange.com/a/71226/26076
Comment: Yes, Rod is right. As I explain in my answer, there is no such profound connection between spacetime and light. The spacetime is not the "thing" that supports light.
Answer: Light cannot exist without spacetime.
Every light ray has one place of emission and one place of absorption. You might agree that between both places there must be a spatial distance, otherwise there would be no light ray and no transport of momentum.
Light in vacuum (v=c) is associating this spatial interval with a zero spacetime interval, because it is a lightlike movement. This seems to be an essential characteristic of light so that I would say that the concept of light is closely linked to the concept of spacetime, and it cannot exist without spacetime. Philosophical considerations are not required.

Can light exist without spacetime?


Showing shorter list from long domain list?

Question: I have a geodatabase with a feature class that has several domains attached to various attributes in the table. A couple of the attribute have very long domains associated with them, where much of the data is not used any more. For example: one of the fields is for the data observer; we currently only need four of the people listed and not the entire list of all the data collectors for the past 12 years (which is like 30 people). It would be much more convenient to just be able to have a shorter drop down list for the field data collectors.
Answer: Option #1:
Open the GeoDataBase properties, select the Domain Tab.
Find the Domain Name in question
- remove the names you no longer want to include in the list
Option #2:
go into the GDB properties, select the Domain Tab.

Create a new Domain
add the values you desire
assign the newly created domain to the appropriate attribute field within the desired feature class
Comment: If I do either of those would the previous data that does have the unwanted names then throw an error, since there will be names in the field that are not included in the domain?
Comment: no, but if you try to change existing values it will only let you use the new ones in the revised/new domain list. dont edit the existing values and be sure to double check before saving edits
Comment: you can also enable the option to "Allow Null Values"


CiviCRM and GDPR Subject Access Requests

Question: Most ongoing GDPR matters are handled by the GDPR extension kindly provided by Veda Consulting, but there seems to be nothing available to deal with a GDPR Subject Access Request (SAR--effectively a dump of all data held on an individual). Perhaps I am missing something, but I don't see any way of doing this easily. Has anyone had to deal with a SAR in CiviCRM and have some suggestions? (We are not facing this immediately, but one wants to be prepared.) Thanks.
Comment: I would open an issue with feature request on GDPR extension page.
Comment: I have dealt with an SAR for a person who was a contact in Civi and was emailed there.  The good thing about Civi is that the data is obviously well organised, so that's not a problem.  The tricky bit is not so much with systems (although gmail was a problem as you can only forward one email at a time) and Civi certainly was not a problem.  The real problem was what to send, how much and what to redact.  Advice on that varies!
Answer: Apparently v3.1 of the GDPR extension (released in Feb 2021) includes an export option in the GDPR tab:

https://github.com/veda-consulting-company/uk.co.vedaconsulting.gdpr/issues/85
Comment: Yes, thanks.  That update was actually done at our request and with my organization's support.


Why is the pollard's (p-1)-Method not efficient for some numbers?

Question: I have an algorithm for the method, where the idea is to choose a random number $a$, and then a bound $B$. Then we find $k=\prod_{\substack{p\in\mathbb{P}\\ p^{e}\leq B}}p^e$ and calculate $\gcd(a^k-1,n)$. And if this is not $1$ or $n$ (the number to be factorized), then we found a divisor.
For some numbers this method won't work, for example for $n=132193=163\cdot 811$. But I don't have a concrete explanation why the method doesn't work for that number. I thought it might have to do with the fact that in this case, $p-1$ would be:
$162=2\cdot 3^4$
or $810=2\cdot 3^4 \cdot 5$
in both cases I get a small prime number ($3$) but with a large exponent, so I think that might difficult the selection of the bound $B$, but I don't know exactly how or why...
Could someone help me clarify this doubt? Thank you
Comment: In what sense does the method not work for that $n$? If you happen to pick $a = 17$ (which is a cube modulo $163$ but not modulo $811$) and $27 \leqslant B < 81$, then you get the factor $163$.
Comment: Well, that is exactly what I'm trying to find out. I guess the choice of $a$ you made is one of the very few that work
Comment: Few, but probably not _very_ few. Yes, it was deliberately chosen to work. So you want to know why the method works (comparatively) badly for that $n$ (and a number of others)?
Comment: Yes, exactly. In the problem formulation it says that for this specific number one would "need much luck" to factorize $132193$ with the pollard p-1 method...
Comment: Unless one knows the factorisation, then one can easily find parameters $a$ and $B$ for which the method will succeed. I need to look up how $B$ is picked in the algorithm, that influences how much luck one would need.
Comment: I guess the factors $163\cdot 811$ were only given so I could make my argument
Answer: The reason why Pollard's $p-1$-method doesn't work well for $n = 163\cdot 811$ is that the largest prime power dividing $163-1$ is the same as the largest prime power that divides $811-1$. Thus in this example $p-1$ and $q-1$ both become $B$-powersmooth for the same $B$.
Generally, the idea of the algorithm is that a prime factor $p$ of $n$ will divide $a^k - 1$ (where $a$ is coprime to $n$) if $k$ is a multiple of $p-1$, but usually a prime factor $q$ of $n$ will not divide it if $k$ is not a multiple of $q-1$. Of course for some $a$, $q$ will nevertheless divide $a^k - 1$, but for that to happen $a$ must be a $\frac{q-1}{\gcd(k,q-1)}$-th power residue modulo $q$, and there aren't too many such.
Since the exponent $k$ is defined as the product of all prime powers $\leqslant B$, all prime factors $p$ of $n$ for which $p-1$ is $B$-powersmooth will divide $a^k - 1$ for all $a$ coprime to $n$, and the prime factors $q$ of $n$ for which $q-1$ is not $B$-powersmooth will only rarely divide $a^k-1$.
Thus when for a squarefree $n = p_1\cdot \ldots \cdot p_r$ all the $p_{\rho}-1$ have the same largest prime power divisor $q^m$, the algorithm can only find a nontrivial divisor of $n$ when $B < q^m$, and the chosen base $a$ is a suitable power residue modulo some but not all of the $p_{\rho}$. (If $n$ is not squarefree, then for a prime $p$ with $p^2 \mid n$ it's likely that $p \mid a^k - 1$ but $p^2 \nmid a^k-1$ for $B \geqslant q^m$, so we'd get a nontrivial factor with high[ish] probability even if $q^m$ is the maximal prime power divisor of all $p_{\rho}-1$.)
If the largest prime power dividing $p_{\rho}-1$ is not the same for all $\rho$, then a value of $B$ between the smallest and the largest of these maximal prime power divisors will find a factor with high probability.
If one executes the algorithm with a fixed $a$ and increments $B$ (starting with $B \geqslant 5$, say) for $n = 163\cdot 811$, one needs a bit of luck to choose an $a$ that is a cubic (or ninth power, or $27^{\text{th}}$ power) residue modulo one of the factors but not the other. One can reduce the amount of luck needed by using several $a$ for each $B$. This of course multiplies the work by the number of bases one tries. A strategy that avoids that multiplication is to execute the algorithm with a fixed base $a$, and when $\gcd(a^k-1,n) = n$ for $k = k(B)$ but $\gcd(a^k-1,n) = 1$ for $k = k(B-1)$, then it's likely that $B$ is the largest prime power dividing each of the $p_{\rho}-1$, say $B = q^m$, and trying several other bases for $k(B-1) = k(B)/q$ has decent chances to find a factor. Since the probability that a randomly chosen number is a $q^{\text{th}}$ power residue modulo a prime $p \equiv 1 \pmod{q}$ is roughly $1/q$, if being a $q^{\text{th}}$ power residue modulo different such primes is independent, the probability of finding a base that is a $q^{\text{th}}$ power residue modulo one of two prime factors is about $\frac{2q-1}{q^2}$. Then we would expect to find a factor within about $q$ tries. If $q$ is large, that's bad, but for small $q$ it's feasible. (Of course there's still luck needed, but we have a guesstimate how much luck we need. However, if our guess that $B$ was the largest prime power divisor of all the $p_{\rho}$ was wrong, our guesstimate may be quite wrong too.)


Can Microsoft Security Essentials be installed remotely to several PCs from one central PC?

Question: I would like to rollout MSE over a network, mange it and update it all remotely. I am sick of having to visit each and every client.
Answer: Microsoft Security Essentials is not licensed for business use. (Source) That being said it can be used in a home or home office, so installation via the network may still be an option.
You can extract the download using this command:
mssefullinstall-x86fre-en-us-xp.exe /x

Then you can use psexec to silently install the msse.msi. Something similar to below.
psexec \\computername msiexec "\\server\share\Pathtomsse.msi" /s /runwgacheck

or if you have a text file with all the computers on their own line like:
computer1
computer2
computer3

your command would be
psexec @c:\Computerlist.txt msiexec "\\server\share\Pathtomsse.msi" /s /runwgacheck

Please note I haven't actually tried the silent install, but that should get you on the right track.
If this is for a business you can try out Microsoft Forefront Client Security.
Comment: This has changed now: Small Business. If you operate a small business, then you may install and use the software on up to ten (10) devices in your business.
Answer: I have push out M.S.E. on my company's network and we made a .msi from the M.S.E. executable.
Then used Active Directory's Group policy to push it out to all the computer at once.
Alternatively you could use EMCO Remote Installer to push out the msi. i have used this and it works great.
Answer: It sounds like you're looking for Microsoft Windows InTune, currently in Beta, but I'm not sure what the licensing policies and costs will be.

Manage updates: Centrally manage the deployment of the Microsoft updates and service packs that you choose to all your PCs from the Windows Intune console—freeing up your IT staff from routine management tasks.
Protect PCs from malware: Help safeguard your PCs from the latest threats with centralized protection built on the Microsoft Malware Protection Engine and using the same trusted technologies as Microsoft Forefront® Endpoint Protection and Microsoft Security Essentials.


How to find the proper coordinate reference system with two sets of data using different measurements or too convert one system into another

Question: I have two different entries of data in two different spread sheets. One of the spread sheets uses a coordinate reference system that I have no idea what the units of measurement are. the properties of the shape file say the crs is +proj=longlat +datum=WGS84 +no_defs, however the data points show up off in the middle of nowhere. The other set of data is properly aligned to my map and using the same crs. Both sets of data were collected from a hand held gps which i no longer have access to. Is there some way for me to convert my data all at once to realign properly with my map? Or do I have to try using a different crs? Finally if I do use a new CRS will that not allow me to merge the layers or do types of statistical analysis?
Comment: Could you post the coordinates for (say) four points in the dataset with the unknown CRS, together with the WGS84 lat/lon coordinates for the same four points? It might be possible to determine the unknown CRS from this data. N.
Comment: if the data was collected from a GPS, the CRS would be WGS84 Lat/Long. Maybe try switching the lat and lon columns from your spreadsheet and see if the data lines up.
Answer: You can say something about the projection just by looking at the coordinates. If your coordinate values are within +-180 and +-90 (on one and the other axis) then you are dealing with geographic non projected coordinates where units of measurement are usually decimal degrees. If your coordinates have values from 0 to a few million, or zero to around half a million, you are probably dealing with projected coordinates in meters.
Since you probably added one layer with geographic and the other with projected coordinates, this means that if no projection information is taken into account, geographic coordinates would probably be (visually positioned) near 0,0 (because they are relatively small values compared to projected, but take note they are in different units!)
In qgis for example this is what you need to do... choose a projection/datum for your project and say for example: Okay, i ll view my data in geographic coordinates (not projected - EPSG: 4326), then in the other layer properties (which uses different projection) you need to set on the fly reprojection into 4326 reference system from the local projection. To do this you have to have an idea which projection that is. This is usually related to the area/country which the data covers; countries have their own projections, and even with countries that have multiple coordinate systems (because of their size) you should be able to determine quickly which of those corresponds to  your data.
Hope this helps a bit.
PS: If you are using a spreadsheet or a csv, make sure you are not making a decimal point error for example; if data was saved on a system with different locale, which uses a comma instead of a dot for decimal point for example, you may be getting your errors from there.
Answer: Besides the coordinates there is also the Datum issue, choosing the wrong datum could lead to the "information is not where it is suppose to be" problem. Therefore, it would be helpful if you can know that also. In my country, Mexico, for instance, we have lat lon, Lambert conformal conic and UTM coordinate systems. Also INEGI (government mapping agency) uses NAD27, ITRF92 and ITRF2008 datums...
Comment: Fist look at the **coordinate systems**. If there is a problem with the coordinate systems you usually will have an error of **hundreds or thousands of kilometres**. After that look at the **datum**. If there is a problem with the datum you usually will have an error of e.g. **100 or 200 meters**.


How to change the number of rows and columns in GNOME app grid (<=3.36)?

Question: I noticed that in GNOME 3.38, when I change the position of the dock to bottom, then in the app grid the icons size, rows and columns adjust themselves as needed. I think they go from 4x6 to 3x8 so that everything looks proportional. However, when I change the position of dock to bottom in previous versions of GNOME, the app grid remains in 4x6 and the icons become small to accommodate themselves. Is there anyway to change the icon size, rows and columns for the app grid?
Answer: I believe it's only for Gnome 3.38+; in previous Gnome versions you can increase the number of columns through this extension
Also, see here for more info and tweaking
Answer: I used this answer, originaly is intended for GNOME 3.18 but it worked just fine in my Ubuntu 20.04 running GNOME 3.38.

Open a root nautilus or whatever file manager you use.
Then go to usr/lib/gnome-shell
Make a backup of the 'libgnome-shell.so' file.
Then edit this file using an hex editor. I used Bless.  Search for
'MAX_COLUMNS = 6' as text. replace the number in the text panel, hex
will handle itself. Ignore warning an save. Then ignore warning
again. Restart GNOME (alt+f2, then type r and then press enter). If you still don't seem to fit enough columns in your screen repeat the procedure but search for 'MIN_COLUMNS' and set it to a bigger number. Also contemplate the possibility of changing 'var ICON_SIZE' in the same way.
Finally, restart GNOME (alt+f2, then type r and then press enter)

That should do the trick
Comment: This is for activities and not for dock (at the left/bottom which shows all open applications and favorites), right?
Comment: Yes, also be careful when tweaking hex files. Deleting or renaming one of these files could make your system not boot and enter grub directly (I accidentally changed names on the files and that was what happened)


Do Berkley DB versions need to be the same?

Question: If I build using --with-incompatible-bdb, will the resulting wallet be incompatible with the bitcoin core client from bitcoin.org? What if I'm using a newer version?
Answer: To be safe, you should use BDB 4.8 as that is the version that is used in releases. However using --with-incompatible-bdb should still produce wallet.dat files that can be used with the officially built clients.
You may find that people say that the BDB database files are incompatible from version to version. Furthermore Oracle, in their own documentation, say that there are no guarantees that database or environment files are compatible from version to version, even from minor version to minor version. But from researching and testing this out myself, this is not true in practice.
BDB rarely changes the database file format. Rather what does tend to change are the database transaction logs. These log files are used to ensure Durability (the D in ACID). Oracle has changed the log file format in minor versions so they are not backwards compatible (they are forwards compatible, so you can always move to a newer version of BDB). When you use --with-incompatible-bdb, you will probably be using a newer version of BDB that has incompatible transaction logs. So this would be a problem.
But Bitcoin Core actually mostly takes care of that problem for you. The transaction logs are removed if the wallet is able to be closed cleanly. So if nothing crashes and the wallet file is closed normally, you will be able to use a version of Bitcoin Core compiled with a different BDB, and then have the official release be able to use the same datadir and open the same wallet files.
In the event that Core crashes or the wallet files are otherwise uncleanly closed (e.g. power loss), then you should use a build of Bitcoin Core using the same BDB version that you had been using prior to the unclean shutdown. This will ensure that the transaction log can be read correctly and any information replayed and written to the wallet.dat file.
So what versions are compatible? From my own testing, I have found the following versions to work with no modification to Core necessary (Note these versions are what Oracle has available for download, versions with the same major and minor number of different patch number should still work):

4.8.30 (Note this is the version that Core ships with)
5.0.32
5.1.29
5.2.42
5.3.29

6.0 and above are not backwards compatible as they database file format has changed for these versions. You would be able to use 6.0+ but any wallet.dat files created by them cannot be used in the official binaries. However existing wallets created with the official binaries or one of the above versions of BDB could be used with a build that uses 6.0+ and be subsequently used again in the builds with older BDB versions. I.e. you could go from 4.8 to 6.0 and back to 4.8 with the same wallet.dat file.
4.7.25 also works but requires you to modify configure.ac to be able to build with a version less than 4.8.
4.6.21 requires modifying some code as API calls changed, but the database format still works. 4.5.x and below have significantly more API differences so I wasn't able to test them.


TCP / IP Payload 65535 is mtu restricting to 1500?

Question: If the TCP Payload and IP Payload can be up to 65515 Bytes (-40 for ip and tcp hdr), is the MTU size of 1500(Ethernet) restricting what can be sent on the wire(i.e. is it because of Ethernet limit of 1500)? what protocol can use all of 65515 bytes if not Ethernet ?
Comment: The more you cram into one packet, the more you lose when the packet is lost. Also, you end up monopolizing network links for longer and not sharing the network with other users. Wi-Fi has a bit bigger MTU, but is is even more necessary to share the network with Wi-Fi.
Comment: IP, being layer-3, has to make do with whatever layer-2 carries it. If you find a layer-2 that can accommodate a 64k frame (ATM?), then you can send a 64k IP packet. Any that would, like ATM, do so by breaking the packet into fragments (ATM - cells.) TCP (L4) can hand a 64k packet to IP, but IP will have to fragment it if the layer-2 can't handle it.
Answer:
what protocol can use all of 65515 bytes if not Ethernet?

I think you are asking the wrong question.
There does not actually need to be a link layer protocol which can handle a full-size IP packet.  If you need to transport 10000 tons of bananas you don't ask for a special truck able to transport these 10000 tons at once and maybe a special road where such a truck can drive.  Instead you take several commonly available trucks where each can take part of the total load and use a common road for transport. This is possible because you can split the huge load into several smaller fragments.
But on the other hand, it could be bad if a full-size IP packet was significantly smaller to what the underlying link layer could handle. If the largest "internet layer" unit you had was a single banana, then this would mean to  have each "link layer" truck to deliver only a single banana - i.e. lots of overhead.
Apart from that, there are jumbo frames for ethernet. While they cannot take a full-size IP packet they can take much larger fragments - similar to having larger trucks.
Answer: 1500 is going to be the standard Internet MTU.
There are 2 places where you see >1500 often used in practice.
One is when the whole flow lives on the same LAN. Almost every switch will allow 9000 byte MTUs end to end in that scenario. The linux routing table will let you set this higher MTU just for flows that use the local LAN route instead of the default Internet 1500. (8192 turns out to be better because of the way the kernel allocates buffers - you trade a tiny bit of extra MTU space for much more efficient memory handling)
However the most common place for full size 64K packets is actually through localhost in one of a variety of ways. Those packets traverse (most of) the normal TCP/IP stack and it simply helps to have fewer of them.. the CPU used to move the packet is proportional to the number of packets (not the number of bytes) - so moving 64KB packets is cheaper than moving 1.5KB packets.
You might see this just in normal localhost - but sneakily! - you also see it with GRO and TSO. Those are technologies that move big packets through the software networking stack and then break them (or consildate from - depending on if your rx'ing or tx'ing) into MTU sized packets when they are down at the ethernet layer. This is really important for high speed networking.


"Visit link" problems

Question: The "visit parent" and "visit meta" send me to http://stackexchange.com instead of stats.exchange or meta.stats.stackexchange
Comment: "Visit meta" has now disappeared. Presumably the "Visit parent" will go soon too. There are new links to meta and parent on the top right instead.
Answer: You should now see a "Stack Exchange" logo instead of the previous parent/meta icon. If not, hit Ctrl-F5.
The parent/meta links are now located in the main title bar.
Comment: Is there a reason behind the UI change?  The previous position was far more prominent befitting its likely frequency of use whereas the new position is much less conspicuous.

"Visit link" problems


Main method in spring roo

Question: I'm very new to spring roo and JPA. To start, I followed http://static.springsource.org/spring-roo/reference/html/beginning.html to build a Pizza Shop website. Now I'd like to write some JPA queries to test the entities. Is it possible to write a main method to test?
Answer: Spring Roo generate (or can generate) Testcases for the entities too. -- Do not let you misleading by the empty Test classes. They use the same AspectJ "injecting" technology for that Tests like for normal classes.
Of course you can "extend" that tests.

Main method in spring roo


How to strip down Windows 10 VMs so they perform less background activity

Question: I run a Windows 10 test VM under VMWare workstation and I've noticed that it uses a lot of background CPU/Memory even when it's not doing anything.  I'd like as much as possible for this VM to be doing nothing when I'm not using it.  I've already disabled Windows Update (which I only want to use manually since I use snapshots) and I've disabled search indexing.  Are there any other obvious quick wins from the point of view of getting Windows to properly idle using few resources?
Answer: Have you installed the VMware guest extensions? Those help quite a bit (especially with scheduling).
The next VMware specific thing to try is VMware's OS optimization tool.
Comment: I've installed vmware tools yes, that optimization tool looks interesting, I'll look into it thanks.


Is there a way to steam rice(Asian style, like steamed rice that gets served at P.F. Chang's) without a rice steamer?

Question: I have several sauce pans and a 3qt saucier. I was thinking about buying a rice steamer, but thought maybe I can save some money.
Comment: What do you mean by Asian style? Like for sticky (glutenous) rice?
Answer: A Google check says that P.F. Chang's serves steamed jasmine rice. Jasmine rice doesn't need a steamer at all, just a saucepan with a lid. Like the steamed rice method here: Rice gets burnt and watery.
Comment: I feel that it should be obvious, but to be safe: for "Asian" style rice, do not add oil or salt.
Answer: .... I will actually disagree a little with the great Jolenealaska here. I've found that the single most important thing when making rice is to follow the package instructions. The answer she links to is a solid technique. That's how my mom has always done it, and people are always amazed at how well it turns out. But I got obsessed with kimchi just in time for the hallyu wave a few years ago and I experimented altogether too much with rice.
.....and to reiterate the comment I left above, never add butter or salt to cooking rice. For me it ruins the flavor. I'm all grown-up with two opposable thumbs. I'll get butter if I want it lol. But usually I don't.
If your rice needs to be rinsed, it should say so in the cooking instructions on the package. (Barely add enough water to wet all the rice and you'll be able to get most excess starch off quickly. You'll have to rinse it 3 or 4 times at least.)
I rinse rice by default now. My mom makes fun of me, but she doesn't think the rice turns out badly at all.
Some varieties of rice call for soaking before you drain completely, measure out the water, and cook. Others don't call for a soak, but do expect you to heat the rice with the water just to a simmer.....While you can cook these using Jolene's method, they might not be as fluffy. It's a subtle difference though.
I've also had rice that came out markedly better on the stovetop than it did following rice cooker directions, and vice versa. I can't tell you why, but it's something to be aware of.
All of which is to say that if your rice doesn't turn out right the first time, you can try different techniques and also try different rice.
There are also tons of general techniques that are completely different from Jolene's that are worth looking into. This site for example...looks promising? I might try it just to see how my own medium grain rice turns out:
https://thewoksoflife.com/how-to-steam-rice/#:~:text=Place%20in%20a%20steamer%20filled,at%20least%205%20more%20minutes.
The ratio for long grain rice to water is 1:1.3. The instructions say to soak your rice for at least 10 minutes. Place the rice and water in a heat proof bowl, then place that bowl in a cold steamer. It says specifically not to preheat. Then turn the heat on to high for 20 minutes with the lid closed, heat off, and let sit for at least 5 minutes or until ready to serve.
I don't have a commercial steamer either, so what I'll do is put down a cheap vegetable steamer tray in my big pot and set my bowl on top of it. You might be able to rig something workable with metal cookie cutters or silverware as well.


How does app part differ from apps in SharePoint 2013?

Question: Exactly how "app part" differs from apps in SharePoint 2013? Need clarification from experts on this.
Answer: An app part is one way to display information from an App for SharePoint (one of the so-called 'shapes' a SharePoint app can use).
An App for SharePoint holds all of the logic, display, and (typically) data associated with a specific piece of functionality someone has built to leverage the SharePoint framework. Apps for SharePoint are created using some flavor of visual studio (even the Napa SharePoint App) and typically added to SharePoint from an App Catalog. The actual App itself is run on a seperate domain (and sometimes a seperate server) from the main SharePoint installation; this keeps any misbehaving apps from affecting the rest of the SharePoint installation.
An app part displays an app's webpages inside of a host SharePoint site using an IFrame, that way it appears as though the contents of the app reside within the hosting SharePoint installation.
If you're interested in learning some more about App development, there is a great video series about Apps on the Microsoft Virtual Academy website; there are many different courses, but the course you might be interested in is here:http://www.microsoftvirtualacademy.com/training-courses/introduction-to-office-365-development
Comment: TechNet Link with a matrix comparison:  http://social.technet.microsoft.com/wiki/contents/articles/17627.sharepoint-2013-webpart-vs-apppart-and-cloud-app-module-advantages.aspx
Answer: Its simply, you deploy a module of add-in which sits only on specific location of the SharePoint page.

This link would help you more on this MSDN: SharePoint Add-ins


Fetch NFT onchain data as JSON

Question: I was wondering if, apart from the magic eden API, if it was possible to directly fetch on-chain NFT collection data(in JSON) with javascript? Or does that have to be done via web scraping?
Answer: Sure can! But the NFT metadata is stored off-chain actually (Arweave, NFT storage etc...) the on-chain data has the URI that holds the NFT metadata.
You can try the metaplex findByMint method, just give it a mint Address and it'll returns an Nft object.
const nft = await metaplex.nfts().findByMint({ mintAddress }).run();
Also see the Solana Cookbook for a more complete example.
P.S. There's also 3rd party API's from Quicknode and Moralis you could try.

Fetch NFT onchain data as JSON


Why does my 160kb app background become 49 MB at run time?

Question: I decided to investigate my app's memory usage and I looked at Android Studio's Memory Monitor and my memory usage was around 68 MB. It looks too high to me.

I opened memory allocator and started tracking from the beginning of the application. I saw that there is a 49 MB allocation of a NonMovableArray, which is a Bitmap.

I debugged the application and found out that it was the background I was using. The lines below are from PhoneWindow.java file, that's where Android assigns the background to the screen I believe. The background object had a size of 49 MB and 2625x4669 resolution.
I have no overdraw in my app, and I have a single background that is applied to entire theme.
I have a background drawable in drawable folder in JPG format with 750x1,334 resolution.
PhoneWindow.java
if (mBackgroundResource != 0) {
    background = getContext().getDrawable(mBackgroundResource);
} else {
    background = mBackgroundDrawable;
}

I am testing this on a Motorola Nexus 6 device which has 560 density with  a resolution of 1440 x 2560.
There are two points I don't understand.

If the device has a resolution of 1440x2560, why would my background get converted to 2625x4669?
Even if this conversion is the best scenario for the app, how come a 160 KB file would end up being 49 MB?

If you guys can explain this to me that would be great. Thanks!
Answer:
If the device has a resolution of 1440x2560, why would my background get converted to 2625x4669?

You put the image in res/drawable/. This is not a good choice, as that is a synonym for res/drawable-mdpi/. Hence, Android is resampling your image, thinking that you were aiming for -mdpi devices (~160dpi), so the image is about the same physical size on the Nexus 6 (3.5x the density).
Whether res/drawable-nodpi/ or res/drawable-anydpi/ is the right choice depends a bit on your alternative versions of this resource, though either will probably work.

how come a 160 KB file would end up being 49 MB?

The image takes up 160KB on disk. The memory footprint is the decoded image. That will be the image resolution (post-resampling) times 4 bytes/pixel for ARGB_8888 images. 2625x4669x4 ~= 49MB.
Comment: I already solved this problem first putting my drawable in 'drawable-nodpi` folder (after seeing an answer of you to another question), and then creating different drawables for different screen densities. I just wanted to understand what was the reason behind it, and you explained very well. Thank you!
Answer: The default and highest quality configuration for a Bitmap is ARGB_8888, which will use 4 bytes per pixel. Since your image is being scaled to 2625*4669, that's:
2625*4669*4 bytes = 49024500 bytes

http://developer.android.com/reference/android/graphics/Bitmap.Config.html
Answer: I'm not sure about the resolution differences, but the difference between the used memory and the size of the file is because an image in the JPG format (as many other formats) is compressed (see the wiki for how). When you then load it into memory, it is no longer compressed, as it's used to draw every single pixel on the screen.


Unable to automate disabling mobile data via Tasker plugin Secure Settings on CM 13

Question: I hope this isn't as niche as it looks. In Android 6 apparently there's no way to disable mobile data using Tasker alone. So, I'm trying to disable mobile data via Secure Settings, using the "mobile data" setting. It gives out an error when the task runs. I have given both Tasker and Secure Settings pretty much all permissions I could find in settings. Still no go. Ideas?
Answer: Unfortunately, Secure Settings doesn't work well on Android Marshmallow due to lack of platform compatible updates. That been said, you can toggle mobile data using command-line approach in Tasker.
Action: Code → Run Shell:

Command: svc data disable
Replace disable with enable to enable mobile data.
tick Use Root.

Tasker community at Reddit has compiled a useful list of all the Secure Settings actions' command-line alternatives. You can find the list here.
An alternative to command-line based approach is to use an another automation app in parallel or with Tasker, such as MacroDroid and Automate. Both the apps can toggle mobile data, given root access is granted to them.
Comment: Cool! Thank you so much. I suppose those automation apps also require me to disable the "screen jacking" protections, since they simulate user actions? I wonder when Android is going to break that as well :(.

So far I've been quite disappointed with my Android upgrade experience. I eventually reverted to my old 4.4 ROM because there's simply too much missing. They managed to screw up even the simple battery display graph, which now doesn't show time since last charge, you need to install a custom app for that. *sigh*...
Answer: I use Toggle Data 5.0 on CM13 (third party distribution for the Samsung S4, ResurrectionRemix). XDA Developers link. It works well.


The intrinsic differences between H/W tasks (executable on FPGA) and S/W tasks (executable on CPU)

Question: In hybrid platforms containing CPU and FPGA, there are some models for tasks. For example, in one task model, it is considered that every task can be run on either FPGA or CPU (i.e there are two versions H/W and S/W for any task). However, in another task model some tasks must be run only on FPGA (or CPU).
My very important question is that what differences are exactly between tasks that we can run some of them on both S/W or H/W or limit us to run them only on one processing element (only on FPGA or CPU)? Is there any real application in our world with these task models too?
Thank you.
Comment: FPGAs are turing complete, thus you can run whatever you can run on a CPU on them, it might not have enough resources to do so though.
Comment: Parallelism. Tasks (VHDL processes) are inherently parallel. On a CPU, you either execute them (a) sequentially(e.g. under an RTOS) on a single core, or (b) you need a multi-core CPU, ideally with >= 1 core per task : with fewer cores, see (a).
Answer: Pretty much any calculation you can do on an FPGA in hardware you can do on a CPU in software - that is of course how simulation tools are able to simulate your design. Similarly anything you can do on a CPU you can also do on an FPGA (even if that is just by building a soft CPU).
The only difference between them is time and efficiency. As a quick example, you can run a CRC algorithm on a CPU, but it is almost always faster to use a hardware implementation to do the calculation, however depending on the size that might use more power (it might use less) and space.
However the same cannot be said when it comes to interacting with other hardware. When it comes to connecting to external devices such as high speed ADCs/DACs or PCIe, the FPGA is king. With high speed serial and parallel interfaces, it is impossible to interface directly to a CPU because it is simply incapable of big-banging the interfaces unless run at a impossibly high speed. (As a side not dedicated hardware includes PLLs, but for low speed CPUs can do away with them by big-banging in software).
There is another case when the FPGA is king and that comes down to very timing critical events. If your main CPU is busy handling things like a user interface or other bits of hardware, it could easily miss an event or not be able to process it in real time. This even could for example be some timing critical trigger to start recording data from an ADC or sending data to a DAC. For these sorts of cases having dedicated hard on an FPGA waiting for the event and then handling it immediately would allow for things to happen at exactly the point they should even if the CPU is busy doing lots of other things.
So really it comes down to timing critical vs not. If you have a task which has to be done at an exact point in time, or an interface which is of higher speed than the CPU can handle, or even just a very large calculation that would use up too much CPU time, then dedicated hardware in an FPGA can solve that.


Are part-time postdocs in Austria expected to work full time?

Question: I am considering applying for a post-doc in the humanities at an Austrian university. The position is advertised as a "Postdoc University Assistant position (50%, 20 hrs., "Universitätsassistent/in", "Post-Doc")". The salary, accordingly, is lower than what one might expect from a full-time postdoc. Could those of you familiar with Austrian/Central European academia please advise me if this is indeed a part-time position (and I can e.g. look for another part-time postdoc), or if it is standard practice where one is expected to work full-time and receives half of the salary (as is often the case with PhD students in Germany)?
Comment: Comparing students in Germany with post-docs in Austria is probably not very useful. While I don't know the answer for Austria, I'd think that advertising a half time position but requiring a full time commitment would be likely illegal. Hopefully illegal, anyway.
Comment: I would suspect this means the PI only has funding for half a postdoc position. What else should they advertise? What they expect, or not expect, is something you can inquire with them. Legally, you can of course take another half job. And as long as you do your work, there is no way (afaik) to get you fired.
Answer: I'm not aware of a "standard practice" to employ postdocs for 20hrs and expect full-time work (disclaimer: familiar with Austria, but not the humanities). It is extremely common to work more than your official hours on paper though.
What I have seen before is postdocs combining part time positions across different funding sources, or having additional teaching (lecturer) contracts on top of a part-time salary. Depending on your contract, you might need approval from your employer before taking additional jobs in the same field, so this is usually coordinated with your supervisor.
I don't know the exact situation in the humanities, but I'd encourage you to ask your prospective PI about what they envision.


Difference between hardening guides (CIS, NSA, DISA)

Question: I'm researching OS hardening and it seems there are a variety of recommended configuration guides.  I realize the different configuration providers supply different offerings per Operating System, but let's assume (for convenience) we're talking about Linux.  Consider the following :

CIS Benchmarks
NSA Security Configuration Guides
DISA STIGs

Is there any obvious differences between these that might compel someone to choose one over the others?
Update: 2014-11-19

Some additional context, per answer submissions that asked for additional detail:

I don't have a requirement to harden against a given benchmark or guideline, I'm simply trying to understand the current best practices used in industry & government.  However, I do plan to turn my findings into a research paper for class.
I will not be audited, except by those that read my paper.
My professor and a couple of students may be familiar with the auditing process, but I hope to make my paper approachable for everyone.  I'd like to write about how to use a tool to automatically scan a system per some guidelines or vulnerability database.  I'm fairly new to this area, but I'm researching OpenSCAP and OpenVAS.  OpenSCAP seems more approachable than OpenVAS, and appears to be written to test against NIST standards.  I'm not sure which NIST are tested by OpenSCAP, but I'll add NIST the NIST guidelines to my list of guides to consider.
Tate Hansen suggested using Nessus for scanning, however I'd like to stick strictly to Open Source applications to suite my needs for this research.
A sub-question, it looks like the NIST standards guide for hardening is SP 800-123 and SCAP is simply a format (XML?) for tools to perform and communicate analysis of a system.  Is that correct?
Comment: I am a security practitioner and would love a copy of your paper. We are currently implementing a hardening process and trying to decide between these standards. Al almon at outlook dot com
Comment: I like your answer security guy. Security is objective but subjective to a point. Experience trumps all. To the newly initiated not working with an experienced professional the road will be tough but passable. There are basic principles at work, many security guy outlined. Knowing the OS/App/System you're securing is the real differentiation. The better you know it the better you can determine what it will take to secure it and achieve your security objective.
Comment: You said that you will be writing a paper about the differences. Is this done and where can we read it? I'm also looking to cover one of the standards in order to
Answer: In general, DISA STIGs are more stringent than CIS Benchmarks. Keep in mind that with STIGs, what exact configurations are required depends on the classification of the system based on Mission Assurance Category (I-III) and Confidentiality Level (Public-Classified), giving you nine different possible combinations of configuration requirements. CIS usually have a level one and two categories.
OpenVAS will probably suit your needs for baseline/benchmark assessment. Nessus will also work and is free for non-commercial use up to sixteen IP addresses.
For commercial use, it's still quite affordable.
I have yet to find a comprehensive cross-walk for these different standards.
The best attempt I have seen thus far is here (a Web Archive copy): http://www.dir.texas.gov/sitecollectiondocuments/security/texas%20cybersecurity%20framework/dir_control_crosswalk.xls. This spreadsheet, however, is a controls comparison, not baseline/benchmarks that I think you are really interested in.
Regarding NIST requirements, yes 800-123 is the baseline document that requires systems to implement the controls found in 800-53A. These requirements differ from benchmarks in that NIST requirements tell you a control that must be implemented, but not exactly how it must be implemented. The Benchmarks are usually very specific in that you must set setting X to value Y.
Hope this helps.
Comment: I really like your answer, although the file you're linking to is gone :-/  Has your experience in this area changed in the last few months?  Any new thoughts on the topic?
Comment: interesting answer; but the link is broken if you may fix it
Answer: One difference is the ease to find a reliable and automated tool to check for compliance. I believe Nessus has templates available for most of the ones you have listed, but some are dated. In any case, I'd choose one that makes it as easy as possible for you to check and stay in compliance.
Comment: Added some additional context per your comments.
Answer: Here are some important considerations:

What is the reason that you're hardening against a given benchmark or guideline?
Are you going to be audited?

Is there a preferred route or route the your auditors are more familiar with?

What tools will you use for self auditing?

Do those tools have polices or plugins to audit your system against a given benchmark?

If you're just harding your OS because someone told you to be 'secure' you will have less constraints and can reach through each guide and pick your preference. All of the mentioned hardening models will produce a more secure system.
Comment: Added some additional context per your comments.
Answer: Before answering your question, I would like to define a word you used (hardening). According to the all-knowing wiki, I will define it as "the process of securing a system by reducing its surface of vulnerability." To know which approach is right for you, you have to know what you hope to achieve.
Some in the DoD (and other industries) may only apply STIGs while other apply more than just STIGs. This is what use security engineers like to differentiate as the difference between compliance and security. Compliance is checking a box saying that you did... Security is checking that box and looking to see if there is anything else you can further do to mitigate weaknesses.
Additionally, if you look at the Application Security and Development STIG it actually states "The IAO shall ensure if a DoD STIG or NSA guide is not available, a third-party product will be configured by the following in descending order as available: 1) commercially accepted practices, (2) independent testing results, or (3) vendor literature."
One thing you have to understand about DoD policy, is that the policy at the top is not always the end-all/be-all. Frequently there are layers of policy that are required to be followed. The lower level policies can only be stricter, not less strict. So in essence some programs may be required to apply all of the recommendations. However, what you will typically find is that there is often a substantial amount of overlap.
When there is conflicting guidance, the higher precedence policy trumps the lower. For someone trying to "harden" a system, I say err on the side of security. Also understand that any guidance is written by people who can make mistakes. This is why there have been multiple revisions due to type-Os and misunderstandings of a technology.
What happens when guidance breaks something, this is where someone will have to decide if the risk of X is greater than the risk of not being able to use Y.


Alternative to Buddy Build

Question: Apple today bought out Buddy Build and announced there will be no more support for Android. What is a good alternative for Buddy Build?
Comment: I think your question is good and something a lot of us are grappling with as we try to figure out what to do with our Anrdoid apps! Though I voted up your question, I don't agree with the **hate Apple** part. Apple is a company and companies do what is best for their bottom line. I'm not starting a debate, just needed to separate myself from that part of your question. :] That said, thanks for asking this important question!
Comment: lol made me laugh for more than 5 minutes :D :D
Answer: List of Mobile App - Cloud Build Solutions
List Criteria/Details:

This is NOT an analysis nor endorsement of any of these solutions.
I tried to list ONLY solutions that support both Android and iOS at least. Buddybuild did support some hybrid frameworks, but it was not their focus.
I focused on MOBILE projects since that's Buddybuild's focus. There are plenty of solutions (not listed here) that are for web, docker, etc.
I focused on CLOUD HOSTED solutions only since that's also what Buddybuild was. There are several solutions (not included here) if you're willing to host your own build server.
This list is limited to solutions that BUILD in the cloud. In other words, solutions where you have to do your own build and then you deploy it to the cloud are not included.

With that out of the way, here is a list of what I've found so far, in no particular order - and with very little analysis other than a quick read of their websites. Corrections welcome, but please be kind about it because this is a quick list!

Nevercode - https://nevercode.io
CircleCI - https://circleci.com
Travis CI - https://travis-ci.org
Bitrise - https://www.bitrise.io
Buildkite - https://buildkite.com
AppCenter - https://appcenter.ms (yes, this is Microsoft and they do indeed support iOS, Android and more.)
Buildozer - https://buildozer.io

The is also a healthy discussion going on at https://github.com/rnystrom/GitHawk/issues/1330
The above is "the answer" to this question but In case some folks are not fully aware of the context, read on for some background on Buddybuild.
What is Buddybuild?
Buddybuild is a cloud-hosted continuous integration platform to build, test and deploy iOS and Android Apps with ease. Their claim to fame is the ease with which one could setup a build. Having been a customer for several years, I can attest for this.
A typical Buddybuild workflow includes an iOS or Android project where the source code is hosted on GitHub, Bitbucket and others. From there, the Buddybuild systems monitor commits to the source code and, based on a project's configuration, produces builds that can be sent to end-users via email (presumably beta testers, business testers, etc) and that end-users can install very easily from just the email.
In addition, for iOS projects, Buddybuild is also able to manage Apple Provisioning Profiles and even manage the Team Device list. This is an area of iOS development that is often time consuming for teams as Apple requires all devices running a test-build of an App to be "registered" in the Apple Developer Portal. Buddybuild can manage device provisioning seamlessly and, to my knowledge, is the only product that offers this feature (but I could be wrong).
Buddybuild also offers an optional SDK for both Android and iOS that provides extra features to Apps that use it. Namely, the SDK allows developers to collect feedback from their users as well as crash report data that is correlated back to source code. The feedback feature is particularly powerful as it required no code by the developer at all while still providing a visually appealing interface to collect app feedback from users (complete with a screen grab of whatever the end user was seeing at the time of feedback.)
Why the fuss?
Buddybuild announced on 1/2/18 that they've "joined the Xcode engineering group at Apple to build amazing developer tools for the entire iOS community". See Buddybuild's blog post about this. Their announcement also stated they've stopped accepting new customers (even for iOS) and that they're ending Android support 3/1/18.
Disclaimers:

I am not affiliated with any of these solutions.
I have used CircleCI before, but for a NodeJS project so I have zero experience using CircleCI for iOS and Android.
I am a Buddybuild customer and maintained 10+ apps for both iOS and Android using their platform.
I am not affiliated with Buddybuild, but I have given several talks on using Buddybuild. I know several people there and I honestly believe in Buddybuild's solution, workflow and UX. I am a super-fan, but have no special access nor knowledge beyond what is public.
Comment: What does 'BUILD in the cloud' mean?
Comment: @Honey , 'BUILD in the cloud' means that the process of fetching source code, compiling the source code and producing an installable package all happen on the service using their own infrastructure. In a 'BUILD in the cloud', the only thing a developer needs is "source code" to an app. No local computing power is needed.
Comment: We switched over to Bitrise; It supports many many features example: custom workflows, writing own extension, and it is reasonably priced.
Answer: So the answer to my question is AppCenter - https://appcenter.ms.
Don't waste your time with the others. Every once in a while Microsoft writes decent software. It's not buddybuild but it's the next best thing. The other ones made me want to tear my hair out. If you have to talk to customer support all the time to get things to work - that's a bad thing. With AppCenter I was up and running in 10 minutes. Easy, stupid-proof configuration - no room for errors of any sort.
Microsoft is pouring a ton of resources into App Center - it's only been launched since August of 2017. They have 24 hour support and they are going to start working on automated signing for iOS in the coming months.
If you really need a lot of flexibility and integrations go with BitRise - but be aware that you'll be spending a lot of time getting things to work and things will break constantly. If you have a dedicated DevOps person on your team and you love customizing/programming your workflows with bash scripts then BitRise may be suitable for you.
Comment: AppCenter doesn't currently upload to iturnesconnect/testflight, have to do it manually.  Breaks the whole CI/CD pipeline.
Comment: Using TestFlight exercises the complete delivery process.
Comment: So we tried AppCenter, and it is just not mature enough and configurable enough. We switched over to Bitrise; It supports many many features example: custom workflows, writing own extension, and it is reasonably priced.
Comment: AppCenter is sufficient for most teams. BitRise is good for teams that want to do weird stuff and would rather spend time on the CI than development.
 (why would you want to write your own extension @zulucoda???)
Comment: AppCenter use to be HockyApp.  MS bought them a while ago and now rebranded and are improving it.   HockyApp heritage was a Distribution platform like the old TestFlight.
Comment: @ahalls why would you want to upload your build to TestFlight? TestFlight is slow and clunky. You should only use TestFlight when you're ready for a new Beta distribution - and that should be done manually once a week at most. AppCenter has its own distribution mechanism for your core dev team.
Comment: I tried bitrise: Build immedately. Tried AppCenter: Needed 6 interactions with their support. --> Microsoft experience.

Alternative to Buddy Build