Do I have to put a comma before "in which" here?

Question: A book, in which you can read interesting things, is more thrilling than TV.
Comment: I wonder how many thumbs up here are based on the sentiment expressed in the sentence.
Comment: And I wonder how a sentence in which the comma is deemed to be optional, to the point that the restrictive- nonrestrictive distinction might not even apply, can be found to be the duplicate of a sentence in which the presence or the absence of a comma makes all the difference. Perhaps upvoters were pleased to see a case in which restrictiveness and nonrestrictiveness worked so clearly.
Answer: It all depends on what you mean to say.
If you want to imply that all books are interesting to read, then the relative clause has to be non-restrictive or non-defining (set off by commas):

A book, in which you can read interesting things, is more thrilling than TV.

If you want to imply that not all books are interesting and that only those that are are more exciting than TV, then you need a restrictive or defining relative clause (without commas):

A book in which you can read interesting things is more thrilling than TV.
Answer: I think it´s the "Adding information - Comma-Rule"
A book is more thrilling than TV.
 + additional information - Restrictive modifier = "in which..."
A man, 78 years old, was caught naked on the streets.
Non restrictive = "78 years old"
Answer: Depends on what you want to convey.
The comma used by you can be understood as a comma with an appositive.

Appositive is a word or word group that defines or further identifies the noun or noun phrase preceding it.
Rule: When an appositive is essential to the meaning of the noun it belongs to, don't use commas. When the noun preceding the appositive provides sufficient identification on its own, use commas around the appositive.
Example: Jorge Torres, our senator, was born in California.
  Explanation: Our senator is an appositive of the proper noun Jorge Torres. Our senator is surrounded by commas because Jorge Torres is a precise identifier.
Example: CEO Julie Minsky will be our featured speaker.
  Explanation: Julie Minsky is necessary to help identify CEO, so no commas are used.

In your example, "In which you can read interesting things" is an appositive.
Now, you see the usage of the comma can be deemed correct or incorrect based on whether the appositive is essential or a mere ancillary descriptor.
You be the judge. What do you want to say?
If you are implying that all books have interesting things to read then Book is a precise enough identifier and the appositive is ancillary. So, use the comma.
On the contrary if you feel that only the books that have interesting things to read are more thrilling than TV then, "In which...things" is a necessary descriptor as to what Kind of books you are talking about so you should skip the skip the comma.
Source
Answer: A comma usually signifies a pause. Read the sentence out loud, pausing after each comma. Now read it out loud without the commas. Your ears should tell you how the meaning is affected.
I think you mean to say, "An interesting book is more thrilling than TV." If so no commas. But you sentence will be awkward. If you intend to say, "A book is more thrilling than TV because you can read interesting things in a book," then you need the commas. Your sentence will nevertheless be awkward and the proposition will be dubious.
I respectfully urge you to minimize commas by rephrasing your sentences. Your writing will be clearer and flow better.
Comment: The rule about pausing is misguided and subjective. Anyone can choose to pause wherever they please in a sentence. That is not a tried-and-true method for determining whether a comma should exist or not.


Can I make a entirely homebrew D&D campaign?

Question: Can I make a entirely homebrew D&D campaign? Or do I have to follow the books for D&D?
Comment: What do you mean by if you can? Are you asking if you're allowed to _play_ a homebrew campagin? Who's going to stop you? Or are you asking about publishing rights?
Comment: There's a big difference between "can it be done?" And  "can *you* do it?". Also, there's a difference between campaign in a homebrew world and homebrew campaign in established setting. Might help if you could tell us what exactly you want to know.
Comment: I don't really know how to make a campaign like can just make a hombrew campaign or do I use the books to make the campaign
Comment: Have you read the Dungeon Masters Guide? Assuming 5th edition? That may actually answer your question.
Answer: There are two types of books for D&D: rulebooks, and modules. Rulebooks like Player's Handbook, Dungeon Master's Guide, and Monster Manual basically are the game; without at least the core rules, you have to make up how everything works yourself and you're not really playing "Dungeons & Dragons" per se. (Instead, you're playing in a homebrew RPG system, or playing freeform, that is, without rules. Both are entirely valid and we take questions about these activities, but if you call them "Dungeons & Dragons" people will get confused.)
There are core rulebooks (e.g. Player's Handbook, Dungeon Master's Guide, and Monster Manual) and supplements (e.g. Tasha's Cauldron of Everything). The core books are usually the bare minimum; supplements are optional. (It is possible to play without the Dungeon Master's Guide or Monster Manual, but it can be hard, especially if you are new.)
The other books, modules, contain premade adventures like Tyranny of Dragons or Curse of Strahd. You need them to play those adventures, but you don't need to play those adventures. You can make up your own adventure, even your own world, and just play with the rulebooks. That is definitely still D&D—in fact, traditionally, it's the default and norm.
Even if you do run one of those adventures, they will encourage you to—and in practice, you will have to—customize them for your group. It is very rare—and almost never a good idea—to run an adventure exactly as printed, and even the adventures themselves will tell you so.
Comment: This answer could be slightly improved by clarifying that tweaking a module slightly will always happen during play, and further that a DM is welcome or even encouraged to tweak the module to match the party's playstyle to any degree.
Comment: There also are books for settings, like Forgotten Realms or Ebberon which provide a place for adventures but not the adventures. Some books like Dragon Heist split the difference with part adventure and part setting.
Comment: @KRyan settings aren't rulebooks like the DMG or the PH, as most settings follow the standard rules. Settings save the DM the trouble of having to create an entire homebrew world. Especially when a player decides to travel a setting like Forgotten Realms fills in a lot https://rpg.stackexchange.com/q/181776/60557
Comment: @MichaelShopsin I almost broke those out, but really, they're just more rulebooks, mostly?
Comment: @MichaelShopsin I assure you, I know what a setting entails; I've even worked on a couple. But I do not think that they are worth breaking out as a separate category for the sake of this answer: they are somewhat different, and also contain some aspects of both rulebooks and modules, but at least by the sense of the term used in this answer (where everything is rulebook or module), "rulebook" covers them well enough and any deficiency in that definition is small compared to the distraction that introducing them as a third category would be in this answer.
Answer: It's your choice
You can make an entirely homebrewed campaign using the DnD system if you want to. If you're making a campaign, everything is your decision. DMs add homebrewed rules, monsters, classes, etc all the time. The core books (Player's Handbook, Dungeon Master's Guide, Monster Manual) are there to help you build characters, make rules, and they give you the basics of the DnD system. The Dungeon Master's Guide has a section on building monsters, classes, player races and magic items, that can really help if you want to make a homebrewed campaign, especially as a new DM.
Comment: Actually, now that I think about it, I've never played completely by-the-books DnD. Always at least a few homebrewed rules/monsters/etc.
Answer: In essence what you are doing is playing "play pretend", just like you did when you were a kid. You imagine a world, and are pretending to be in it. Of course, to make it a game suitable for multiple players you want some structure in the form of rules. You can choose to make those rules up yourself, or you can use the rules someone else has written. (e.g. one or more of the D&D books, but there's plenty others).
After that, you will want some challenges for you and your players: monsters! You can make them up yourself, or you can find them in books written by others. (e.g. Monsters Manual for D&D)
Then, you want a world to play in, accompanied by a story. Same here: you can make a world and a story up yourself, or you can consult a book that someone else has written for you. (E.g. Lost Mines of Phandelver (LMOP))
You have the choice to do it yourself or to consult something else in pretty much every step of the game. You can also mix. E.g. use the rules from the PHB, but with homebrew changes. Or use the LMOP campaign, but with a big flying gummybear instead of a dragon. It's all up to you and your imagination.
Answer: Absolutely!
The only way my friends and I ever played D&D was by making completely homebrew modules. In fact, I've never played an official one. The general rules always still apply, but it's tons of fun to make your own campaign.
Answer: You can do both
My recommendation for new DMs (and even some seasoned ones) is to run a short low level module set in a setting that you and the players find interesting and then if the campaign goes well you can just keep playing with the same characters in the same setting.
This has several advantages:

If this is your first time DMing a lot of the work has been done for you by the writers of the module.
It will give you and your group a chance to see how well you mesh. You may find that you have a problem player, or the group doesn't really work well together IRL. That's fine.
You can drop plot hooks into the story, and many modules will have plot hooks with suggestions for how to develop them.
If someone wants to change characters the end of a module is a great time, and if you have new players they may not like their character as much as they thought they would.

Not every module has a concise description of how many levels are expected to be gained during the module, so you might have to do a little digging, but I'd aim for one that brings the PCs from 1-3 or 1-5.
Note also some modules may say "This is an adventure for a party of level 1 to 3" meaning you could start with level 1 or level 3 characters, not that the characters are expected to level up twice during the module.


"Appreciate Answer" feature for visitors or users

Question: Sometimes when I visit sites for something specific thing I seen "Is it helpful?" link but I never hit it as yes or no. When people searching for something specific and if they will found in Stack Exchange then they'd prefer it , Even when I found something helpful with SE sometimes I'm glad as I'd like to appreciate it ; so I'm thinking if there were feature like "Is it helpful?". But also I'm thinking as for just nice appreciable question and answer ; otherwise they'll mess it with unanswered questions and incomplete answers. Only with positive perspect . "Appreciate Answer". Sounds so much but wish I could see it.
Comment: You can already appreciate answers by upvoting them. Other than that, I have no idea what you're talking about.
Answer: When you're unregistered or without enough reputation to vote, clicking a vote button still does something. The feedback really is stored. Moderators and >10K users have access to a "post feedback" information page. There, they can see - for example - questions that are voted up much higher by real votes than by anonymous/low-rep feedback.
If you really liked a question, you can star it as a favorite regardless of how much reputation you have. Admittedly, this doesn't really affect anything other than letting you easily find the question again and possibly giving the question owner a badge.
I see you're getting close to 200 reputation on one site. Once you get there, you'll receive the association bonus (+100 on every Stack Exchange site you join), which will enable you to, among other things, comment and vote up.
Comment: The "Post Feedback" page no longer exists ... [Post Feedback link is broken](//meta.stackexchange.com/a/209787)
Comment: @DavidPostill On Stack Overflow, it is indeed gone, but weirdly enough, `/tools/post-feedback` still works on all the other places I can check, including Super User.


Why is it that black holes emit Hawking radiation?

Question: Black holes are basically neutron stars with such a gravitational force that even light cannot escape from it. But what causes it to emit Hawking radiation?
Comment: please have a look at this answer of mine to a similar question http://physics.stackexchange.com/questions/209327/can-virtual-particles-be-boosted-into-becoming-real-particles-by-fields-other/209351#209351
Answer:
Black holes are basically neutron stars with such a gravitational force that even light cannot escape from it.

A black hole is a mathematical solution. A neutron star over the critical mass gets so dense that it forms larger and larger time dilation relative to the outside universe thus we get to see what happens on short time scales.

But what causes it to emit radiation

Note that classical general relativity does not predict Hawking radiation. So the answer has to be a quantum effect. So recall that we see things that happen in short time scales?
So things would have to emit radiation in short time scales and if they normally interact with other things in a short time scale it must balance out but the asymmetry and the geometry of the set up makes it not balance out.
Another completely different way to look at it is through the equivalence principle and conclude that an accelerating particle detector clicks more often than one moving at a steady velocity, the Unruh effect. And this just means that what looks like a vacuum in one frame does not look like a vacuum to another frame accelerating relative to the first.
Answer: The reason black holes emit radiation is because virtual particles are popping into existence and popping out of existence throughout space including at the event horizon of a black hole.  When they pop into existence they pop into existence in pairs that then annihilate within a fraction of a fraction of a second.  When a pair of virtual particles pop into existence near a black hole one may fall into the black hole while the other escapes and is unable to annihilate with its twin and so it becomes a real particle that carries away energy that was originally in the black hole.
Answer:
Why is it that black holes emit Hawking radiation?

We don't actually know that they do. Hawking radiation remains a hypothesis. It's been around for so long that people rather take it for granted, but there's no actual evidence for Hawking radiation. And when you read the "given" explanation, it doesn't seem to make sense. See Wikipedia:
"This radiation does not come directly from the black hole itself, but rather is a result of virtual particles being 'boosted' by the black hole's gravitation into becoming real particles".
But see anna's answer here: virtual particles exist only in the mathematics of the model. They are abstract things, not something that can be boosted into reality. That's a fairy tale. So is this:
"An alternative view of the process is that vacuum fluctuations cause a particle-antiparticle pair to appear close to the event horizon of a black hole. One of the pair falls into the black hole while the other escapes. In order to preserve total energy, the particle that fell into the black hole must have had a negative energy (with respect to an observer far away from the black hole)."
Electrons and positrons do not pop into existence, and neither has negative energy. We know of no negative energy-particles. That's another fairy tale. One that totally ignores gravitational time dilation.

Black holes are basically neutron stars with such a gravitational force that even light cannot escape from it. But what causes it to emit Hawking radiation?

They aren't neutron stars, but nevermind. We have good evidence that black holes exist, for example there's something very small and very massive in the centre of our galaxy. And general relativity is one of the best-tested theories we've got. And general relativity features a variation in the "coordinate" speed of light. The light doesn't escape a black hole because the coordinate speed of light at the event horizon is zero. Hawking radiation totally ignores this.


How do I enable the fast charge USB on my linux machine

Question: I have an Asus G11CB tower PC running Pop OS 20.04 LTS and it has a USB port that supports fast charging (basically 5 watts charging without data transfer) but I need to enable it in the Asus Command Center which is an application available only on Windows 10, is there a way to do the same on a Linux Distro?
Answer: Have you tried looking at the BIOS directly?  (Usually DEL or F2 at boot)
Also, check that your BIOS is up to date.
https://www.asus.com/us/Tower-PCs/G11CB/HelpDesk_BIOS/
Comment: I did ... the BIOS is upto date, the thing is on windows it has to be enabled via the asus command center utility, this disables data transfer and the phone charges like it would on an actual charge brick. This  utility(unsurprisingly) does not exist on any linux distro (at least as far as I have looked on the internet).


Forged name to sale a vehicle

Question: Father died last year, no will, 6 daughters and oldest has taken over the estate but youngest daughter a few months ago, had his truck hidden and just sold it and spent the money from sale, she forged his name on title of truck.  What can I legally do ? (I do not know the VIN or plate number)
Comment: Do you have a copy of the title that was transferred? How do you know she forged his name?  (forgery is illegal, but you need to be able to prove it) If there is no will, what does "taken over the estate" mean? There is a probate process that needs to be followed to recognize rightful heirs. It sounds like that probably hasn't happened, but what if it has and you are on the outside? Anyway, it sounds like you all need to get together to sort this out...
Comment: You are one of the other daughters?
Answer: I assume you mean that your father died, then one of your siblings just acted unilaterally. The specific details are governed by the laws of your state, but every state has provisions for "intestate succession" i.e. when someone does not have a will. In every state, somebody would have to petition the court to make them be "in charge", and then they have to follow the law in disposing of the estate. First you have to settle up any debts, then you can divide the remainder between the legal beneficiaries. Let's say that that means "the 6 sisters".
The person in charge gets to implement the law, so could give the youngest sister the truck as (part of) her share. Let's now say that the administrator-sister did not do this: she has a duty to protect the interests of all the beneficiaries. That would mean "subtract that amount from what sister 6 gets", and does not necessarily mean "and file a criminal complaint against sister 6". When all is said and done, if you don't get your fair share, you would have a civil case against sisters 1 and 6, so you could sue to get the money back. There are probably procedures in your state whereby all beneficiaries have to sign off on the disposition of the estate, though the court probably does not affirmatively track whether the paperwork has been filed and go after the person in charge. So you may have to hire a lawyer to get anywhere.
The police / DMV might be interested in document forgery.
Answer: It's not your truck, right? You can report the crime to the police, but that's probably about it.

Forged name to sale a vehicle


Matlab smooth transition between stored configurations (rigid body tree robot )

Question: I currently have a few joint configurations stored for a robot model in Matlab. When I play back and show the robot in different configurations, there is of course no smooth, but abrupt transition. Is there a way to generate all joint configurations in between 2 configurations, so it transitions smoothly? Or if there is any other ideas on how to reach a smooth trajectory, please let me know. Thanks!
Answer: I don't know how you're storing or recalling your presets, but you can put a Rate Limiter block between it and your joint and limit how quickly your joint reference changes.
I made a short clip for you - here I'm using a square wave set to 45*(pi/180) as the amplitude, with a frequency of 0.25 Hz. The net result is 90 degree motion (-45 to +45 degrees) and it switches position every 2 seconds.
You can see at the start that it flips immediately from one position to another. I then add a Rate Limiter block and set the rising and falling slew rates to 90*(pi/180) or 90 degrees per second. This means it takes a full second to go from -45 to +45 degrees, then stays in that position for another second (2 seconds total) before toggling position. Again the transition from +45 to -45 degrees is limited to 90 degrees per second, so it takes a full second to transition.


Reheating/Cooking Sausages in a Microwave?

Question: I bought a fully cooked pack of frozen sausages. On the instructions it says to eat cold(Defrost only in the microwave) and to eat hot(boil them for 2-3 minutes). Why can't I heat them in the microwave, if I want to eat hot? Is it for quality or safety? Would it be safe to eat if reheated in a microwave?
Comment: @RonBeyer - This should be expanded into an answer.
Comment: @gnicko Depending on the sausage, it may also suffer rapid expansion and splatter all over the inside of the microwave...
Comment: If you've ever made a frozen burrito in the microwave, you may understand. Parts will be frozen, parts will be burnt, and you will be disappointed.
Answer: I freeze cooked sausages and reheat them in the microwave, so it can be done.  I prefer to defrost in the fridge, but if that's not and option, the key is to go gently and rearrange. Give them a couple of minutes on medium power, move them around on the plate, then a couple more minutes.  When they're soft throughout and warm at least in places, give them 30s on full, check, and maybe another 30s (having moved them).
This assumes 2-4 sausages, say 150-200g or up to half a pound.  The reason for moving them around is that the microwave will have hot spots and cold spots.  The rotating turntable helps, but there are often concentric circles of more- and less-heated areas.
The instructions that claim you can defrost in the microwave to have a cold product are nonsense anyway.  It won't work. At that point I'd trust my experience over the rest of the instructions as well.
Comment: Yes, I know my units don't convert exactly. That's deliberate because it's deliberately imprecise.
Answer: A microwave oven's heating is selective. It heats liquid water best. As a result, water tends to boil out of the food while heating, particularly if it starts out frozen and is cooked quickly (the frozen water doesn't heat as fast, so the outside has been boiling off for a while by the time the inside is up to temperature).
So if you fully microwave a sausage from frozen at full power, I'd expect the result to be somewhat leathery and wrinkly. I suspect that this is the motivation behind the instructions: not around safety, but around aesthetics.
You can almost certainly get good results, though. I would suggest microwaving at low power, moving them around as Chris recommended, and/or allowing the sausages to sit after cooking so the inside can warm up. Experimentation will be the key here.


Installing apache , php and mysql on ubuntu 8

Question: I want to install php, mysql and apache on my ubuntu ,
I tried all tasks but I can not do it.
there is no package php, apache or mysql
please help me
Comment: what are the steps u did for installing apache,php........
Comment: From commandline: `tasksel`. It will show a list including LAMP server install.
Comment: "I tried all tasks" is very vague. Please tell us *what you actually tried* and also *what happened*.
Answer: 8.04 still has server support until next year (2013-04) so if you're using Ubuntu server, it should be as simple as this:
<code>sudo apt-get update
sudo apt-get install apache2 mysql-server php5 php-pear php5-suhosin php5-mysql
</code>
Hardy (8.04) is just months away from being end-of-life so there are a few implications:

Some package mirrors may have closed down. The desktop support ended in 2011 so mirrors may have started cleaning things up too eagerly. If you're having problems (packages or lists not available), you may need to switch to another.

Things are pretty old. "Support" for an application is essentially a promise that security updates will be backported but it's not a guarantee for anything else. You may be missing out on newer features in the software stack.

This will be dead in under six months. Consider the effort you're putting in here and wonder if that would not be better spent just installing 12.04. That will give you until 2017 before you need to consider upgrading.

The most important thing is you don't leave it rotting.
Outdated, unupdated software is the main reason why the internet has as many problems as it does. If all the XP users in the world applied their security updates when they were released, there wouldn't be anywhere near as much spam or as many viruses circulating around the web.
Linux servers are no different. If you leave an ancient, insecure version of PHP croaking around on the internet, somebody will find it and will exploit it. Before you know it, it'll be serving up phishing websites and hosting malware. Don't let it go this far.
Comment: from what i've  heard from the Server Team people, the packages aren't updated unless there's High/Critical bugs.  As far as I can tell, there're apache security bugs needing fixing in hardy that still aren't fixed and have been there for months if not years.  It's still not advised to use 8.04.  Even the server team is recommending use at least 10.04.


Need help identifing the power rating for this resistor

Question: I have this wire-wound power resistor that appears to be either ceramic or porcelain in construction with a soft brown plastic or vinyl like coating. I want to find out its power rating. My meter shows about 5.2 ohms. A Google search for 160DR5WL returns nothing.
Comment: How much current do you want to put through the thing?  I'll bet you get nowhere close to the limit with anything you can produce.
Comment: I was considering the possibility of using this as a dummy speaker load so I could silently troubleshoot guitar amplifiers in my apartment if I needed to. Guitar amps typical range from 50 to 120 watts.
Answer: I cannot say for sure who the manufacturer of this part is. I've used many of these sorts of resistors in my career, so my speculation below is made with a fair degree of confidence.
Renfrew wire-wound resistors that are 8" long and 1 1/8" in diameter are rated at 160W, which correlates with the 160D marking on the part. I'd hazard to guess that it's rated 160W (or very close to that).
R5 on these sorts of parts usually implies 0.5 ohms. The other marks are probably tolerance and packaging codes. If you measure higher, and your meter is OK, the resistor may be somwhat fried.
Comment: @reemrevnivek If he first measures the short circuit resistance of the multimeter leads and internal circuity and subtracts it from the result then I would expect him to get a good estimate after.
Comment: You can also take power supply with current limiting, put 1 Amp through it and measure the voltage. That should be very accurate.
Comment: Most meters aren't real good at measuring below 1 ohm anyways...
Comment: I've used a bank of Rohm resistors in the same package that were rated at 120W, so we're in the ballpark with 160.
Comment: Thanks! That seems like a fairly good evidenced based ballpark figure to me. Although not shown in the photo, someone did write 4.8 ohms with a marker on the side of it. I'll have to double check the specifications for my meter when I return home tonight.
Answer: Connect it to a suitable power supply and check it for yourself. You will need to judge when the temperature is excessive for your application. You could check against resistors of a similar size and value from the usual suppliers like Digi-Key.


Is there any circumstance in which a strict waterfall project can succeed when requirements are not clearly defined?

Question: I can not see how a software project can make any meaningful progress under a waterfall methodology if the requirements cannot be clearly stated from the outset. Am I missing anything?
Comment: Yes, you need to define what you mean by "strict" waterfall, "succeed" and "progress". Faulty requirements capture will, of course, cause dates to slip regardless of methodology. Whether or not that causes the project to be terminated without reaching completion depends on the what the stakeholders have to say about it.
Comment: I like what the author of Management 3.0 said, "every project is a success until it fails". As Angelo pointed out, you need to define what you consider success. Even products that already sold for several years could be considered failures if the world turns towards a better product that the competition is providing.  If you are asking can waterfall project have profit (i.e. revenue > cost), answer is yes.  But do you consider that a success if non-waterfall project delivering similar product could have delivered more profit?
Comment: And of course let's not discount very lucky guesses about mystery requirements.
Answer: We use waterfall and have completed lots of projects with changing requirements. Waterfall isn't as bad as it's been made out to be and Agile isn't the silver bullet that fixes everything (as many badly done agile projects as waterfall projects as far as I can see.) Neither methodology has a particularly high success rate, in part because users don't know how to define what they want and in part because there are alot of incompetents in our field.
Comment: I would qualify that claim a bit, but I don't entirely disagree. Waterfall done right will fail often. Scrum done right really cannot fail because it doesn't make promises on both scope and date; it just says "we'll do what we can by then" or "we'll do that as quickly as we can." But Scrum is rarely done right, mostly because people don't really understand how to set expectations, and thus (in the eyes of the customer, at least) it does fail as often as Waterfall.
Comment: @pdr You're right about Scrum but in a somewhat trivial way - any methodology that technically promises nothing technically can't fail.  Waterfall modified to "we will take your list of requirements at the beginning and maybe do some of them eventually we hope" also could not technically fail.
Comment: It would help to explain "completed lots of projects with changing requirements".  In my experience, doing this requires a lot of flexibility to change the project plan.  That "flexibility" could be called "Agility" and that would lead one to question how much waterfall was really going on.  An Agile waterfall is -- well -- Agile.
Comment: @pdr, the perception of the customer is the important measure of whether something has failed. Right now no method can guarantee success and no method is perfect. All methods can deliver products or we wouldn't have any live software. We went to the moon on software designed in a waterfall process.
Comment: @psr: Correct, but that wouldn't be an easy sell to the customer. I wish it was, I'd make a fortune by putting a name on it and writing a book.
Comment: @pdr "The Trickle Down Theory of Waterfall Software Projects (How To Make Millions Without Necessarily Writing Any Code)"?  Now you just have to write the book.
Comment: @pdr You are wrong about Agile not making promises on scope and dates.  Agile promises scope and dates based on the current understanding of customer requirements as of right now.  Later if they decide they need an additional feature Y to compensate for the unanticipated complexity of feature X lets say, then scope changes and that pushes the deadline.  Many people interpret Waterfall as being synonymous with a strict unbending contract when in fact they are two very different things.
Comment: @maple_shaft: I disagree. Agility is the acceptance that requirements aren't the only thing that change over the course of a project. We do not promise to deliver a set product on a set day, and only allow that promise to be changed if requirements change, we give estimates based on our current understanding of the world but make it very clear that expectations will be different (and slightly more accurate) next week.
Comment: @HLGEM: Or did we? :) No, seriously, I'm pretty sure I was saying exactly that.
Answer: Comment by "Andrew" above is valid. Also, which part of the requirements is missing. The waterfall methodology is not as rigid as some thinks it is. Waterfall focuses on moving between major stages after enough information and facts have been collected. There is nothing stopping you from refining your analysis as long as you are not re-doing major parts of it.
For example, you can start design without knowing all the required reports and you can start design without knowing all the validation rules. All of that can always be added later.
However, you don't want to start the design with only 1/3rd of the columns in the database identified. Water fall is a great methodology and is quite suitable for most applications where the business is not being invented from scratch and where users know the business.
You can make progress in your database design, screen design, system architecture, use cases and more without knowing all the details up front.
The art here is dividing the problem to pieces that can start and progress with least dependency on other grey areas. This is a generally good approach regardless of the employed methodology.
Answer: It depends on how good the coders are.
If the coders have a good understanding of the business they are working on and if they are clever enough to write the code in a loosely coupled way, then towards the end of the waterfall when the customers see the product they should :
a) not have too much to complain about
and
b) what they complain about can be easily altered and fixed
You have to be good to make it work though!
Comment: I guess it depends on what part of the application you work on, I think Agile is much much harder for database developers. Only someone spectacularly good could create a performant database under those conditions.
Comment: OF course you have to be good to make agile work as well.
Comment: @HLGEM, not as good... probably.
Answer: I have never heard of a project using a waterfall methodology that did not incorporate change orders.  So in practice, if the initial requirements are wrong (they are always wrong to some degree except perhaps on a tiny project - I've never seen them be 100% perfect) you just have change orders, and redo whatever you have to.  Does that mean it's not really waterfall?  It's really a philosophical question.
Can it succeed?  It can, but the methodology isn't as focused on dealing with changing requirements, so it may not cope with it as well.
Actually, what I've seen a lot is that when requirements are not accurate then waterfall succeeds pretty well for the software developers , not as well for the clients.  The reason is that most of the time a waterfall methodology was adopted in the first place because the client, quite reasonably, wanted to know up front exactly what the project would cost.  Unfortunately nobody knows how much a software project will cost.  Sometimes clients never figure that out and refuse to hire anyone that won't give them a fixed price.  Since at that point developers trying to get the client's business are competing primarily on the basis of quoting a low price, they underbid and hope to profit on the change orders, which cover anything beyond the initial requirements and usually carry a high hourly rate.
Therefore, when the requirements are bad that means the developers get more of the profitable part of the contract (change orders) and less of the unprofitable part (the list of requirements the client thought he wanted back when this all started).
But eventually the true requirements are uncovered and the changes made, so for the client it "succeeds" in the sense of getting done, though at higher cost in time and money than if the requirements were right initially.
So I like Agile personally for two main reasons - first it aligns the interests of the client and the developer better than the "is this a change order?" battles waterfall can lead to, and second because frequent deliverables help mitigate the risks.  But "pay us and we'll try to write you some software, but we don't yet know how much you'll get for your money" is a tough sell sometimes, even if it's really only admitting the underlying reality of the situation.
Answer: The requirements not being clearly defined doesn't automatically doom the project, IMO.  The probability of failure is high I'll concede though there can be cases where it still succeeds.
Answer: It can. You just have to build contingency into your initial estimates and explain that if the requirements are uncertain, so are your estimates. If requirements are coming in at the same pace that development is progressing, it will work just fine.
Remember that Waterfall is not the opposite of Agile. All you are saying is that you will not deliver components incrementally. It's just "give us your requirements as soon as you can and we'll code, delivering you a product at the end. But if you don't bring us requirements quickly enough, your product will be delayed."
However, Scrum is designed to manage uncertainty and change and I still think that's the best way to go. I'm just saying that if the client isn't interested then that doesn't mean you're certain to fail.
Answer: Allow me to recommend that you read "Death March" by Ed Yourdon. Once you realize that you aren't the ONLY one working under less than ideal conditions, it really is helpful and motivating. That said, it also has not dissuaded me from asking uncomfortable questions--like why are we coding without clearly defined requirements?
Answer: The circumstance for success when answering the question of how long it will take to build something neither you nor the client understand is to say it will take way way longer than you think it will. Put in months, or years of slack if you have to.


Cox model: time interaction vs. covariate interactions

Question: In the Cox model, violation of proportional hazards suggests that the effect of an exposure is not constant over time. One way this can be handled is by including time varying coefficients in order to produce covariate - time interaction term(s). It seems that there is so much emphasis on checking whether there is the presence of such a covariate - time interaction; but what about interactions of covariates with other covariates? I'm guessing this is just as important. What is it about the covariate time (i.e. proportional hazards) assumption that makes this so special and perhaps more important than any other type of interaction between covariates?
Answer:
... what about interactions of covariates with other covariates? I'm guessing this is just as important.

Interactions among covariates can be more important than covariate-time interactions, and might remove the need for time-varying coefficients.
If you omit any outcome-associated predictor from a Cox model, you can get biased estimates of the coefficients of included predictors and even get an apparent violation of proportional hazards (PH) that could be fixed by proper specification of the model. Omitting an outcome-associated interaction term thus can lead to an apparent violation of PH.
The covariate-time interactions used to model time-varying coefficients have their place, but I think that they tend to be over-emphasized. Very often a "statistically significant" violation of PH is of little practical consequence, or it might best be described by showing the shape of the plot of scaled Schoenfeld residuals over time rather than by trying to find an analytic expression for the time dependence. It's also possible that a PH model isn't appropriate for the data so that a different approach is better. See Sections 6.5 or 6.6 of Therneau and Grambsch.


Performing inheritance in JavaScript

Question: Now while I know that you can not perform inheritance like you would in C#, I have seen it mentioned on the Internet that it is kind of possible. If it's not possible using plain JavaScript code then would it be possible using Ext JS and if so how?
Answer: The JavaScript object oriented paradigm is prototype based. There are no "classes", just objects.
You can implement inheritance in different ways. The two more popular alternatives are the "pseudo-classical" and the "prototypal" forms. For example:
Pseudo-classical inheritance
I think this is the most popular way. You create constructor functions that you use with the new operator, and you add members through the constructor function prototype.
// Define the Person constructor function
function Person() {}

Person.prototype.sayHello = function(){
    alert ('hello');
};

// Define the Student constructor function
function Student() {}

// Inherit from Person
Student.prototype = new Person();

// Correct the constructor pointer, because it points to Person
Student.prototype.constructor = Student;

// Replace the sayHello method (a polymorphism example)
Student.prototype.sayHello = function () {
    alert('hi, I am a student');
}

var student1 = new Student();
student1.sayHello();

Prototypal inheritance
Basically we make a helper function that takes an object as a parameter and returns an empty new object that inherits from the old one, objects inherit from objects.
// Helper function
if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
}

var person = {
    sayHello : function () {
        alert('Person object');
    },
    walk : function () {
        alert('walk');
    }
};

var student1 = Object.create(person);
student1.sayHello = function () {
    alert('hello I am a student');
};

Another interesting form is the parasitic inheritance. In the "derived" constructor you create a "base" object instance. That object is augmented and that new instance is returned:
// Person constructor function
function Person(name) {
    this.name = name;
}

function Student(value) {
    var that = new Person(value);
    that.sayHello = function () {
        alert('hello I am a student');
    };
    return that;
}

Answer: JavaScript inheritance is done through prototypes. You do not define anything with a class keyword, but you make a function that's used as a constructor to build new objects (with the new keyword ).
function person(name) {
    this.name = name;
}

person.prototype.getName = function() {
    return this.name;
}

var john = new person('john');
alert( john.getName() );

You can access this prototypal method with:
person.prototype.getName

All newly created objects are constructed based on the core constructors (sometimes called classes by people coming from classical inheritance languages, or the core objects) such as Object, so every object in JavaScript has access to Object.prototype. If you were to make a custom method for all objects you would do:
Object.prototype.foo = function(){};
alert( typeof ({}).foo ) // 'function'

Key notes:

The this word is used to refer to the current object, so this.name sets the name property of the object being created when new person is invoked.
You can define new prototypal methods on the constructor with constructorName.prototype.nameOfMethod = function(){} after you define the constructor. You do not need to define it inside of the constructor, and it's more efficient this way.
Unless you explicitly define properties on the object, so with the john object I made, since there is no getName method directly attached to the john object, the interpreter needs to travel up to the prototype of the john object, which is the person.prototype and access the method from there. You can use hasOwnProperty to see if an object directly owns a property or not.

Reference:

Inheritance revisited
Classical Inheritance in JavaScript
Answer: If you have done Object Oriented Programming in JavaScript, you will know that you can create a class as follows:
Person = function(id, name, age){
    this.id = id;
    this.name = name;
    this.age = age;
    alert('A new person has been accepted');
}

So far our class person only has two properties and we are going to give it some methods. A clean way of doing this is
to use its 'prototype' object.
Starting from JavaScript 1.1, the prototype object was introduced in JavaScript. This is a built in object that
simplifies the process of adding custom properties and methods to all instances of an object.
Let's add 2 methods to our class using its 'prototype' object as follows:
Person.prototype = {
    /** wake person up */
    wake_up: function() {
        alert('I am awake');
    },

    /** retrieve person's age */
    get_age: function() {
        return this.age;
    }
}

Now we have defined our class Person. What if we wanted to define another class called Manager which inherits some properties from Person. There is no point redefining all this properties again when we define our Manager class, we can just set it to inherit from the class Person.
JavaScript doesn't have built in inheritance but we can use a technique to implement inheritance as follows:
Inheritance_Manager = {};//We create an inheritance manager class (the name is arbitrary)
Now let's give our inheritance class a method called extend which takes the baseClass and subClassas arguments.
Within the extend method, we will create an inner class called inheritance function inheritance() { }. The reason why we are using this inner
class is to avoid confusion between the baseClass and subClass prototypes.
Next we make the prototype of our inheritance class point to the baseClass prototype as with the following code:
inheritance.prototype = baseClass. prototype;
Then we copy the inheritance prototype into the subClass prototype as follows: subClass.prototype = new inheritance();
The next thing is to specify the constructor for our subClass as follows: subClass.prototype.constructor = subClass;
Once finished with our subClass prototyping, we can specify the next two lines of code to set some base class pointers.
subClass.baseConstructor = baseClass;
subClass.superClass = baseClass.prototype;

Here is the full code for our extend function:
Inheritance_Manager.extend = function(subClass, baseClass) {
    function inheritance() { }
    inheritance.prototype = baseClass.prototype;
    subClass.prototype = new inheritance();
    subClass.prototype.constructor = subClass;
    subClass.baseConstructor = baseClass;
    subClass.superClass = baseClass.prototype;
}

Now that we have implemented our inheritance, we can start using it to extend our classes. In this case we are going to
extend our Person class into a Manager class as follows:
We define the Manager class
Manager = function(id, name, age, salary) {
    Person.baseConstructor.call(this, id, name, age);
    this.salary = salary;
    alert('A manager has been registered.');
}

we make it inherit form Person
Inheritance_Manager.extend(Manager, Person);

If you noticed, we have just called the extend method of our Inheritance_Manager class and passed the subClass Manager in our case and then the baseClass Person. Note that the order is very important here. If you swap them, the inheritance
will not work as you intended if at all.
Also note that you will need to specify this inheritance before you can actually define our subClass.
Now let us define our subClass:
We can add more methods as the one below. Our Manager class will always have the methods and properties defined in the Person class because it inherits from it.
Manager.prototype.lead = function(){
   alert('I am a good leader');
}

Now to test it let us create two objects, one from the class Person and one from the inherited class Manager:
var p = new Person(1, 'Joe Tester', 26);
var pm = new Manager(1, 'Joe Tester', 26, '20.000');

Feel free to get full code and more comments at:
http://www.cyberminds.co.uk/blog/articles/how-to-implement-javascript-inheritance.aspx
Answer: JavaScript is a prototype based inheritance.  However if you use Ext-js, it will allow you to have syntax more a classical inheritance syntax. Be warned it is still prototyping under the hood, so there will be some nuances that you should be aware of. Mainly that it is load and go, so the order you load your script matters and your class definitions sit essentially in memory.
There are some good tutorials out there.  I suggest going through the initial docs and watching this video. Ext does a pretty good job about making JavaScript feel more like Java or C#, and reducing the amount of markup you write. However the trade off is that you have a higher learning curve for customizing components. Once you get a stronger grasp of the scoping of the language, you will be able to use mixins, functions better to reduce the need for inheritance.
Answer: You may try
subClass.prototype.__proto__ = baseClass.prototype;

For details please visit my website.
Answer: Here is a simple example of inheritance. ClassA is a parent and ClassB is a child and common task is call a print method of ClassA through ClassB, therefore here the first initialized constructor then create prototype method for the parent class.
var ClassA = function() {
this.name = "class A";
 }
var a = new ClassA();
ClassA.prototype.print = function() {
alert(this.name);
}

var inheritsFrom = function (child, parent) {
 child.prototype = Object.create(parent.prototype);
 };
var ClassB = function() {
     this.name = "class B";
     this.surname = "I'm the child";
 }

 inheritsFrom(ClassB, ClassA);
 var b = new ClassB();
 b.print();

Performing inheritance in JavaScript


Is it safe to post entire syslog to the net?

Question: Is it safe to post the entire syslog from my PI to the web? Could someone use the data to hack into my pi? Could it make my network more vulnerable to attack?
Answer: Syslog contains data in cleartext. So whatever a process deemed fit to be logged could be read by anyone. It could however be argumented that it would be very unreasonable for any service to log confidential data such as credentials but do you really want to put your trust on that?
Even in the clear there could be data that you might not want to distribute widely, e.g. connection data of your login requests (stating your IP and time). While that wouldn't make your Pi vulnerable per se, it would still tell something about you.
Answer: I wouldn't recommend it. Considering that syslog is used to track sensitive system information, there's no sense handing out such information to the general public. If nothing else, you should redact sensitive information that is not relevant to the problem you're working with. As @Ghanima notes, it's really up to individual programs using syslog to decide how much info to dump, and this may vary depending on settings (e.g. debug or verbosity settings).
A lot of sensitive information has been revealed on pastebin and similar sites by people troubleshooting problems.


What type of wood treatment does my garden office / summer house need?

Question: The exterior wood on the top of my garden office / summer house is looking a bit tired / worn out - see picture below. What kind of treatment should I use to restore/protect the wood? See the lower parts for how it should look.
Comment: The answer depends on a lot of things, like your taste, yes? What have you looked at and considered?
Answer: Generally you want to treat exterior wood like this with a water-proofing treatment at least once a year. It helps to provide UV resistance and keep water out.
Water is your big enemy here. It looks like the wood was installed with some lacquer for waterproofing (hard to tell from the photo), but it's worn away. You've got a couple of options
Paint it
Paint will waterproof and make it look nice and uniform again. It sounds like you want the wood look, but as far as options go, this one is the easiest and had the fewest questions on maintenance. I mention it for completeness.
Stain and waterproof
I'm assuming you just want to work on the greyed spots. This is trickier because matching stain is difficult. Just like painting, your best bet is to stain the whole thing. The next best option is to find a stain that's close enough. Because you have a natural break in the soffit and wall, a close enough color might do the trick, and people will assume the wall just looks different due to lighting.
Then you'll want to waterproof it. This isn't a "one-and-done" either. Your wood will grey over time. The more often you waterproof it, the longer it will stay the same color. Waterproofing also helps prevent the boards from warping and splitting over time (water is your enemy there).
Answer: Oxalic acid is a wood bleach that I have used many times to restore wood back to its original color. It comes dry in a container and is to be mixed with hot water if possible, and used in warm weather for best results. It can be done in cooler weather and with warm or cool water, but the results will no where near the same.
Read the instructions carefully, use PPE, and rinse rinse, rinse. A long handled scrub brush will come in handy for all steps. If it is not rinsed off completely, it will leave a white haze, and you won't see it until everything is dry.
Let it dry for a few days and finish with an exterior grade clear finish. This will keep the look of the wood you want for  while. The real trick s to get the finish into the end grain of the siding, where it will soak up the finish, rather than soaking up water when it rains next time.


VBA+Solver loop not printing results for each row

Question: I am a Visual Basic for Application beginner and got the following problem.
I have to use the Excel Solver to change two variable cells in one row, to let go another cell to zero in the same row. The cells are connected by simple calculations in Excel itself. Also some constraints have to be defined.
Using the code below, only the last defined row will be rewritten into the cells in excel. The rows before were calculated but not rewritten.
<code>Sub solverloop()

    Dim i As Long
    For i = 96 To 154
        SolverReset
        SolverOk SetCell:="$AE$" & i, MaxMinVal:=3, ValueOf:=0, ByChange:=Range(Cells(i, "V"), Cells(i, "W")), Engine:=1, EngineDesc:="GRG-Nichtlinear"

        SolverAdd CellRef:=Range(Cells(i, "V"), Cells(i, "W")), Relation:=3, FormulaText:="0"
        'Solving the Modell, but message box which must be confirmed by the user will not be displayed
        SolverSolve UserFinish:=True
        'Finishing the model and keep the last result
        SolverFinish KeepFinal:=1
    Next i

End Sub
</code>
Comment: there is still some information required, what does **SolverReset** do?, how about **SolverOk**, **SolverAdd**, **SolverSolve**, **SolverFinish**
Answer: The SolverReset should clean the information inside the solver, for example the target cell.
SolverOK is the command to define the solver operation. The command works like a remote controller. It can be done with a mouse or keyboard. The defined cells are the same as you can see when you open the solver window by mouse.
SolverAdd, added the cells which can be changed by the software(solver itself) to achieve the defined value in the SolverOK function.
SolverSolve is the same as you press the button, which starts the Solver solving the defined informations. with the add UserFinish:=True the button must not pressed every row.
SolverFinish should keep the achieved solution and "should" write it back into the excel cell.
Thx


Setting Group Node Socket Type

Question: Is there a way to add a socket of a specific type to group nodes? Currently, it seems that they default to grey scalar sockets, and I don't see any way to change their type.
Comment: Try dragging the wire to the empty circle node socket on the group node.
Comment: Did you drag the wire from the BSDF/vector to the group output/input or vise-versa?
Comment: Ahhh no.. I've been adding sockets with the little plus button on the side panel.
Comment: Related: http://blender.stackexchange.com/q/5459/599
Answer: You need to connect the temporary socket (red) to the values you want to make available from outside the group.

When tab out of the group you will have all of them available for wiring with the correct type (indicated bei their color).

Note that you can't edit them later you would need to recreate the group.
Comment: @PGmath You should post alternative answers, we really to improve the answer ratio.
Comment: As of blender 2.75, it is possible to remove sockets (using the cross `X` button in the right pane). Therefore it is possible to change the socket type by creating a new one and removing the old one, without the need to re-create it "from scratch" (it will sadly break existing connections on uses of the node, though).
Comment: Oh cool - kind of a silly metric though.. so many experts here give perfect answers within minutes :)
Comment: You're too fast!  I was just about to hit the "post answer" on mine!
Comment: Answer ratio over the whole SE site, you mean?
Comment: @ajwood We need all criterias green  to promote and leave the beta status here: http://area51.stackexchange.com/proposals/40377/blender answer ratio is 1.4 required is 2.5

Setting Group Node Socket Type


Wipe system partition

Question: When installing a custom ROM shouldn't we wipe system partition along with data, dalvik, and cache?
What are the differences with and without wipe?
Answer: You should. That is a "clean flash" and is normally recommended in installation instructions. This ensures that the ROM is written on a clean slate
At times, like in the case of "nightly" ROMs or some mods to ROM, /system is not wiped but written over the existing system called "dirty flash" (not even /data  or cache is wiped)
As a thumb rule, switching over from stock to custom ROM or from one custom ROM to another, clean flash is recommended. ROM chefs clearly mention this in instructions. Also, if you are upgrading to a higher version of ROM by clean flashing it (Thanks to Izzy who pointed this in comments)
Comment: Strictly speaking, a "dirty flash" is a flash were you don't wipe anything (i.e. not even `/data`). But your advice is correct: when switching between different ROMs, one should always do a "clean flash" (i.e. wipe `/cache` and `/data`, and best also `/system`) – also when doing a "major upgrade" to a newer Android version. In the latter case it might not always be necessary (there are even some OTAs performing a "dirty upgrade" – I've seen this e.g. on the Galaxy 7 Edge updating from MM to N), but it never hurts (except you've got to install/configure everything again).
Comment: @Izzy: thanks for adding useful inputs. I deliberately left out the dirty flash distinction to focus on the /system but added it now, as also higher OS bit. My upgrade to Oreo via OTA a couple of days back was also "dirty"
Comment: So if I upgrade from 6.0 stock to 7.1.2 lineage OS nightly I should do that with a clean wipe or a dirty wipe?I did that with both of them and I don't see any difference.
Comment: I am not familiar with Lineage but you would need to see the instructions. However, it is best to do a clean flash not to have problems. And problems may pop up later too, not visible immediately on dirty flashing

Wipe system partition


Merge 2 same repository GIT

Question: experts on stackoverflow..
I'm new on git, develop C# project with small team. assuming the project need contribution from freelancer, i lock important part of my code by create the DLL, and create a new GIT repo for that project with DLL for freelancer to work on it. what i want to know is, how to merge the freelancer repo with my repo if we edited the same file? is it OK using submodule on git?
thanks in advance.
Answer: I would use a submodule to house an obfuscated DLL for him to use. All you have to do is allow him to push his own branch to the outer repo and coordinate like that.
Answer: If the DLL can be developed at a different pace (with a different lifecycle) than your main code, then submodule is better: it allows you to reference a fixed revision of said DLL developed in its own repo.
If the two set of files are tightly linked (you cannot change one without having to change the other), the subtree strategy is better (see subtree merging or subtree merge).
See "How do you merge two git repositories?".
If you choose submodules, you still can subtree merge said submodule in your repo: see "Git commands to automatically subtree merge a project with submodules?"

Merge 2 same repository GIT


Check Convert Lead permission

Question: How to check whether logged user having 'convert lead' permission on lead object or not?
Answer: Not sure of the context of getting this but you can find the permission in the permissionset object with the query below given the current user id.

SELECT permissionsConvertLeads FROM PermissionSet WHERE profileid = 'userprofileid'
Comment: Just use.    Id profileId=userinfo.getProfileId();
Comment: SELECT permissionsConvertLeads FROM PermissionSet WHERE PermissionSet.Profile.Id = 'userprofileid'     like this it is Working.Thanks
Answer: I needed to implement something this week that checks this permission, but I'm not sure the accepted answer solves all use cases.
If the user was given the Lead Convert permission through a permission set and not via the profile, I am fairly certain that the PermissionSet record for their profile will have this permission as false but the PermissionSet record for their permission set will have this permission as true.
I implemented something like:
<code>Boolean CanConvertLeads = false;

List<PermissionSetAssignment> permissionSetAssignments = [SELECT PermissionSetId FROM PermissionSetAssignment WHERE AssigneeId = :UserInfo.getUserId()];
Set<Id> permissionSetIds = new Set<Id>();
for (PermissionSetAssignment assignment : permissionSetAssignments) permissionSetIds.add(assignment.PermissionSetId);

if (permissionSetIds.size() > 0) {
    List<PermissionSet> permissionSets = [SELECT PermissionsConvertLeads FROM PermissionSet WHERE Id IN :permissionSetIds];
    for (PermissionSet permissionSet : permissionSets) {
        if (permissionSet.PermissionsConvertLeads) CanConvertLeads = true;
    }
}
</code>

Check Convert Lead permission


SystemVerilog support of icarus (iverilog compiler)

Question: I am using iverilog on a Mac, and I have problem compiling some codes that include always_ff and always_comb blocks. ModelSim compiles those codes without any problem. Is it possible to configure iverilog so as to support always_ff and always_comb blocks, or they are just not supported by the compiler?
Comment: Is there any other way I can compile SystemVerilog on a Mac ? Or I have to stuck with VM (or native windows ? )
Answer: AndresM's answer is not completely accurate. Icarus verilog defaults to IEEE Std 1364-2005, and it is the better supported standard, but that can be changed with the -g switch. From man iverilog:

-g1995|-g2001|-g2001-noconfig|-g2005|-g2005-sv|-g2009|-g2012
Select the Verilog language generation to support in the compiler.  This selects between IEEE1364-1995, IEEE1364-2001, IEEE1364-2005, IEEE1800-2005, IEEE1800-2009,  or  IEEE1800-2012.   Icarus Verilog  currently  defaults  to the IEEE1364-2005 generation of the language. This flag is used to restrict the language to a set of keywords/features, this allows simulation of older Verilog code that may use newer keywords and for compatibility with other tools. Much of the IEEE1800 generations functionality is not currently supported.  The IEEE1800 generations do parse all  the keywords, so they can be used to verify that IEEE1364 compliant Verilog code does not use any of the new IEEE1800 keywords.

Indeed, it tells you so when trying to use unpacked arrays in ports:

error: Ports cannot be unpacked arrays. Try enabling SystemVerilog support.
Answer: always_comb, always_latch and always_ff are some of the keywords that were introduced in the SystemVerilog IEEE Std 1800-2012.   They are not part of the Verilog IEEE Std 1364-2005, which is what the Icarus Verilog compiler supports.
I am not aware of any free SystemVerilog simulators.  However, you can always simulate and synthesize your SystemVerilog design using EDA Playground.
Comment: Verilator is an open source simulator that supports a synthesizable subset of SystemVerilog: https://www.veripool.org/wiki/verilator
Comment: @dave_59: I believe Altera Modelsim Starter Edition is supported on both Windows as well as Linux.  Not sure about MacOS though.
Comment: The free SystemVerilog simulators are only supported on the Windows platform, and those do not support the full language.


I "random" meaning with known probability?

Question: Can I say that a phenominon(e.g. like a coin flip)
Is not deterministic but also not 50/50
,rather completly unpredictable ?
Is there a term for such behaviour ?
Is that what "random" mean or is random apply for 50/50 ?
Comment: I'm voting to close this question as off-topic because it's about the mathematical definition of randomness, not about philosophy.
Answer: Determinism typically means (something like) being predictable in principle, if given adequate information and computational power.  If I understand what you mean by these terms, then I would say that a coin flip is both deterministic but also unpredictable due to the fact that we do not in fact have the adequate information and/or computational power necessary to make a prediction within acceptable measurement error.


why are dizygotic twins genetically dissimilar

Question: I am a high school student and I am a little confused in a topic related to dizygotic twins, I get to know that dizygotic twins are genetically dissimilar because they are formed as a result of two different fertilizations but my question is that we know sperms are formed by meiosis in germ cells and each germ cell produces 4 sperms which are genetically different from each other but there is not only a single germ cell ,they are in millions so every time meiosis occurs 4 sperms are produced from each in millions so 1/4th of them should share common genetic material? so dizygotic twins can be genetically similar ,isn't it?
Comment: When sperm cells are formed via meiosis, all resulting mature sperm cells are unique from each other due to meiotic recombination; their genomes are shuffled in such a way that they will never be identical, even between daughter cells of the same germ cell. The deck of cards is always shuffled uniquely, so even if the same daughter pair of sperm meet with a pair of same-daughter eggs, it will still produce a unique individual (zygote). See [here](https://en.wikipedia.org/wiki/Meiosis).
Answer: Dizygotic twins are formed as a result of fertilization of 2 different eggs by 2 different sperms.
For the 2 zygotes to be genetically identical it is necessary that both eggs and sperm have exactly same genetic material.
You cannot say that 1/4 th of sperms will share same exact same genetic material..during meiosis there is recombination..now there is no defined way that only a certain gene will recombine  with the homologous pair..these recombinations are quite random..so each time a new recombinant is formed. Further variation comes during Anaphase as the sister chromatids seperate hence generating even more variant sperm.
Even if 2 in million sperms are same..it is not certain that these 2 will fertilize eggs..it can be any other sperm
Moreover for dizygotic twins to be genetically identical the 2 eggs should also be genetically identical..but again the above reasons show that this is quite difficult..(here the eggs won't be in millions.. instead 2 eggs will be released during ovulation but recombinations happen still)
Now probability of  fertilization of these 2 similar eggs by 2 identical sperms out of millions is almost nil
Comment: It would be best to include citations.  Also, while you talk about meiotic recombination you completely neglected to mention the more fundamental concept of independent assortment, which in and of itself yields an identicalness probability of roughly 1 out 70 trillion on humans.


How to move the Show Applications icon to the middle of the GNOME Dock?

Question: I'm running Ubuntu 16.04 with GNOME. I have already used the Dash to Dock extension to move the icon at the bottom, however now I want to move the Show Applications icon of the Dock to the middle of the Dock so that it kind of looks like Android. Is there any extension or trick to do that? I have already googled for it, but found no good solution.
Answer: Short and perhaps disappointing answer: no. This would need to be implemented as an additional option in Dash to Dock, next to the current options of moving the application icon to the start or to the end.


I found this on the beach at Breamlea in Vic Australia and wondered if you could tell me what it is please

Question: It is about 6.5 x 5 centimetres and semi transparent.
It has quite a tough skin and is hollow inside. Like a tight clear tooth shaped balloon. I have put a coin next to it for you to see the size.
Comment: Dentist merchandise?
Answer: It's a swim bladder, probably a porcupinefish swim bladder. They can be found washed ashore still inflated. They've been described as "molar shaped". (Picture from Australian Museum.)
Answer: It's hard to tell exactly, but if I had to bet I'd say it's a small part of an algae called Neptune's necklace:

Some species are native to New Zealand and Australia. Where two "branches" split, the shape you found can be produced.
Looks like they're also found in your area: http://bie.ala.org.au/species/NZOR-4-7414


How to test difference between standardized difference between means

Question: On a data set I inherited, I calculated the standardized difference between the means of 2 groups, d, for each of 5 variables.  All the data was collected from same set of about 175 people, with 35 in the smaller group.  What test might I use to compare the d's?  One of the 5 d's is noticeably different from the others, but it could be due to chance.  Thanks.
Comment: To clarify, I have 5 effect sizes. How do I determine if they are different to a statistically significant extent?
Comment: So for each of the 5 variables what is the model you assume ? Is it a an ANOVA with two groups ? With homogeneous variances or not? Are the 5 models independent of each other ?
Answer: This can be easily done with methods described in chapter 19 by Gleser and Olkin in the Handbook of Research Synthesis and Meta-Analysis (2009).
First, put the 5 d-values into a vector, $\vec{d}$.
Next, we need to construct the $5 \times 5$ variance-covariance matrix for $\vec{d}$. The diagonal elements (the variances) are given by
$$Var[d_i] = \frac{1}{n_1} + \frac{1}{n_2} + \frac{d_i^2}{2(n_1 + n_2)},$$
where $n_1$ and $n_2$ are the group sizes (see equation 19.26 in the chapter). The off-diagonal elements (the covariances) are given by
$$Cov[d_i, d_j] = \left(\frac{1}{n_1} + \frac{1}{n_2}\right) r_{ij} + \left(\frac{d_i d_j}{2(n_1 + n_2)}\right) r_{ij}^2,$$
where $r_{ij}$ is the correlation between variable $i$ and variable $j$ in your data (see equation 19.27 in the chapter). Let's call the resulting matrix $V$.
Now you can do several different things, including:

Test the null hypothesis that the true standardized mean differences underlying these 5 observed effects are the same (i.e., $H_0: \delta_1 = \delta_2 = \ldots = \delta_5$). This is commonly called a 'test for heterogeneity' in the meta-analytic literature and can be done with the so-called $Q$-test (see equation 19.31).
Test whether the true standardized mean difference for one particular effect is different from the rest (which are assumed to share the same common true effect). For this, you can fit a model that includes a dummy variable for that one effect believed to be significantly different and then test that dummy (see section 19.4.2 for regression models with such data).

I'll illustrate all of this with some made-up data and R code.
<code>### group sizes
n1 <- 35
n2 <- 175-35

### vector with the observed d values
d <- c(.24, .10, .38, .86, .29)

### construct the var-cov matrix (R is the correlation matrix of the 5 variables)
R <- matrix(c( 1, .52, .35, .68, .44,
              NA,   1, .48, .27, .33,
              NA,  NA,   1, .56, .25,
              NA,  NA,  NA,   1, .49,
              NA,  NA,  NA,  NA,   1), nrow=5)
R[upper.tri(R)] <- t(R)[upper.tri(R)]
V <- (1/n1 + 1/n2) * R + (outer(d, d, '*') / (2*(n1 + n2))) * R^2

### load metafor package
library(metafor)

### fit model assuming homogeneous effects
res <- rma.mv(d, V)

### examine results (esp. Q-test for heterogeneity)
res

### test if the 4th effect is significantly different from the rest
### note: I(1:5 == 4) gives me a dummy variable that is equal to FALSE (0)
### for effects 1, 2, 3, and 5, and equal to TRUE (1) for effect 4
res <- rma.mv(d ~ I(1:5 == 4), V)

### examine results (esp. the p-value for the dummy variable)
res
</code>
So, in these data, we would reject the null hypothesis that the true effects are homogeneous ($Q(4) = 20.97$, $p = .0003$) and we would conclude that the 4th effect is significantly larger than the rest ($p < .0001$). In fact, the test for residual heterogeneity is not significant ($Q(3) = 2.23$, $p = .53$), which implies in this case that there is no significant amount of heterogeneity among effects 1, 2, 3, and 5.
One word of caution: You are picking out that one effect to test that appears to be different from the rest. But you did not choose it a priori -- you picked it after examining the effects. So, a better approach would be to consider all 5 possible tests you could have run and apply a correction for multiple testing. In the example above, the test easily survives a Bonferroni correction (just multiply the p-value for the dummy by 5), but that may not be the case in other data.
Addition: Here is code that allows you to fit all 5 models, extract the p-values, and then apply some correction for multiple testing, such as Holm's method.
<code>pvals <- rep(NA, 5)
for (i in 1:5) {
   res <- rma.mv(d ~ I(1:5 == i), V)
   pvals[i] <- res$pval[2]
}
round(p.adjust(pvals, method="holm"), 4)
</code>
The results are:
<code>[1] 0.0305 0.6274 0.3228 0.0001 0.3835
</code>
So, for these data, there is some evidence that the first and fourth values could be considered to be significantly different from the rest.
Comment: In short, you can reconstruct what the MANOVA would be doing, and then test various contrasts based on the MANOVA variance-covariance matrix.  Is that a valid summary?
Comment: Probably worth noting here: given a difference in effect sizes, $\delta_1 - \delta_2 = \Delta$, if $\text{p-value}(\delta_1) \leq \alpha$ and $\text{p-value}(\delta_2) > \alpha$, it could be the case that $\text{p-value}(\Delta) \leq alpha$.
Comment: @AndrewM Not quite. MANOVA tests for mean differences. The OP is asking for a way of testing the standardized mean differences against each other. That is not quite the same thing. Aside from that, yes, the approach is a sort of multivariate analysis of these effect sizes.
Answer: I don't know any statistical test to check the difference of effect sizes. But nevertheless there is a possible solution to the problem: confidence intervals.
You can calculate the confidence interval for each of your d. If the confidence intervals have some large intersection it is OK to claim that they are similar. If they have no intersection, they are definitely not similar.
Calculating confidence intervals for effect sizes is not simple - it requires non-centrality parameters see for example wikipedia page. I use the  R package MBESS
Comment: My solution with confidence interval is really to compare 2 effect sizes. Comparing the 5 of them would require some correction for multiple correction - but that correction works for hypothesis testing - I do not know how to use it in the confidence interval approach.
Comment: Comparing CIs is not taking the correlation between the $d$ values into consideration.
Comment: If there a way to compare even 2 measures of effect size?  That would be a start, but one omnibus test would be better.
Comment: @JoelW. This is easy with a Bayesian approach but I can't help if you don't answer my questions.
Answer: I'm a little confused at your terminology (in particular, I think you mean d is an index for the variables, but I'm not 100% sure. You also don't provide a lot of context for how the d's are related. I'm going to assume the variables are continuous because you standardized them and compare means. Without making any other assumptions, you could try Multivariate Analysis of Variance, followed by ANOVA or t-tests for each variable assuming the MANOVA is significant.
If your data are repeated observations, MANOVA will work but you could do a longitudinal model, where you nest observations within the people. This can be done in a multilevel regression model.
If your data are reflective of an underlying latent variable, use structural equation modeling or confirmatory factor analysis, and include each variable a manifestation or indicator of your underlying factor.
You bring up the smaller sample size of one of the groups. That imbalance will affect the power of your test (i.e. the ability to detect a difference when it is really there), but shouldn't affect the validity of the tests.
Comment: I think $d$ respresents Cohen's d: http://en.wikipedia.org/wiki/Effect_size#Cohen.27s_d


Rotational dynamics perpendicular axis theorem

Question: I was taught in class that in case of perpendicular axis theorem
$I_z=I_x+I_y$ (therefore,$I_x=I_z-I_y$, according to me) but in the next class my teacher told me that $I_x=I_z+I_y$.
Answer: As Wikipedia states:

The perpendicular axis theorem states that the moment of inertia of a plane lamina about an axis perpendicular to the plane of the lamina is equal to the sum of the moments of inertia of the lamina about the two axes at right angles to each other, in its own plane intersecting each other at the point where the perpendicular axis passes through it.

Here the z-axis is supposed to be the axis perpendicular to the plane of the lamina (and not something else). So as it turns out, you are right (as per the unsaid convention). Note that he/she uses x-axis as the axis perpendicular to the plane of the lamina and you should not equate both.
Answer: The perpendicular axis theorem actually has two statements or necessities if you must say:
$$ $$
1) The rigid body to be considered should be two dimensional
$$ $$
2) If there exist three mutually perpendicular axis I1, I2, I3, out of which any two(lets say I1 and I2) are in the plane of the 2D body then:
$$ I1 + I2 = I3 $$
Now out of I1,I2,I3 which corresponds to x,y or z is completely arbitary and your choice.
Infact in any coordinate system assigning xyz to an axis is your choice, the thing is you should be aware of your axes, because after all its the logic that should work out.
I believe the definition told to you was more of mathematical and typical rather than logical and generalised. You should definitely discuss with your teacher.


How to block SKYPE when it's using port 80 & 443?

Question: How to block SKYPE when it's using port 80 & 443 in a network. ( better if I can do it by using ISA 2006 and without disabling web) I know if users can't install skype they wont be able to use it. So without that?
Comment: how big an environment?
Comment: about 50 computers ...
Answer: A) Use blacklisting software or configure policies in AD to block the skype executable.
B) Use a firewall that can do the deep packet inspection and block the traffic.
C) Use your DNS server to intentionally poison requests to skype.com and their associated servers so you prevent skype from connecting.
D) Use software auditing programs and periodically get a report that will tell you who has skype installed and, through company policy, remind them that it's a firing offense if they repeatedly install software on company computers.
E) Remove privileges to users that enable software installation without administrative access.
Comment: Thanks a lot dude ..!!  Doing the deep packet inspection and block the traffic is little bit hard. Do you have any idea to do that using wireshark (just to see) ???
Answer: A quick summary of things that have worked and that probably will work now. All of these will require that you have some form of proxy server, but will probably work with a transparent Squid proxy. They may work with ISA 2006, but I've never used it so I make no promises.

Older versions used a User-Agent string including "skype", so blocking on that could work. Newer versions don't include User-Agent, because it was being used to block.
Older versions connected using IP addresses rather than names. Newer versions apparently use names instead, because people were blocking on https to IP addresses.

Approaches that will likely work now, but which may cause problems of various severity for other applications as well:

Find out the pattern used for the skype domain names and add blocking of those (or if possible, introduce a 2-5 second delay only on those). I did not see any documentation of the domain name patterns used. The delays are for semi-public networks where you want to discourage use by making voice/video quality completely unacceptable without eliminating access for messaging and the website.
Continue to block connections going directly to IP addresses - there's little legitimate reason to do this in these days of HTTP/1.1. For that matter, it might be possible to block HTTP/1.0 but I'm not sure of repercussions.
Continue to block connections with "skype" in the User-Agent
Add blocking of connections with no User-Agent specified (this may break some applications depending on your environment)
If possible, make a policy of blocking Skype with penalties for using it known to your users and follow through.

If it's a corporate environment, make it a corporate policy and publicize several writeups of people for violating corporate computer use guidelines (with no names). This will help address people who install bootleg software or hardware.
If it's a non-corporate environment, make it a policy that computers seen violating the policy (with some leeway for warnings) will lose access to the network, then be ready to do MAC-level blocking or filtering.

See http://wiki.squid-cache.org/ConfigExamples/Chat/Skype
Comment: Thanks dude. Doing the deep packet inspection and block the traffic is little bit hard. New skype only use a single dns query that contains 'skype' key word.
Comment: So when a website is hosted or hosts something referenced by IP they just can't get access to it at work? That seems like a pretty pointless block
Comment: @TheLQ, except for specialized situations (network equipment), when's the last time you went to a website by IP? Bear in mind that you won't be able to connect to any site on a server hosting multiple sites. My impression is that these days addressing by IP is long gone except for network equipment and occasional malware.
Answer: You either need something that can do deep-packet inspection, and identify Skype traffic within the packet to use as "block" criteria, or you need to know what external host(s) to simply block access to. I'm not that familiar with the Skype architecture, I'm not sure if it has to go through a central server for any purpose. If it doesn't, then you can't do it the second way.
Comment: there's only a single dns query which I can identify as skype packet. All others are udp packets. I can't filter traffic relevant to skype ...
Comment: So, that means that you don't have something that can do deep-packet inspection.
Comment: I try to see the traffic using wireshark but I hardly see it... (just only a dns query.)
Answer: Since you're using MS ISA Server I'd recommend installing the firewall client on each machine (deploy via AD if possible).  You can then block on a per-process basis.
Of course this will only block Windows clients though


What is the weight of a body during free fall?

Question: Is it '0' or is it equal to the product of the mass of the body and acceleration due to gravity? Please explain in relation to weightlessness of body in freefall.
Comment: Some textbook authors do not define "weight" as the magnitude of the gravitational force, but as the reading on a scale. So, you must be clear on definitions to answer your question.
Comment: Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking.
Answer: Your weight always equals the gravitational force that is pulling in you. And it obviously pulls even when free falling. Otherwise, why would you fall at all?

On the ground this weight is counteracted by the normal force from the ground. What you are feeling is not your weight, but rather this normal force.

In free fall your weight causes you to speed up (accelerate). But you don't feel it because there is no other external force pushing up on you. (Except for maybe air drag...)

The reason that you don't feel your weight, the gravitational force pulling in you, is that it pulls equally in all parts of you. Think about what makes you feel a force: Your body and brain registers displacements of particles of your skin and limbs relative to each other as a sense of feeling or pain.
If you punch your finger into the wall so it breaks, then it only breaks and thus only hurts because the rest of your hand came from behind and squashed your finger after its motion was stopped by the wall. Had your hand been stopped as well exactly at the same time as your finger was stopped - meaning had they both felt the same exact force effect - then your finger wouldn't break and it wouldn't hurt. In fact you wouldn't even feel it.
So, in essense, the sense of feeling is the brain's interpretation of relative motion between parts/particles without your body which means different forces acting on different body parts or particles. When the same force acts on all parts and particles, then you don't feel anything. And that is why you don't feel gravity. That is why you don't feel any force while free-falling in outerspace. Because gravity is not causing relative motion between particles of your body.
Answer: Weight is the feeling of mass.
And force which is due to mass is called gravitational force, while free fall a body experience gravitational force, which pulls it downward toward the centre of planet ( or any body, in this case earth). Weight is the gravitational force exerted by earth on the object. But you won't know how strongly earth is pulling you untill you get the equal and opposite force as that of earth( your weight).
Hence in free fall you can't feel your mass. But as soon as you hit the ground there is equal and opposite reaction force on you exerted by ground.
And after reaching the ground you can feel your mass i.e how strongly earth is pulling you i.e your weight


how can i leave a field without value if the condiction is true?

Question: for(Account acc : lstAc){
    Account acount =  new Account();
    if (acc.Property_Managment_Company__c == 'Independent') {
               acount.ParentId =  THIS FIELD SHOULD BE EMPTY.
            }
        }

Comment: "null" is your friend.
Answer: Since you don't describe the use case here, I'd suggest this as a validation rule on the Account object to prevent the data from being set incorrectly in the first place.
Formula:
AND (
  Property_Managment_Company__c = 'Independent',
  NOT(ISBLANK(ParentId))
)

Error Message:
This account is independently managed and cannot have a parent account specified

If this field value is being changed in code, as others have suggested, ParentId = null will do the job of erasing the parent reference.
Answer: I am not sure why you are creating new instance of Account object inside for loop. But you can try following code:
for(Account acc : lstAc){
     if (acc.Property_Managment_Company__c == 'Independent') {
          acc .ParentId =  null;
     }
  }
update lstAc;

Comment: This is unlikely to be what you want to do if you're updating a record. At the very least, taking this approach will have an effect on the updated records. Setting a field to null would mean that field is overwritten (and blanked out) when you update the record. If you don't set the field at all, then the update would not alter the existing value in the database.


How to obtain *A*, *B* and *C* from the equation of and oblique ellipse

Question: I have the equation of an ellipse centred at the origin and inclined to the coordinate axes:
$$
\frac{(x\cos\theta + y\sin\theta)^2}{a^2} + \frac{(y\cos\theta - x\sin\theta)^2}{b^2} = 1
$$
In order to find the rotation angle I know that:
$$
\tan(2\theta)=\frac B{A-C}\
$$
Now my problem is to obtain the forms of A, B and C for the latter equation, from the former.
Any help will be very welcome.
Comment: What's the definition of A, B and C?
Comment: I think it is $A x^2 + B y^2 + C x y + F=0$ and you want to get to $A' x'^2 + B' y'^2 = 1$ Is this correct?
Comment: it is correct. I wrongly wrote x' and y' when I meant x and y, but in any case it is the same problem. I want to find A, B and C corresponding to the coefficients of the general equation.
Answer: All you need is to explicitly write your first equation by expanding the squares and grouping terms for $x'^2$, $y'^2$, and $x'y'$. Their coefficients are $A$, $C$, and $B$. You will be surprised to see $$\tan(2\theta)=\frac{2\sin\theta\cos\theta}{\cos^2\theta-\sin^2\theta}$$ :)
Comment: Thanks. I did so but couldn't get to the same form. According to your answer A = cos²(theta); C = sin²(theta); and B = 2sin(theta)cos(theta). What happens to coefficients a and b?
Comment: Sorry, just now I realized what you meant in the fraction is sin2(theta) / cos2(theta)... Thanks again, but I still do not get how to obtain the forms of A, B and C...
Comment: $B=2 \sin \theta \cos \theta\left(\frac{1}{a^2}-\frac{1}{b^2}\right)$. $A$ and $C$ contain the same expression in $1/a^2-1/b^2$, which will cancel if $a\ne b$. But if $a=b$ then your ellipse is a circle, so there is no tilt
Comment: Explicitly find terms for $x^2$, $y^2$, and $xy$. In the first equation, if you expand the squares, you get the coefficient for $x^2$ to be $A=\frac{\cos^2\theta}{a^2}+\frac{\sin^2\theta}{b^2}$. My previous comment wrongly stated that $A$ and $C$ have the same expression in $a$ and $b$. In fact only the difference $A_C$ has the same expression
Comment: Thanks again Andrei, now I arrived to the same, and C=\frac{\sin^2\theta}{a^2}+\frac{\cos^2\theta}{b^2}
Answer: In the world coordinates you have $$A x^2 + B y^2 + C x y - 1 = 0$$ and you want to find the parameters of the ellipse in a coordinate system that is aligned with the major/minor axis. We rotate the local coordinated by $\theta$ with:
$$ x = x' \cos\theta -y' \sin\theta \\ y = x' \sin\theta + y' \cos\theta $$
If you plug it in the ellipse equations you will find from the terms multiplying $x y$ that $$ \left. 2 C \cos^2 \theta + 2 (B-A) \sin \theta \cos\theta - C =0 \right\}\\ \left. C \cos(2 \theta)+(B-A) \sin(2 \theta) = 0 \right\}\\ \tan (2 \theta) = \frac{C}{A-B} $$
Use this angle to get the aligned ellipse
$$ \left( \tfrac{\sqrt{ (A-B)^2+C^2}+A+B}{2} \right) x'^2 + \left( \tfrac{-\sqrt{(A-B)^2+C^2}+A+B}{2} \right) y'^2 = 1 $$