How is a new programming language actually formed/created?

Question: Fortran->Algol->Cpl->Bcpl->C->C++->Java .....
Seems like every language is built upon an ancestor language.
My question : New languages extend parent ones or there is some kind of a trick?
e.g. System.out.print() in Java ; is it actually printf() in C, and so on (printf is actually .. in Cpl)?
If so, doesn't this make every further language be slower and need more memory? What separates a new language from a framework?
Comment: Languages are not written "on top" of each other typically. Many languages compile to Assembly or some bytecode (Java, .NET). Others are interpreted - the interpreters typically are in C/C++ at the core (not always true, but sorta true).
Answer:
How is a new programming language actually formed/created ?

It's a multistage process:

Pointy-headed type theorists and other professionals are continually proposing new language features.  You can read about them in places like the Proceedings of the ACM Symposium on Principles of Programming Languages (POPL), which has been held annually since 1973.
Many of these proposals are actually implemented in some research language; some research languages I personally find promising include Coq and Agda.  Haskell is a former research language that made it big.  A research language that gets 10 users is often considered a success by its designers. Many research languages never get that far.
From research to deployment I know of two models:
Model A: A talented amateur comes along and synthesizes a whole bunch of existing features, maybe including some new ideas, into a new language.  The amateur has talent, charisma, and maybe a killer app.  Thus C, Perl, Python, Ruby, and Tcl are born.
Model P: A talented professional make career sacrifices in order to build and promulgate a new language.  The professional has talent, a deep knowledge of the field, and maybe a killer app.  Thus Haskell, Lua, ML, Pascal, Scala, and Scheme are born.
You propose another model:
Model E: A talented person, whether amateur or professional, extends or modifies another language.  There's a built-in user base who may be interested in the extension.  Maybe users can explore new ideas without paying heavy transition costs.  Thus C# and C++ are born.

My definition of a professional is someone who is paid to know about programming languages, to pass on that knowledge, and to develop new knowledge in programming languages.  Unfortunately this is not the same as designing and implementing new languages, and it is not the same as making implementations that many people can use.  This is why most successful programming languages are designed and built by amateurs, not professionals.
There have been quite a few interesting research languages that have had hundreds or even thousands of users but yet never quite made it big.  Of these one of my favorites is probably Icon.   I have argued elsewhere that nobody really knows why languages become popular.

Do new languages extend parent ones?

This is actually very rare.  C++ is the most popular example, and perhaps Algol-W or PL/S came close.  But it's much more common to use the parent language for inspiration only, and some languages (Python comes to mind) acknowledge multiple "parents" as sources of inspiration.

Doesn't this make every further language be slower and need more memory?

Not necessarily.  C++ is slower and uses more memory not because it is descended from C but because it was developed by accretion over time to the point where only a very skilled user can reliably write C++ code that is as fast as similar C code.  (I want to be very clear: it's not that C++ can't be fast; it's that the cost of C code is always obvious from reading the source, and the cost of C++ code is sometimes not at all obvious from reading the source.)  For more information about the evolution of C++, read Jim Waldo's book The Evolution of C++.
Java was initially slow because of just-in-time compilation and other wacky things in the implementation.  They also saddled themselves with this dynamic class-loading stuff which is really hard to get things to be fast (because a class could be extended dynamically at any moment).  Kenny Zadeck, Roger Hoover, and David Chase built a really fast native-code compiler for Java without dynamic class loading.
For a counterexample, I think Scheme programs ran faster and used less memory than the Lisp programs that preceded them—in part because Guy Steele is both a brilliant designer and a brilliant implementor.  (Rare combination, that.)
But there is something to what you say: people who lack the expertise to build a good compiler from scratch or who lack the expertise to design a whole language from scratch may well hack up an implementation of something not too different from a parent.  In such cases one is quite likely to wind up with a language that is less well designed, less well implemented, slower, and using more memory than its predecessor.  (Tony Hoare famously said that Algol 60 was an improvement on most of its successors [sic]).
It's also true that the more recently a language is designed, the more computing resources are available for the same price.  Early C compilers had to operate effectively in as little as 128K of RAM.  Today's C++ compilers face no such constraints, and there is every reason for them to use more memory: it is really cheap to populate a machine with gigabytes of RAM, and to limit ones use to mere megabytes saves nothing; the larger memory is already paid for.
Summary: Languages come into being because people want to make programming better, and they have new ideas.  Languages get their start when somebody takes a whole bunch of ideas, some new and some proven, and synthesizes them into a coherent whole.  It's a big job. One way to make the job easier is to draw not just on proven features, but proven designs, of one or more predecessor languages.  This kind of design creates the impression of "parenthood", but actual extension or near-extension (in the case of C++ extending C) is rare.  Time and space costs don't necessarily get larger as languages evolve, but it's often the case that people create languages by making existing designs more complex, and the more complex the design, the harder it is to implement efficiently.  It's therefore not unusual that programs written in a new language seem slower or to use more memory than similar programs written in an ancestor language.  Finally, as with all other forms of software, compilers designed and built recently tend to use more RAM and CPU than compilers built ten years ago, simply because large quantities of RAM and CPU cycles are available at bargain-basement prices.
Answer: Languages are not slow, Implementations [created by compilers to assembly] are slow. In theory, you could have a C++ interpreter that ran slower than a PHP compiler or whatever. Languages also do not consume memory, implementations consume memory.
A project is a language when the grammar (or syntax) is different. (You could have both a language and framework in the same project)
Languages are formed just by the general creative process. Someone sees something kinda cool and thinks it could be better so they make it that way and eventually you get an entirely different language.
Comment: Languages can effect the maximum speed of a compiler--or more accurately a language can be built to increase the efficiency of a compiler.
Comment: Actually, there *are* C++ interpreters, and they *are* dog slow.
Comment: @Bill of course. In theory though PHP can be faster than Assembly.
Comment: @Earlz Depends, for optimal coding that is not correct.  PHP does not translate until an efficient enough set of codes.  In fact, your example is a perfect demonstration of my point--PHP is not really made to be optimized well and will not likely be very fast because it would be so hard to create an efficient compiler.
Comment: @Bill but you could create a CPU with an instruction set designed for PHP. Coding in C or some other low level language may not be as fast as PHP because of PHP assumptions made for optimization etc. My point is that Languages are not slow Implementations are. There is no set in stone thing saying PHP must be definition be slower than some other language.
Comment: @Earlz it seems like we're almost saying the same thing--and I'm not disagreeing with you anyway, I've seen DAMN FAST basic compilers, but still the language doesn't allow you to provide hints to the compiler for advanced optimizations.  The implementation has MUCH more to do with it than the language does, but the language also has an impact on what the implementation can do at a given level of effort.  An implementation of a simple language with minimal syntax would be easier to optimize than a one for a powerful OO language with dynamic typing, reflection and no "int" type--for instance.
Answer: There is a big difference, which may not be obvious, between saying that a language is built on the concepts of a predecessor and actually being built with it. C compiles into ASM so it is built on it but not necissarily with it. Often times (most?) C compilers are actually written in C. C++ is built on C, it supports the full spectrum of C and adds a bunch of stuff to it. Java is a totally different thing, likewise with .NET. They "compile" to a pseudo ASM referred to as IL for .NET and ByteCode for Java. Both require some other step or VM (virtual machine) to run.
Answer: Languages can (and often are) written from scratch.  But languages can (and often do) build on the concepts of prior languages.  Why reinvent the wheel when there is a perfectly round one laying at your feet?
Answer: At a superficial level, languages grow from predecessors because there are users who already know the syntax and there are not too many different ways to actually do the syntax.
At a more meaningful level, prior languages may be being used in repetitive ways that could be made easier by adding some syntax and behavior. I'm thinking of how one would do OOP in C before C++ came along. Or the distinction between Fortran with GOTO and Algol with block structure. It was a pain to keep making labels, and they could be automatically generated.
Personally, I could be wrong, but I don't see general purpose languages (GPL) evolving much further (not to say small languages won't proliferate). I do think special-purpose languages (DSLs) will continue to grow, and I think one of the key features of any GPL will be how well it assists the creation of new DSLs.
I think this because there is a continuum of representations between problem-specific data structure on the one hand, and programming languages on the other. Any data that is read by some program is, in a sense, expressed in a language, and that program is its interpreter. So the only thing that really separates the extremes is the degree of sophistication and generality of its interpreter.
What I look for in a DSL is the property of minimum redundancy with respect to its intended problem domain. The idea is if there are some requirements, and if a program is written (by a human, at a keyboard) to correctly implement those requirements, and then if a single coherent change is made to the requirements, there is some amount of editing that must be done to the program to correctly implement the change, then the redundancy of the language w.r.t. the domain is the size of such edits, averaged (somehow) over the space of possible changes. A very simple way to measure this is to use a diff program between the before-and-after code. The number of differences is a measure of the redundancy for that change. This is a bit long-winded, but that's what I look for to be minimized, to say that a language is well adapted to a domain.
If redundancy of a language is minimized, then it means fewer edit changes are required to implement functional changes, and not only is the code likely to be shorter, but there are thus fewer chances to put in bugs.
The way programmers are currently taught, these ideas are in their future. Minimizing redundancy of source code is not yet seriously valued. What we have instead is bandwagons like OOP that, in spite of their obvious value, tend to lead to massively redundant code.
One promissing development is the rise of code generators, but again they are in danger of becoming ends in themselves rather than serving the goal of reducing source code redundancy.
Comment: Haven't code generation projects been on the way since the early 60s?
Comment: @Paul Nathan: Yes of course, and I believe it's because they serve a fundamental purpose. What I think may be new is a rising awareness of what they accomplish, in terms of implementing DSLs. Another way to look at it is *partial evaluation*. The danger is that they be thought of in terms of what they *are* rather than in terms of what they *accomplish*.
Comment: I'm not knocking them, just... being aware of the continual non-fulfillment of the promises regarding them. :-)
Comment: @Paul: I think we're saying the same thing from different angles.
Answer: Each language builds on the concepts of another (language design).  Each new language learns what worked in previous languages and what did not work.  Also languages are targeted at different groups.  If you write a language for long-term maintainability and reliability, that language will probably not be appropriate for shell scripts.
Many languages are testing beds for features or concepts.  These are usually extremely flexible and fun and can be very quick to code in.  Basic was one of these, as are Perl, Ruby, ...
Other languages are reduced to a bear minimum and rarely change--they focus on backwards compatibility and consistency.  New features would be avoided and, when they are added, would be tested in-depth before being added to the standard (Yeah, they tend to be standards based more than the previous group).  C, Java, Ada and C++ were designed to fit here.  C# is possibly a crossover with more features being added than these others, but more stability than the previous group.
Now, besides what drives language features, there is how the language is built. Lanuages are often initially written in another language, however not in the way you are assuming.  Java is mostly written in Java now, but the JVM is probably mostly hand-coded assembly, however you can be SURE that C's printf is nowhere to be found in Java.
A compiled language generally consists of your program reduced to a certain set of codes (machine language or bytecode) and is then packaged with a set of routines (like System.out.println).  However, println doesn't just call C's println, instead a library is created (written in some combination of Java, C, assembly) that knows how to do the output itself.
In C the library would be generated the same way, a combination of C and assembly that generates the assembly code that can execute "printf"
Answer: It seems to me there are 2 main ways that new languages get created:
1) someone decides they need to do some specific work, and a special purpose language would help them get that work done.  That person (along with maybe some other users) find the language useful and start extending to to other purposes.  Eventually the language supports enough stuff that it can be considered a general purpose language.
2) someone versed in programming languages decides that there are problems with a current language that might be solved with a new approach (that might be a radical change or an incremental change from before).  The new language is designed from the ground up to be a general purpose language. This might be a description of how Java or C# came about.
Most languages will have some similarity to others (such as your printing example) because those operations are pretty useful in most any computing context.
Then there are languages like FORTH or APL which I just can't explain...
Answer: Programming languages build upon the prior experience and knowledge of the language designer, and of the community in general, just as new cars are built using what was learned by building cars a few years ago.
I don't think it's accurate to make a blanket statement that all languages are built upon some other language that preceded it.  The designer of the new language certainly should have experience using multiple existing languages, understand their strengths and weaknesses for a specific purpose, and then design their new language to incorporate all the strengths / great ideas of others and avoid the weaknesses of others as much as possible.  Learn from others successes and failures.  (Those who ignore history are doomed to repeat it)
As noted in other responses, building a new language is in no way related to the performance of the implementation of other languages.  New languages and new implementations of the same language usually replace, not extend, prior examples.  Even the performance of one implementation of a language compared to another implementation can vary considerably:  consider the Borland C++ compilers that ran circles around other C++ compilers of the same era, or compare the runtime performance of the 1.0 Java virtual machine to later implementations that added performance boosts like the hotspot compiler.
To use the car example:  because the Ford Model T was a car and belched black smoke, and the Tesla Roadster is a car and came after the Model T, is it true that the Tesla Roadster must also belch black smoke simply because it is a car and it came after the Model T?  Of course not. The Tesla is a very different implementation of the idea of a car.  Its design reflects a lot of things that have been learned since the Model T was made, but it is not a Model T.
Answer: Language designers have to take into account popularity.
I've no doubt that a large part of C#'s popularity is due to the fact that there isn't that much difference from Java's syntax, which isn't too different from C, and so on.
It's already hard work learning a new language's foibles, so it's easier for everybody if the syntax isn't too different from other languages.
As regards speed, it's not dependent on the language, but on the compiler used to convert that language into another language, which could be straight out machine code, or assembly, or in the case of C#, Java, etc, byte code which is then run on a Virtual Machine.
Your final question is also interesting. C# and .NET are quite different beasts. When a language (like C#) is targeted for .NET, a compiler is made that can convert that language into bytecode that can run on that VM. This means that C#.net code can quite happily call Assemblies written in VB.NET, for instance.
The same applies to Java and Scala, both written for the JVM. Scala is a functional language, while Java is an OOP language, yet both can happily call eachother, since in the end, it's just bytecode running on a VM.
Hope this answers your question.
Answer: As someone who works primarily on language-based projects, I think that there are two important reasons that new languages are created: boredom and frustration. When programmers are bored, they'll come up with all kinds of ridiculously ambitious projects to fill their time, and languages provide nearly endlessly interesting new challenges. When programmers are frustrated with existing tools, they tend to create new ones to fill the perceived gap. From DSLs to general-purpose languages, I find that all language projects that I have seen boil down to basically these two reasons.
Answer: Actually new languages can be much faster. For example C/C++ or even Java can be much faster then hand-written assembler. Go/Haskell/... which can be panellized easily can be much faster then assembler on modern hardware - what's that assembler code is '25% faster' then compared single thread Haskell/Go program if you can turn on switch which makes Haskell/Go 4x faster (i.e. 3x then optimized assembler) on Core Quad not mentioning that the code is much less buggy?
There are studies that platforms with GC are actually faster - since programmers have more time optimizing programs/seeking for others errors rather then finding memory leaks - although the 'ideal' programs will be slower.
Also you can have many reimplementation of language:

Based on native code (assembler)
Based on low-level language (C, LLVM)
Based on cross-platform framework (Java, parrot)
Based on interpreter
Based on single-platform framework (.Net - yes I know about mono ;) but it is still mostly single-platform)

For example Ruby have Ruby MRI (interpreter), JRuby (Java), .Net (IronRuby) etc. They usually much differ in terms of speed. C have numerous compilers and can in theory have interpreter. Haskell have native code generator (GHC & co.), low-level language (GHC -fvia-c and new GHC + LLVM) and intepreter (ghci).
Languages generally are created by:

Authors like language A and B so he combines it into language C
Authors have a brand new idea (like objects, duck-typing) which cannot be expressed in existing languages/a new idiom which cannot be expressed as good in existing languages so they create new language which brand new feature.
Authors finds some feature terrible and wants to get rid of it (for any reasons). Like <code>enum</code> in old Java.

In first and third case new language 'inherits' from one or more languages (usually many). But usually it is combination of them.
Answer: I've voted up some answers above, but note also that the Lisp class of languages actually in some ways encourage the programmer to effectively make a new language feature whenever needed, creating a new dialect of lisp. You can argue the toss about what the difference is between creating a new function of your own and creating a new language feature, but that is the claim of Lispers.


Overheating issues

Question: 92'honda accord
New radiator, radiator hoses, thermostat, thermostat housing, waterpump
Idles fines overheats when driven. Blowing holes in hoses of thermostat housing. Tested 1st and 2nd thermostat and both are good.
Answer: Sorry to be the bearer of bad news but to your description it sounds like a Blown Head gasket. First make sure the Fan(s) are operating as required. There are a few small indications to check for possible Head Gasket issue. 1: Depending how old the Radiator is; check the Cap bottom sealing ring inside the filler neck. Look for eating away of the ring, (hot hydrocarbons will cause this). 2: If the Radiator builds pressure before it has time to warm up is also a sign. A Block Test can be misleading unless you know what to look for.
Good Luck
Answer: If you have checked everything and your car still overheats, before thinking about head gasket, it is better to perform a complete air bleeding procedure according to manufacturer's recommendation. I have seen many cars that were not bled properly and overheated even if they had done a complete cooling system overhaul.
Answer: If your water is circulating, then that leaves two options- you have excessive heat production or your fan is not working effectively. Check your fan, fan clutch, and fan shroud for proper function.

Overheating issues


Why was a Prussian soldier in Nova Scotia in 1817?

Question: After participating in the Battle of Waterloo, Private Gottlieb Schmidt was discharged from the 3rd battalion in Halifax, Nova Scotia, in 1817. Private Schmidt was in the 3rd Battalion 60th Regiment. Anyone know why Prussian troops would have been in Nova Scotia?
Comment: Do you have any other information from his discharge papers?
Comment: 60th (Royal American) Regiment? https://en.wikipedia.org/wiki/King%27s_Royal_Rifle_Corps#Napoleonic_Wars
Answer: If I am correct from the following it is clear that although Gottlibe Schidt,  was German, he was however not a German soldier, but and English soldier. Which I think therefore answers your question.
Gottlibe Schidt Born 1761, Death 2 April 1819 aged 58
King's German Legion - Wikipedia
https://en.wikipedia.org/wiki/King%27s_German_Legion
1.
The King's German Legion (KGL) was a British Army unit of mostly expatriate German personnel during the period 1803–16. The Legion achieved the distinction of being the only German force to fight without interruption against the French during the Napoleonic Wars. The Legion was formed within months of the dissolution ...
He is also listed on the Waterloo Medal Roll as Private Godfry Schmide 4th Line Battalion King's German Legion, Regimental no. 2
Royal Hospital Chelsea, 60 Foot King American Regiment, service shows aged 27 discharged date 1816. Birth year 1768. aged 47, 1st Foot Battillon, Born Magdeburg, Prussia.
There were two types of Chelsea Pensioners in pensioners and out pensioners, I am not certain but I suppose that he must have been an in pensioner.
There is also the following volume among others on the Kings German Ligion which may be of interest to you on
The Longest Afternoon: The 400 Men Who Decided the Battle of Waterloo by Brendan Simms


Is there a name for open-top curtains?

Question: I've walked around my neighborhood, and seen curtains that leave around the top 1/4 of the window open, which I really like. It seems to provide the same amount of privacy, but also let in a good amount of direct sunlight even if they're closed. I've tried searching for them in different places, but nothing really seems to come up. Are they just normal window shades/blinds installed lower? Are these a common design? Is there a name for them? Are there any drawbacks or hangups to doing them?
Comment: A neat solution when the window is longer than the curtain :)
Comment: Potential drawbacks: 1) Your neighbor's house has a 2nd floor window and they can see over the top of the curtain into a room where you're changing clothes. Of course, that's only a drawback if you have a hangup about being seen naked by strangers (or other non-spouse individuals). _Don't forget the neighbors a block away with binoculars!_ 2) If there's a streetlight that might shine over the top of the curtain into your bedroom, making it difficult for you to get to sleep at night. 3) Unblockable reflections off of TV or computer screens.
Answer: I used to work for Lowes and I believe you're referring to the cordless cellular shades that you can control from the top or bottom in order to maintain privacy and allow plenty of sunlight in as you mentioned, or you can put them all the way up from the bottom, and even play with color/ filter options. Not may drawbacks that I can remember. They are typically mounted inside the window frame, as long as your window allows for inside mount you should be good to go.
Comment: Great start keep the answers coming , the photo really helped me I was thinking no top curtains+
Comment: This does answer the question (+1 from me), but that just looks so... wrong. Like "I just ordered these expense custom blinds and I spec'd them wrong so they're too short, but I spent so much on them I'm going to hang them anyway". No offense intended to OP who likes this style - that's just how it strikes me...
Comment: Nice answer. @FreeMan I guess it's a matter of preference.  If you've seen them installed or operated them you'd probably feel different. yhey are pretty neat.+

Is there a name for open-top curtains?


German word in "Unfinished business"

Question: What does the german word "Flügeschlagen" (or "Flugenschlagen"?) mean and why does the GPS keep saying it in the movie (they are stuck in traffic)?
According to google translator (I know, not a very reliable source) both mean "flight(s) beat".
Thanks!
Comment: Perhaps they meant the word "Fehlgeschlagen" (failed)? Such errors are very common in American movies.
Comment: This is the scene: http://youtu.be/MxlwL3pRNXM
Comment: Fluegel Schlagen in French means ''battre ses ailes''. ..which means fly on your own...assert yourself...own it...but all the Babylon dictionaries out there just say Wing beat...it means Go out there and do it. PS. I like that movie. You have a basic message and a deeper message in this movie: Basic Primary Message: It aint easy...you have to work hard for the money...Secondary (subliminal) Messages: Diversity, Transparency, Pot, Do what you love, Rising of Consciousness, alternate or progressive thinking,come out of the closet as a Human, assert yourself= fluegel schlagen, when in Germany, as
Comment: Yea it sounds a bit like "Flügelschlagen" (flap one's wings) but maybe it's a name of a non-real city or street
Answer: The word does not exist.
I hear "Flügeschlagen", but that does not make any sense either. The point seems to be that it is a word that sounds German to them American audience, but that they do not understand. A made-up word works fine for that. Few American audience members will be confident enough in their German to be sure that the word does not exist.
On further thought, I could imagine that it was supposed to be "Flügel schlagen" as a joke inside this joke. That would have meant "spread your wings" which maybe would have been meant to indicate that flying would have been the last option left in that situation. However, then somewhere along the line someone would have ruined the joke by messing up the word.
Comment: I'll add to that: *Flügel schlagen* fits with the message of the movie and what they believe the word means.
Answer: The GPS doesn't give any further information about this, and "Flugenschlagen" isn't something GPS's say in German.
My best guess is that it's supposed to be a ridicules sounding word for the English viewer, while, since they're heading the wrong way, it would be supposed to say "Bitte Wenden" -> "Turn around".
Answer: Flügelschlagen (spelled with an extra L, but would sound almost exactly the same) translates to "wing flapping" or "flap your wings". I'm not familiar with the movie, so I don't know if this fits at all. It's not a word a GPS system likely would use.
Comment: The movie scene is in one of the comments of the question (spoiler alert!).
Answer: i'm a "Spanier" living in Germany since 2 years..
"Flügeschlagen" has no meaning, in English will be "Hit Planes"(Airplanes).
"ein Ball in der Luft schlagen" <-> "Hit a ball in the air",
or "jemanden schalgen"<->"Hit somebody".
"So, ungefähr"
Comment: Actually in English it would be "hit flights"; "hit planes" in German would be "Flugzeuge schlagen".
Comment: If anything, it would be "hit flights" or "beat (up) flights"
Comment: fast das gleiche

German word in "Unfinished business"


Does 1.2cm of additional frame stack make a large difference to the ride of a bike?

Question: I don't like the amount of handlebar drop on my current road bike. I am looking at a new bike that has an additional 1.2cm of frame stack (height). Would this 1.2cm make much difference in the ride of the bike?
Comment: Unfortunately, the answer to that type of question is maybe yes maybe no, it depends on your proportions. You'll need to take some test rides to find out.
Comment: Have you considered simply changing your handlebar?
Answer: My own personal experience is that small changes can make a big difference, but you should be able to get the bars 1.2 cm higher a lot cheaper than a new frame.
I've found that the most critical measurement in a frame is the Effective Top Tube. If that is "right" for you then with enough bodging you can get the handlebars in the right place. For a road bike that means a stem in roughly the
90-120cm range for most people. If you aren't over 6 feet and you find you need a stem outside that range, then I would seriously consider a new frame.
My advice is to spend some time and money on the current bike to find out where the right place is. You might end up with an ugly heavy bodge based on a stem extender, but then you will know exactly what you need in the next bike.
If the stem extender works, then you might just need a new fork with an uncut steerer so you can get the stack height you want. Forks with carbon steerers have a stack height limit, but even there most bikes come out of the shop with the steerer cut at the minimum rather than the maximum. ( Because it looks better on the shop room floor that way... )
Answer: Sure! Especially on the long distances.
If you have a bike a little big or small for your stature, you can try to adjust the seat or you can also try a stem of the handlebar with a different lenght
Answer: Small changes can certainly make a big difference... but it may not or there may be other things you can change. As such, buying a new bike to make this sort of adjustment seems like overkill.
You can swap the stem, handlebars, add spacers, adjust the angle of the handlebar,  and so on.


Where do google tag manager triggers display in google analytics

Question: I have set up a trigger in tag manager.  See below.
It is my intention to log all outbound links. When i then log into my google analytic account i can't locate this data. Where would it be display. Also how long does it take for this data to be displayed.
Answer: Triggers are internal to GTM only and cannot be seen in GA. Depending on the type of tag you have created that is fired by the trigger, you may or may not be able to see tag in your GA reports as well (eg. Custom HTML, depending on how it is configured).
An event tag for outbound link clicks should show up on your Behavior > Top Events report in GA, but not the trigger itself. You may need to wait up to 24 hours for events to show up in your reports, but if your tags are working then you should be able to see them in your real time reports right away.
Edit:
To track outbound clicks, you need to create your Google Analytics Event tag, with the appropriate category, action, and label, and then for your trigger, just use the one you have created already. These two together (tag + trigger) will create the outbound click event that would be recorded into GA.
Comment: thanks, see the graphic above. You'll see that it's the trigger fires an event. If it can't be seen in GA. Where in GTM would i see this data. I wanting a way to track outbound links
Comment: Are you talking about the "Choose Event: Clicks"? That is a built-in event (or what used to be called a "listener" in GTM V1) that would occur when a click happened. You used to have to create the click listener, but not anymore. It is not an event that shows up in GA. I've modified my answer to instruct you on how to track outbound clicks.
Comment: OP, any updates?


Objects allowed in a SQL ER diagram

Question: My assignment requires that I have an ER diagram that shows the dependencies between the objects in my solution. Mine consists of several procedures, tables, a trigger and a sequence. Does anyone know if these objects are permitted in a SQL ER diagram? I ask this because the example shown by my lecturer consisted only of tables. If these objects are allowed in an ER diagram, what is the proper way to represent them?
Answer: No, an ER diagram should not contain procedures, triggers nor sequences.
An Entity-Relashioship Diagram is used to represent the relashionships between entities in a database. Procedures, triggers and sequences do not contribute to the relashionship representations.
Answer: ER Diagram don't have any particular representation of triggers because ER-Diagram is logical design of Database. BUT we use Strong entity and weak entity symbols to show the dependence of tablesStrong Weak
Answer: You should use Entities (the squares), Relationships (the diamonds) and attributes (the ellipsis). All of them are connected by simple lines.
Finally, and most important. Entities and Relationships are not Tables, as you say. Those are part of a physical model.

Objects allowed in a SQL ER diagram


Automating coffeescript compilation with Jenkins

Question: I've set up a jenkins CI server on a windows box for one of my projects. There is a portion of it written in Coffeescript. Previously this part wasn't looped into the build process. Now It needs to be.
I haven't seen any coffeescript plugins for jenkins, or much from google on the topic of building coffeescript in jenkins.
I am looking for the simplest way to set up a jenkins build to include a coffee compilation step. Preferably through plugins on jenkins rather then manually installing programs on the box.
Currently the coffeescript is compiled via commands like so
coffee --lint --watch --output "C:\repositories\martha\trunk\bb\app\bin\js/" --compile "C:/repositories/martha/trunk/bb/app/src/"

in the Node.js command prompt on developing boxes
I've also noticed that Jenkins has a node.js plugin where you are capable of running scripts in a build step. I don't believe I can use the commands npm install -g coffee-script or coffee --compile through node.js scripts rather then the command line. Though I hope I am wrong.
Currently the best option I see is to install node.js on the box, use npm to install coffee script, and then run batch scripts as a build step. Though I am willing to pursue this, I would like less manual installation on the box, to ease the use of coffee-script in more projects.
Is this my best option?
Worth saying though I use node.js to compile coffee-script, node.js itself, and its capabilities, are very new to me.
Answer: One possible solution is to run the compiler with the script provided in extras/coffee-script.js. You have to use JDK 7 or the latest Rhino (JDK 6 will not work). Here is a link to a simple CoffeeScript compiler in Java
Comment: On that thought I could probably run extras/coffee-script.js as a node.js script.
Answer: i would recommend
a) installing nodejs plugin + grunt on jenkins -> Jenkins integration with Grunt
b) voting up the excellent instructions :)
c) then using grunt to compile the coffee script, this also means you can easily locally compile coffee script too!!
grunt instructions -> http://gruntjs.com/
grunt coffee script instructions -> https://github.com/gruntjs/grunt-contrib-coffee
basically you need a Gruntfile.js a bit like this
module.exports = function(grunt) {
    // Project configuration.
    grunt.initConfig({
        pkg : grunt.file.readJSON('package.json'),
        coffee: {
            compile: {
                files: {
                    'path/to/result.js': 'path/to/source.coffee', // 1:1 compile
                    'path/to/another.js': ['path/to/sources/*.coffee', 'path/to/more/*.coffee'] // compile and concat into single file
                }
            }
        }
    });
    grunt.loadNpmTasks('grunt-contrib-coffee');
    grunt.registerTask('default', ['grunt-contrib-coffee']);
};

then for the jenkins shell task you just need this, to run grunt and hence coffee script
npm update
grunt


Dynamic graph (?) - combination of connections between vertices that for each 3 exist min 1 edge

Question: I have to find number of ways (combination) to create graph that for each 3 vertices there are minimum 2 vertices connected. There is n vertices. For example when n=3, there are 7 possible combinations. How can I make this with maybe dynamic programming?
Comment: Try finding what graphs satisfying this condition look like.
Comment: Your graphs are the complements of triangle-free graphs.
Answer: Your condition on the graph is the same as requiring its complement to be triangle-free. It is known that there are a lot of triangle-free graph. Indeed, since every bipartite graph is triangle-free, if we fix a partition of the vertex set into two sets of size $n/2$ (assuming for simplicity that $n$ is even), then we already get $2^{n^2/4}$ triangle-free graphs. It turns out that there aren't that much more, see this question on mathoverflow.
Perhaps you'd be interested in a paper on generating maximal triangle-free graphs up to isomorphism (in your case, you will be generating minimal graphs satisfying your condition), whose number is more manageable.
Comment: Okay, so I need to generate triangle-free graphs and for all of these count combination of complements these graphs?  How I can make that for expamle when n=3? (Answer is 7)
Comment: Use a software package such as [nauty](http://pallini.di.uniroma1.it/).
Comment: I cannot use that because of my software, is there any way to generate all possible triangle-free graphs with n vertices? (the best in C++)
Comment: I just pointed out a way: use nauty. You can use it both as a standalone program and as a library.
Comment: Yes, of course but I need to write an algorithm in C++ without any additionally libraries or something like that
Comment: That's an artificial restriction. In real life it is usually encouraged to use external libraries. You can always generate all graphs and filter out those which do not satisfy your constraint.


What specific technology should I learn?

Question: I have been in project management in IT for the last 10 years and I came from industry experience as a domain/subject matter expert. I did PMP and Agile Certification but of late I am experiencing comments from my team and recruiters that I am not technical Project Manager.  I do not have any technical qualification as such other than domain certifications with an academic doctorate.  I am in mid forties and not sure what technology to learn now to keep up in the job market for 10 more years. I understand the importance of technical knowledge in project management, client interaction, issue resolution and team communication in estimations but not sure where to start.  Please suggest some specific course/training to increase my chances of employment.
Comment: This is an XY problem. The Y problem, "Which do I learn?", is opinion-based and thus voting to close. The underlying problem, though, seems to be "My Team thinks I'm not technical enough, how do I maintain credibility?", which seems more valid to me.
Comment: Do you plan to code? Or you are more interested into having a deeper understanding by first hand experience as well as certification? If the latter try anything you fancy on sites like Udemy or Udacity...
Comment: to answer the title of your question - I would suggest you check job postings and select a few dozens that you would be interested in that were published in your area in the last 6 months. And do the hand counting of what techs /languages the job posters were looking for. Otherwise please rephrase your question.
Answer: I can understand your situation. I would suggest you to understand the technical stack that is being implemented in your current project. As a technical project manager, the management and the team would expect you to help the team during the Design, Estimation, and during the Support phase. This is because this is where your technical expertise would be of help to them. However, when you receive comments from your team, understand their expectation. Do not fret. It happens. They would not know many things that you know. So, be happy.
That's the reason why I am suggesting you to enlist the entire technical stack of your current project and arrive at the distribution of technology.
The next step is to find the best resource(s) available in the public domain that would help you gear up. There are lot many tutorial websites or boot-camps that either free or commercial that could help you achieve your goal.
Do not lose your confidence and at the same time, apply all your interpersonal skills to keep going. It will help you in the long run.
I have seen many project managers sail smoothly only by applying their interpersonal skills. Sharpen your soft skills. Remember, never lose your confidence.
Hope this helps you.


extend virtual machine across physical machines

Question: Is it possible for two or more physical machines to be "grouped" into one virtual machine such that the CPU cores are shared?
Answer: Yes, and no.
What you're talking about is not virtualization though, it's physical machine clustering. It can be accomplished with specialized software, hardware, and interconnects. Check out ScaleMP if you're interested in this. Ultimately, pooling hardware resources like this approaches the same sort of design of how supercomputers are made.
Virtualization machine clusters can be helpful to distribute workloads across many physical machines to solve singular workloads (think MapReduce).
Did that come close to what you were looking for?
Comment: I have sw license that is very expensive and locked to a MAC.
Answer: Instead of lashing hosts together yourself, look to buy a scale up server.
Single systems running 4 or 8 CPU sockets are available. Much more than that is possible but gets closer to exotic custom clusters.
There are per VM vCPU and vRAM limits, but these days those tend to be quite large.
(And be thankful if your software is not licensed per core.)
Comment: I want as many sockets as possible. What's the largest number of sockets available?
Comment: We are not really in the business of product recommendations, contact your favorite hardware vendor for their 8 socket offerings.  But on x86 the SGI UV line deserves special mention: up to 256 sockets / 4,096 cores. It is basically a supercomputer in a rack. Good luck getting your application and your budget to scale that far.
Comment: what about AMD? I've been looking and seems max # sockets is 4 for current opteron.


If I gave someone a ride to a store and they end up stealing from that store, can I be held criminally liable for the theft?

Question: I recently gave someone (Bob) a ride in my vehicle to a local supermarket. I remained in the vehicle, and Bob went inside. Bob stole something from the supermarket, and loss prevention attempted to detain him in the store. Bob ran away and got back into my car, without telling me what happened, so we left. A witness saw what transpired, and gave the store my cars license plate info and description. My question is this: Since I never left the car, went inside, or knew what happened, can I be held criminally liable for Bobs theft?
Comment: When did you find out about the theft and what did you do once you knew?
Answer: No. To be charged for "aiding and abetting" or as an "accessory" to the theft, you need to have both:

known about the crime and
acted to help carry the crime.

Someone who unknowingly helps carry out a crime cannot be charged with aiding or abetting.
Obviously, since you didn't know beforehand that your friend was going to steal from the store, you can't be charged for that. Whether you can be charged with "aiding or abetting" after-the-fact depends on when you found out, and what you did with that knowledge. Suppose you lied to the police to give Bob an alibi, or helped him sell the loot. Since in those instances you knowingly helped him carry out his crime, you could be charged.
Comment: With the after the fact knowledge, if you continued to take Bob to other errands after knowing, it may not be aiding and abetting if you didn't report Bob's crime because you were afraid of what Bob would do to you if he found you on the phone with police when he returned to the call after the errands.  With exception to a few serious crimes, duress can be used as defense for criminal actions (serious crimes being on the order of murder), though the sooner you report the crime when you feel safe, the better.
Answer: Have you satisfied the legal elements for a crime?
Laws against stealing generally have a high mens rea requirement, so given that you had no intent to facilitate a theft, you are probably not guilty, but one would have to look at the exact statute to be sure.
Can you be held criminally liable?
As a practical matter, this is a separate question. A judge would likely find that the facts in this case support probable cause that you participated in the theft. So it is possible for you to face criminal charges. You would then have to convince the triar of fact that the claims you have made regarding your lack of knowledge are true (or, at least, it is reasonable to doubt that they are false).


Replace a red Led activation on RPI 4

Question: I have a PI 4 and accidentally broke the red led. I don know how to identify it in order to get a replace piece and soldering Any idea or help, please?
Comment: I think the gear you would need to do that soldering job will 1) Cost you much more than the replacement cost of the Pi, 2) Include a learning curve such that your first repair will fail in a bad way, destroying the rest of the board.  But I'll leave it up to the more experienced to confirm or deny that...
Comment: @goldilocks: Both good points. Personally, I find the RED LED (Power LED) obnoxious and redundant. I actually spent some time figuring out how to disable mine, and use the Activity (Green) LED to serve both functions: Activity and Power.
Comment: This is just an 0603 package LED, so it's pretty easily replaced using a regular soldering iron (which I assume Luis has, otherwise yeah the cost wouldn't be worth it). Does depend on how much soldering experience Luis has though.
Answer: I assume you are referring to the PWR led on the board. Just a heads-up, the full BOM isn't provided for the Raspberry Pi, so this is just my best guess based on what is available. Looking at the schematic here, the LED in in series with a DSS13UTR protection diode, and a 1kOhm resistor. The protection diode from its datasheet will drop 0.5V when in forward conduction mode (during normal LED operation) so the resistor/LED pair will be dropping about 4.5V.
I measured the pads on the board, and it's clear that it's designed for an 0603 package, side-view diode. Here is a photo below with an 0603 resistor next to it for scale:

Looking on Mouser at 0603 package side-view LEDs, there are several options, at a variety of forward voltages, however the most common available is 2V. Looking at a few of these options, it looks like most of them should work just fine for an indicator light use.
Example, SML-A12V8TT86:
Using the nominal forward voltage of 2.2V, that means the current in the LED when on would be (4.5-2.2)/1000 = 2.3mA. Of course, at that current the forward voltage for that model ends up being closer to 1.9V, which gives a current of (4.5-1.9V)/1000 = 2.6mA so that gives an approximate range of where it will end up operating. Looking at the luminous intensity graph, that is within the "on" range, and gives a relative intensity of about 15%, which seems about right for an indicator light. So SML-A12V8TT86 seems like it would work as a replacement.
Example 2: LTST-S270EKT
Using similar analysis on this, we get a relative intensity of around 10%. The graph doesn't have good resolution on the lower end, so this may or may not work.
Hopefully that helps point you in the right direction.
Answer: Note that you don't have to rework the PCB for this if you don't want to. You can get a LED+resistor assembly which can be soldered to either GND/5V pads some place convenient, or even fitted with jumper cable ends and connected to 5V and GND pins on the GPIO connector:

The GPIO solution has the benefit of flexibility: if your Pi works, you can just disconnect the LED which has little purpose. If you experience power issues, you can connect the LED and let it tell you whether 5V is present or not. Or you can wire the LED to a USB plug and use it to check the presence of USB power.
Comment: The PWR LED is not connected to 5V, it is actually controlled by kernel software and normally indicates (absence of) "low voltage". It by default adds little of real value.
Comment: @Milliways My bad, I didn't check the schematic at all when answering.
Answer: You could replace with practically any LED, but frankly is difficult unless you have the right equipment.
There is also little point. The LED indicates the presence of 5V but is hardly essential and attempting to restore it risks damaging your Pi.
Incidentally "accidentally broke" usually means ripped a component off and almost invariably this also means ripped the board traces off leaving nothing to solder to. Any such attempt usually causes further damage.
Answer: A broken red LED (the "Power LED") need not be a concern. Some people (incl. myself) consider the "Power LED" a nuisance, and prefer that it be disabled. The subject of the "Power LED", and in particular how to disable it has generated a huge amount of discussion over the years. 1, 2, 3
Instead of taking on the time, effort & expense of replacing the red LED, you may want to consider this alternative: Disable the "Power LED", and use the green LED ("Activity LED") to indicate both power and activity. It's a simple change; you'll be finished in 2 minutes, and if you don't like it, simply remove it. Here's how:
Open the file /boot/config.txt in your editor; e.g.:
sudo nano /boot/config.txt

Add the following lines near the end of the file:
# ACT LED off during disk activity, on all other times
dtparam=act_led_activelow=on
# PWR LED off at all times
dtparam=pwr_led_trigger=none
dtparam=pwr_led_activelow=off

After the edits, save the file, close it & reboot. If you want to revert, simply "comment out" the 3 dtparam lines.

Replace a red Led activation on RPI 4


Why do we need to amplify the signal of an electret?

Question: I do understand from my reading that I should amplify the signal from an electret to be able to read it with an Arduino. I'd love to know the science behind that, why should we amplify the signal to be able to get a correct reading ?
Comment: You may find [Electronics Stackexchange](http://electronics.stackexchange.com/) useful for questions like this.
Answer: Arduino (or any chip that uses ADC for that matter) has a resolution. For example, arduino analog read divides 5V to 1024 levels. A.k.a 0V -> 0, 5V->1024. That gives you 4.8mV per level.
Now assume that you want to read the voltage fluctuation of a very low voltage power supply that fluctuates from 0 mV to ~8mV. What does the arduino read? You'll see either 0 or 1. So basically, you just can't successfully read that low voltage with your current setup.
Now, if you use an analog OPAMP and amplify that signal to 5V, (0mV->0V, 8mV->5V) then you can use all 1024 levels available to you, provided by arduino.
That's why you need to amplify the signal.
Comment: How do you figure out the voltage fluctuation ? (or what is the matching indication in a datasheet ?)
Comment: It will be in the datasheet. You just have to read it. I don't think there is a standard symbol for it, but look for Vrms as units maybe.
Comment: As Majenko said, you can check the datasheet. It's probably the first thing you want to do dealing with electronics. If you can't find it, then perhaps, just create an amplifier opamp circuit, tie it to arduino or which board you like and read the voltages and send to pc. You can put a potentiometer to opamp to change amplify rate and so on. There is much information about this on google or here.


How to handle redirect in JavaScript For Windows 8 App?

Question: I am trying to develop a Windows 8 App in which I need to login to a server but after login I get HTTP redirect response 302 and I need to redirect to this link (Location header) with cookies set in header. Seems like WinJS.xhr is unable to handle HTTP redirect. Is there any way in which I can control my requests and handle redirects also ? My language of preference for Windows App development is JavaScript.
Thanks in Advance.
Answer: There's no need to use XHR in cases when you need to authenticate, for that you have the WebAuthenticationBroker. You can find an example here.


Risk seeking investors: Do they benefit from return at all?

Question: Starring on the indifference curves for different types of risk preferences I ask myself why the risk seeking investor would be indifferent between an investment on the far left of his indifference curve (an investment that would not provide any risk but a specific amount of return) and an investment on the far right of the indifference curve (so an investment that provides him with a lot of risk while a lower return can be expected). As to my understanding a risk seeking investor loves the risk so why does an investment with lower risk provides him the same utility as an investment with higher risk? Is it because risk seeking investors also get some utility from expected return? So while the risk seeking investor get's a higher value from risk that does not mean he's getting no value from expected return. Other than that I couldn't explain the form of the indifference curve and would appreciate any help.
Answer:
Is it because risk seeking investors also get some utility from expected return?

Yes.
It is a common assumption that investors invest to get returns, so in this good space returns are indeed a "good", not a "bad".
Comment: @xxgaryxx I think it only implies s/he gets a positive utility from risk
Comment: Thank you very much. So this simply means that while the risk averse investor sees risk as a pain and only gets his utility from returns, the risk seeking investor gets his utility from both: risk and return? Does this also imply that the risk loving investor gets a higher utility from risk than he gets from return?


What is the meaning that Geometric Brownian motion is leptokurtic?

Question: Does this have any relation to the symmetry of the normal distribution?
Answer: Heavier tails, or a higher probability of extreme outlier values, meaning the investor is more likely to experience extreme events (e.g. tail losses).
EDIT:
@noob2, valid point, see this article on
modelling and forecasting the kurtosis and returns distribution of financial markets: irrational fractional Brownian motion model approach
Comment: In another question, you have asked what are the alternatives to GBM that can be used in option valuation. One reason people have developed such alternatives is they feel GBM is inadequate for modeling real world stock markets because **NOT** leptokurtic like the real markets are.


How can I get a copy of my UK refusal letter?

Question: Please how can I get a copy of my UK refusal letter ?
Answer: You can make a Subject Access Request https://www.gov.uk/government/publications/requests-for-personal-data-uk-visas-and-immigration/request-personal-information-held-by-uk-visas-and-immigration online or by email. You'll need to provide evidence to confirm your identity.
You can ask for Basic, Specific, or Detailed information, depending on what you need.  You should clearly describe what documents you need, for example a particular decision letter.
Comment: It was asking for UK postcode and i live in Nigeria
Comment: Did you email the contact given on the web page?
Comment: Have done that and i am waiting for there response
Comment: Is the samething, asking for uk address
Comment: That seems strange. Do you want a copy because you are applying for another visa? If so, typically applicants who don't have full details of a refusal can just declare any previous denials in the new application and provide as much detail as they can remember eg the visa type and approximate date of refusal.


My 1999 Mazda 626 LX just shut down.

Question: Engine turns over but wont start. While trying to start it, it gave a backfire, I changed the spark plugs plus oil hoping hat would fix it but no such luck. Any suggestions as to what could cause or to fix issue.
Comment: Anything happen to it from the last time it was running well, to now?
Comment: I would bet your timing belt has either slipped or is torched. This being an LX, I believe only came with the 4 cylinder engine which should have a timing belt. If this is the problem, I don't think I'd try to start/run this thing as you'll probably be bending valves in the process.
Comment: I think you may be correct for I had a notion that it might be the timing based on the misfire. Thanks
Answer: To run, an engine needs 3 things - the correct fuel/air mixture, compression, and spark. If any of those are missing, it won't start.
When you try to start it, does it sound like it normally would (i.e. not turning significantly faster or slower than a normal start)?
Does it have enough of the right sort of fuel? (sounds like a silly question, but you'd be surprised!), and can it get through? Are there any filters that might be blocked?
The mention of a backfire suggests to me that it's most likely spark that's missing. You've changed the plugs, but have you checked the coil/coil pack and HT leads(wires)?
To check, take one of your old plugs, and connect it to one of the plug leads, then lay it on top of the engine (so that the metal side of the plug is sitting on a grounded metal bit). Get an assistant to try to start the engine, and watch the plug for a spark. DO NOT touch it while you do this - you could get a nasty shock.

My 1999 Mazda 626 LX just shut down.


In the common-practice style, did minor dominant chords (v) still function as a dominant?

Question: In the common-practice style, usually dominant chords were always major, even in minor keys. Without the leading tone, how did minor dominant chords (v) function?
Comment: Richard's answer shows why theory has to be contextual. We shouldn't just look at chords and guess from them what's going on, but look at what's going on and explain the presence of certain chords from that. After all, the composer doesn't say "I feel like using a minor v. By Jove! As a result I find myself modulating!" The question "how does m V function" is a bit like asking "Is 'drum' a noun or a verb?"
Comment: @AndyBonner indeed, a composer generally doesn't say that, but a composition student might employ a similar line of thinking in response to an assignment to use a minor `v`.  It's easy for students to lose sight of the fact that theory often follows practice rather than the other way around, which is understandable given that they're being taught theory that largely didn't yet exist when the music it seeks to describe was being composed.
Comment: Generally as a temporary tonal center, though I just searched for some examples of this without much luck.  Do you have an example of a minor dominant chord?
Comment: @phoog I admit it's pretty hard to find examples, but I saw a v6 tonicized in Corelli, Prelude, from Trio Sonata in D Minor. In measures 9-10, there is a V/v - V42/v - v6 progression, but I suppose its only purpose is to modulate from D minor to A minor.
Comment: @AndyBonner I agree, this was meant to be a more open ended question. Have you, by any chance, come across any other instances of a minor dominant in music from this time period?
Comment: An excellent diatonic dominant is VII, not v. For example, the "minor four chord loop" (i, VI, III, VII) has a very strong final resolution.
Answer: These minor v chords are not typically viewed as dominant in function, no.
Instead, they most often function as passing chords. Imagine we pass from i through v6 down to VI (or even iv6). In these cases the v chords very clearly do not reach the hierarchical level of a "real" dominant and instead are just voice-leading conduits leading from one chord to another.
They can serve a handful of other purposes (like as a pivot chord in a common-chord modulation), but their use as passing chord is far more common.
Comment: I generally agree. Just an observation, but isn't a "pivot chord" effectively just a "voice-leading conduit leading from one *key* to another"? I'm personally not a big fan of the concept of pivot chords for modulating (it's a somewhat ahistorical notion, as a modulation was generally created by an *active* note or interval shifting toward the new key). But generally when theory textbooks do choose to locate "pivot chords," they're often boring not-going-anywhere verticalities without a strong function in either key, or at least that's often how students are often taught to identify them.


Control smell coming in from neighboring Dry cleaner

Question: I work in an office that is in a strip mall.  Two units away is a dry cleaner.  Some days our office is saturated with the perfume smells from their cleaning agents.  I don't know what weather conditions determine if the smell comes in or not, but is there any way to put a filter somewhere that prevents the smell from entering out space, it gives me a horrid headache as I am allergic to perfumes.
Comment: I'm voting to close this question because it is about commercial spaces, not home improvement
Comment: The only way a filter would work, is if the smell is coming from an air duct.  If the smell is general(in the outside/inside air), would need sealing of the office and/or an exhaust fan to the outside(to try to keep the smell down).
Comment: An activated charcoal air filter can filter smells. You can get an air purifier, which is basically a charcoal/HEPA filter with a fan slapped on it. That will also filter covid. But it won't prevent the smell from getting in, which would be the proper solution...
Comment: I just logged in to see this question closed. I don't know if there is a rule that the structure in question -must- be a house or apartment, but the principle of the question is good. The same trouble could happen in a house with a next-door cleaner, or an apartment over a first-floor cleaner, and the answers can still apply the same. How does one vote to re-open (if I'm allowed, that is)?
Answer: First thing to consider: does the law in your area require the cleaning company to restrict the fumes from their operation? If it does, and they aren't in compliance, the government may be able to get them to do better, and you might not have to do anything to get clean air.
If the above does not work, one way to keep a smell out of a room is with 'positive air pressure': to pump in cleaned air, such that the pressure from the clean 'pump' is greater than the air pressure coming in from the windows and doors. The air will then flow out the windows and doors instead of coming in, and you'd breathe/smell only the air that came in through the fan or blower.
One might be able to clean the fan/blower air by blowing it through an activated carbon filter. An industrial finishing room gas mask can remove very strong fumes. I don't know if such a filter can be scaled up to a blower-power size, but if so, the filter should be able to cover the fumes. You might be able to research the kind of filter that can handle the cleaning company's perfumes and cleaner fumes.
Comment: +1 for positive pressure solution; it was my first thought, although the legal aspects are also a good approach. The land owner/leasing company may have some say in the matter as well.
Answer:
is there any way to put a filter somewhere that prevents the smell from entering out space

Probably not.
If your definition of strip mall is the same as mine then my guess is that the perfumes are being legally released outdoors but are getting sucked into the building's fresh air intakes and distributed to all other tenants, not just you. Wind conditions likely affect how much smell makes it into your office.
You would have to convince your landlord to either kick out the drycleaning tenant or invest thousands into having an HVAC specialist engineer a solution; both of these options will cost the landlord money so good luck with that.
Sorry, but the realistic solution is for you to wear a personal respirator.

At my work there is a rear entrance where service vehicles park and unload. They are supposed to turn off their engines because it is directly next to an air intake for the building.
Quite often my entire office gets saturated with diesel engine exhaust and gives everyone a headache in short order. We have to go out there and remind them to turn off their engine.
As you can see, even something as dangerous as carbon monoxide gets a blind eye because HVAC is really, really expensive.


How to specify fps (frame rate) when streaming video with uv4l?

Question: I run the following command:
uv4l --driver uvc --device-id '0458:7081'
It seems to be working, but I've no idea how to define lower fps to reduce traffic. The manual didn't help.
The distro is Debian Wheezy.
Answer: You can use v4l2-ctl in the V4L2 tools collection to set the frame rate to one allowed value.
Comment: you are mixing stuff: uvcvideo is the kernel driver, while uv4l-uvc is the userspace driver. they are mutually exclusive.
Comment: Thanks. The following commands helped:
`v4l2-ctl --set-fmt-video=width=1280,height=720,pixelformat=1 && v4l2-ctl --set-parm=8`
where pixelformat was determined by:
`v4l2-ctl --list-formats`
Comment: Unfortunately I obtained that v4l2-ctl settings sometimes are being ignored by uv4l. Moreover, uv4l removes module 'uvcvideo' so after rebooting 'v4l2-ctrl' can't be applied until the module loaded manually (because there is no file '/dev/video0').
Also there is `--configuration` param available for uv4l uvc driver. What syntax of arguments for this param?
Comment: So what's the actual parameter for frame rate in v4l2-ctl?
Comment: For those wondering, `v4l2-ctl --set-parm=8` is the one that sets the frame rate. In this case, it's 8.0 FPS.


Does my dracaena marginata have spider mites?

Question: I'm trying to determine if my dracaena marginata has spider mites. A little history about the plant: I got it about 5 months ago and it seemed to be an outdoor plant with the previous owner. Since bringing it home with me it now lives only indoors. I noticed some small cob webs as seen in the photos but I think those have been there since I got the plant. I recall seeing those little webs when I got it. As seen in the photos there are some small holes on the leaves but those have been there since I got the plants. I don't think the holes got bigger. I'm thinking the plant had spider mites at one point but they might be dormant now? I don't see any moving things on the plants at all. I sat and looked at a lot of the leaves but haven't seen 1 moving thing on it. This makes me think the plant once had spider mites but now it doesn't. I'm very new to houseplants so any info is appreciated
Answer: Short answer: probably not.
Longer answer: Spider mite infestations present with very fine webbing coating whole areas of the plant, generally whole leaves and the stem. Within this webbing you should be able to see small ~1 mm (0.04 in) dots moving, but it does take some observation and helps if you know what you are looking for. You will be able to feel this webbing if it is present, but may not be able to see it, as it is very fine and best seen by holding up against a dark background with a light source shining on the leaves at an oblique angle.
Holes in the leaves are not indicative of spider mite activity - at least not holes of that size. Spider mites are so small that they feed off the contents of single plant cells, which range from 10 to 100 micrometres in size (that's a 100th to a 10th of a millimetre). This kills the cells, leaving a small pale yellowish dot on the leaf, but not an actual hole that you can look through.
A good example of a heavy infestation can be found on the Wikipedia page for spider mites. I've reproduced it here (file attribution: Paramecium, CC BY-SA 3.0 https://creativecommons.org/licenses/by-sa/3.0, via Wikimedia Commons):

In this picture, you can see the webbing between the stem and the leaves, but note the difficulty seeing it on the leaves themselves, even though it is there. You can also (if you look closely) see the damage caused by the mites themselves as the pale yellowish speckles on the leaf to the top right and middle left.


mounting a transducer under a polycarbonate jar for fluid level detection

Question: I am working with a tdc1000-tdc7200 evm board for water level detection. I am trying to mount a steminc 1MHz ultrasonic transducer under a polycarbonate jar to measure the water level in the jar. According to TI's recommendation (source) I am using Cyanoacrylate for transducer mounting. I am wondering is there other options of adhesive that I can use for mounting? I am looking for an adhesive that does not react with water. Also TI recommended using hot glue over sensor which also absorbs. Is there a better alternative that does not hinder transducer performance?
Answer: Water improves superglue's bonding, I'm not sure I see the problem with using it (and the hot glue) in your application.
In any case, I suspect that they specify the CA glue and hot glue because they provide a good bond, are inexpensive and reversible.
That said, I have used a variety of 2 part epoxies for mounting sensors to a variety of materials. Make sure you've got it where you want it because once it sets, there's no do-overs.
Comment: Hi DLS3141, thanks a lot for your suggestion. Can you kindly share your experience using 2 part epoxies for mounting sensors?


Can a liquid forms vapor pressure at 0 degree Celsius? because we know that at freezing point the vapour pressure of both solid and liquid are equal

Question: How can we able to explain the vapour pressure in between solid and liquid phase in case of freezing point?
Comment: Can you clarify what you are asking? Below the freezing point we have solid in equilibrium with vapour, and above the freezing point we have liquid in equilibrium with vapour. Are you asking how the two vapour pressures solid/vapour and liquid/vapour can be the same at the freezing point?
Comment: If want to explain the freezing point of any solvent then how will we explain can we say like that the if rate of the vapour formed by solid is equal to rate of the vapour formed by liquid then at that point the temperature will be called as freezing point or otherwise tell me that we use this term vapour pressure for solid/gas phase and liquid/gas phase how can we use this term for solid/liquid phase?
Comment: Recall that at the freezing point the Gibbs free energy of the solid and the liquid are the same. Thus, the equilibrium vapor pressure above the solid-liquid mixture is the same, even if the mixture is all-solid or all-liquid at the freezing point.
Answer: Start by considering the vapour in equilibrium with the liquid. For the two to be in equilibrium they must have the same molar Gibbs free energy. As a rough approximation the Gibbs free energy of the gas depends most strongly on its pressure while the Gibbs free energy of a liquid depends most strongly on its temperature. So for the two to stay the same the pressure of the vapour has to rise as we increase the temperature of the liquid, and vice versa.
The point of this is that the vapour pressure is a measure of the Gibbs free energy of the liquid. It isn't a simple proportionality because the equations for the Gibbs free energies are complicated, but we the two to be related by some smooth curve.
Now we can apply the same argument to the vapour in equilibrium with the solid, so again we find the vapour pressure is a measure of the Gibbs free energy of the solid. This means that if the vapour pressure of the liquid and the vapour pressure of the solid are the same then the Gibbs free energies of the liquid and solid are the same. But if the the Gibbs free energies of the liquid and solid are the same that means the liquid and solid are in equilibrium i.e. this happens at the melting point of the solid.
So suppose we graph the vapour pressures of the liquid and solid on the same graph we will get something like this:

The solid lines are the real experimental data for water and ice. The dashed lines are a freehand extrapolation of the solid lines drawn to guide the eye.
The melting point is the point where the two curves intersect, which of course happens at $0$°C for water.
So this is how you relate the vapour pressure to the melting point for any material. Find the curves describing the vapour pressures of the liquid and solid, and the melting point will be where the two curves intersect.


What are the basic difference between pickle and yaml in Python?

Question: I am naive to Python. But, what I came to know is that both are being used for serialization and deserialization. So, I just want to know what all basic differences in between them?
Answer: YAML is a language-neutral format that can represent primitive types (int, string, etc.) well, and is highly portable between languages.  Kind of analogous to JSON, XML or a plain-text file; just with some useful formatting conventions mixed in -- in fact, YAML is a superset of JSON.
Pickle format is specific to Python and can represent a wide variety of data structures and objects, e.g. Python lists, sets and dictionaries; instances of Python classes; and combinations of these like lists of objects; objects containing dicts containing lists; etc.
So basically:

YAML represents simple data types & structures in a language-portable manner
pickle can represent complex structures, but in a non-language-portable manner

There's more to it than that, but you asked for the "basic" difference.
Comment: Thank you and please feel free to refer me more information about pickle & yaml. Like, on what parameters we should pick one of them for data serialization and all(apart from this language portability)?
Comment: @nirprat is serialization/deserialization speed critical? What about readablity, do you need to store those serialized files in a human-readable form?
Comment: The structure of YAML follows the Python concept of indenting; each level is represented by an indent, and there is no closing marker.  Compare to XML where starting a block with ``, you should end the same block with ``.  YAML is somewhat easier to copy, cut and paste than XML or JSON for this reason.  The simplest rule of thumb is, if you are using just primitive data types, choose YAML (or JSON) because they are human-readable, editable and portable; but if you are using non-primitive data types (e.g. Python objects), then you must use Pickle.
Comment: Through API call I am collecting some stats which will be heavily used. So, in my case I am a bit speed concerned and so that I am trying to dump this data into file and cache it instead of dumping it into DB.
Comment: @nirprat if speed matters, consider using `cPickle` instead of pickle, it's much faster.
Comment: That can be a good approach.  You can also consider having a separate process migrate the data from your files to database later.  If that process would be mediated by Python, then the choice of YAML, Pickle etc. is probably not so important.  But if you want that process to be runnable in other ways (e.g. using database native import utility) you would probably get farther with YAML, JSON or XML (or even CSV if the data structure is "flat" records).  I'm not aware of any database native toolset that works with Pickle.
Answer: pickle is a special python serialization format when a python object is converted into a byte stream and back:

"Pickling" is the process whereby a Python object hierarchy is
  converted into a byte stream, and "unpickling" is the inverse
  operation, whereby a byte stream is converted back into an object
  hierarchy.

The main point is that it is python specific.
On the other hand, YAML is language-agnostic and human-readable serialization format.
FYI, if you are choosing between these formats, think about:

serialization/derialization speed (see cPickle module)
do you need to store serialized files in a human-readable form?
what are you going to serialize? If it's a python-specific complex data structure, for example, then you should go with pickle.

See also:

Python serialization - Why pickle?
Lightweight pickle for basic types in python?
Comment: So, I have to cache some stats which will be used by other programs for stats manipulation and not concerned about human readability.
Comment: @nirprat if these serialized stats will be used by non-python programs then `pickle` is not a way to go: choose between language agnostic formats: `YAML`, `JSON`, `XML`, `CSV` etc. Take a look at `ujson` and `simplejson` modules - they are quite fast comparing to `json` module.
Answer: If it is not important for you to read files by a person, but you just need to save the file, and then read it, then use the pickle. It is much faster and the binaries weigh less.
YAML files are more readable as mentioned above, but also slower and larger in size.
I have tested for my application. I measured the time to upload and download an object to a file, as well as its size.

Serialization/deserialization method
Average time, s
Size of file, kB

PyYAML
1.73
1149.358

pickle
0.004
690.658

As you can see, yaml is 1,67 times heavier. And 432,5 times slower.
P. S. This is for my data. In your case, it may be different. But that's enough for comparison.


Why didn't Smiley arrest Polyakov?

Question: In Tinker Tailor Soldier Spy (2011), Polyakov is taking information from the mole
and passing it to the Soviets. So why didn't Smiley arrest Polyakov?
Answer: Polyakov is a diplomat, with a role as a cultural attaché.  As such he has diplomatic immunity.
Arresting a diplomat is an incredible breach of international norms and would put your own diplomats worldwide at risk.  Article 29 of the Vienna Convention on Diplomatic Relations states:

The person of a diplomatic agent shall be inviolable. He shall not be liable to any form of arrest or detention. The receiving State shall treat him with due respect and shall take all appropriate steps to prevent any attack on his person, freedom or dignity.

Theoretically the UK could order Moscow to withdraw Polyakov from the country, but even that is a sanction reserved for very serious breakdown in relations between countries.
Expelling diplomats does happen, but it's a decision made at a political level in a country, not something that an agent like Smiley can do.
It's known that some diplomats are spies for their country, and the way you deal with that is by having counter espionage operations against them, which is what we are seeing in the movie.
Comment: It's also suggested that the Russians would recall Polyakov to Russia and probably kill or imprison him, due to his failure.
Comment: @magarnicle .... Well that's from Percy Alleline's perspective where Polyakov is their source called Witchcraft and is giving them secrets.  They's why they stop Connie Sachs investigating him.  However although Polyakov is giving them some stuff (of unknown quality, to appear genuine) his primary purpose in London is running Bill Haydon as a double agent.
Comment: FYI, when a government expels a foreign spy, especially one who was operating under "official cover" (i.e. under the guise of being a diplomat), the host country declares them "[_persona non grata_](https://en.wikipedia.org/wiki/Persona_non_grata)," which is a designation provided for by the VCDR. Importantly, the host country is legally entitled to apply this designation to anyone for any reason, even before that person enters the country, and _without having to explain its decision,_ which is essential when the reason is espionage (which the foreign country will inevitably deny to the end).
Comment: Interesting, but I was mainly referring to Polyakov telling Haydon at the end: "Why don't you cheer up? You're probably going to get a medal and a flat in Moscow. I'm the one that's going to get sent to Siberia."

Why didn't Smiley arrest Polyakov?


How do you chain 2-port S-parameters onto a 1-port S-parameter?

Question: With 2-port S-parameters, you can build up a circuit by chaining them together using ABCD or T-parameters, simply multiply the matrices:

We have measured a complex single port S-parameter of an antenna.  I would like to chain 2-port S-parameter impedance match matrices (from .s2p's) in front of the 1-port antenna measurement (.s1p) such that the result is a single port matrix of the entire system. Thus, the result is composed of several 2-port matrices (chained) and terminated by the 1-port antenna S-parameters, producing a 1-port matrix. This would allow us to estimate impedance match behavior for the antenna with the match.
Of course there are software packages out there that do this, but I am writing my own RF library in Perl and would like to add 1-port chaining as a feature.
Question:
First we have to transform the 1-port S-parameter matrix to "ABCD compatible" parameters so that they can be multiplied to the 2-port matrices. What is the math for that transform?
Is the resulting single port matrix simply multiplied against the 2-port ABCD- or T-parameter matrix, or does 2-to-1-port composition differ somehow?
Answer: From Wikipedia (or pretty well any rf/microwave text covering S-parameters):
https://en.wikipedia.org/wiki/Scattering_parameters


"Averaging" transformation matrices?

Question: I have a question on how best to "average" transformation matrices. Say that I have n number of 4x4 transformation matrices, and I wanted to find a matrix that approximated each one of the n 4x4 transformation matrices (an average of sorts). Are there any methods that would work?
Comment: I'm afraid you're going have to be a bit more specific.. Start with your background or why does that interest you (concisely). The term transformation matrix, for example, is weird (to me); aren't they just matrices?
Comment: From the tags it looks like you might be interested only in matrices that represent rigid motions, and expect your "average" to have that property too. If that is true, you ought to say it explicitly in the question. (And also if that is the case the "affine-geometry" tag is definitely not relevant).
Answer: Unfortunately, there's no really good way to average such transformations. In particular, in three dimensions there is no possible averaging operation $\mathcal A$ with all of the following natural and desirable properties:

$\mathcal A$ is symmetric -- that is, $\mathcal A(M_1,M_2)=\mathcal A(M_2,M_1)$ for all $M_1$ and $M_2$.
$\mathcal A$ is invariant under rotations of the coordinate system.
Whenever the inputs to $\mathcal A$ are both rotation matrices (or invertible or has determinant 1), the output is a also a rotation matrix (or invertible or has determinant 1).

So at least one of these properties has to be given up. The only one that it really makes any sense to do without is (2), but even so the resulting outcome is going to be discontinuous and rather non-intuitive.
Comment: Can you get all three if you limit the magnitude of the relative rotation? Or is impossible to get all three even locally? Is a life in a universe where you can't even average rotations worth living?
Comment: Maybe it's not possible to have a binary operation that is associative; for example to have $A(A(M_1,M_2),M_3) = A(M_1,A(M_2,M_3))$.  But suppose, you had a finite set of rotations $M_1, \ldots M_n$.  Then maybe a possible averaging could be $$\mu = \min_{X\in SO(3;\mathbb{R})} \sum_{k=1}^n \| \log( X^T M_k ) \|^2.$$  I think this can probably work locally as long as we can uniquely give an evaluation of the matrix-logarithm.
Comment: Maybe there are some conditions missing to the claim.  For example an operation that takes $A(M_1,M_2)$ to the identity matrix for all inputs works and satisfies all three properties, but it's certainly not something one would normally consider to be an average.
Answer: The question is a bit vague, but one way to go about this is to parametrize your transformation matrices using a Euclidean structure. The translation part of the transformation is already Euclidean. The problem is with the rotation.
One good Euclidean represetntation of SE(3) is the Lie algebra. You could convert all matrices into 6x1 vectors using the Lie algebra (and extracting the twist), then compute the average in this 6-space. Finally, transform the average back to SE(3) via the exponential map.
See here for general information on the exponential map http://en.wikipedia.org/wiki/Exponential_map_%28Lie_theory%29
and here for more specific information about rigid-body transformations and code http://www.mathworks.com/matlabcentral/fx_files/24589/1/content/kinematics/doc/index.htm
Answer: I would first pick a distance function between transformations. You'll have to combine a translational part and a (harder to pick) rotational part. Here is an article discussing distances on SO(3): http://ai2-s2-pdfs.s3.amazonaws.com/5617/8de1001efe54792ad93f6980de5d5e91906b.pdf
If you think one of the transformations in your set is a reasonable center for your purposes, then you can pick the point that minimizes the sum absolute (or squared) distance to the other points. You can also do a form of sample and consensus, where your objective is essentially the number of other points within a fixed radius ball.
If not, then you can set up a constrained nonlinear optimization of the function you defined, and hope for the best. I think the ceres solver can constrain quaternions, for example...
Answer: There's a trick I've used which is mathematically a little dodgy but gives the desired result for a certain set of use cases (particularly where you want to avoid 'pops' when your rotations are continuously changing).
First split the matrices so you have lists of positions, forward vectors and up vectors.
Average each of the lists of vectors.
Normalize the forward and up vectors and use them to construct a rotation (favouring the forward vector and just using the up to calculate roll around the forward vector).
Then just reconstruct your matrix.
Again, the average isn't the true average but it's a good approximation and gives a nice continuous result (unless your average forward or up results in a vector of exactly zero length).
It also lets you weight the values as you can just multiply each position/forward/up by the weight, add them up and divide by the total.

"Averaging" transformation matrices?


CSPRNG generation vs asymmetric encryption performance

Question: It might sound like a weird comparison, but which one is faster, If I were to generate a CSPRNG every time or to sign(private encrypt) a data?
Comment: You may want to read [this](https://crypto.stackexchange.com/q/15997/1172); please do not use "private encrypt" when it comes to signing data.
Comment: Thanks. Indeed i would not do a raw signature, What i wanted to mean is, just computing the signature and not the complete CMS signature.
Answer: It costs a median of about 300 cycles on a modern x86 system to compute the ChaCha pseudorandom function, generating 64 bytes of output from a 32-byte reusable key and a 16-byte input.
It costs a median of about 50000 cycles on a modern x86 system to compute a 64-byte Ed25519 signature.
These numbers are from https://bench.cr.yp.to/.  The fastest signature schemes reported there still cost over 1000 cycles.
But what on earth are you doing where there is any question of whether you should use a PRNG or a public-key signature?  This is like going to a bicycle shop and asking whether you should buy a wheel or a handlebar.  You should identify what your application's goals, threat model, and security needs are first before you try picking the fastest handlebar for your bicycle.
If I screw up my eyes and stand on my head and take your inquiry to mean that you want some properties of a pseudorandom function and some properties of a signature, maybe you want a VRF—but causing onlookers to have to stand on their heads is no way to build a secure system!
P.S.  Signature is a fundamentally different concept from 'encrypting with the private key'.
Answer: Symmetric algorithms are generally faster than the asymmetric ones you seem to want to use for signing - as you talk about a private key and don't mention a MAC. RSA private key operations are exceptionally slow if you look at the generic set of crypto primitives found in most libraries; only RSA key pair generation is much slower. CSPRNG's are generally build from symmetric primitives (the dual-ECC one is not used that much anymore).

Of course we should only compare primitives with on the same kind of platform and at the same security level.
In the end you want to test; it's the only way to be sure.

In practice the CSPRNG could still be slower if:

the CSPRNG includes the seeding;
retrieving the seed blocks;
the signature generation doesn't depend on a random value (RSA PKCS#1 v1.5 signatures are deterministic) or doesn't block itself.

If you go for signature generation you may want to consider ECDSA rather than RSA; it's much faster at the same security level (and probably any level on most platforms).
Comment: What am expecting here is to do a crypto challenge. There are two possibilities, one is the server generate a CSPRNG and encrypt with the client public key. The client can only decrypt it as he has the private key and he can send it back to the server for verification.
Comment: Another option is server send an id, the client can sign it with the private key and send it to the server, so the server can be sure the client has the key
Comment: Method 1, has the heavy crypto operation on the server side, while method 2 has it distributed to the client side.
Comment: Not really, the private key operation is at the client side in both cases. But note that you may want to challenge the security of relying on the PRNG of the client. Many cryptosystems make sure they rely on randoms of both sides.
Comment: Private key operation, yes it's in client side. But in addition to that the first method need to do a CSPRNG and a public key operation. Anyways, I agree that the random numbers should be relied on from both the server and client. Thanks you have provided me enough information.


$\mathbb{R}^{n}$ analysis book that uses Lebesgue integrals

Question: A professor told me it would be unwise to study an $\mathbb{R}^{n}$ analysis book that uses Riemann integral. However, I do not know any book that doesn't. Is there something that covers material similar to Spivak's Calculus on Manifolds, but using Lebesgue integrals instead? I don't think these topics are generally covered in a measure theory book.
Answer: Andrew Browder's Mathematical Analysis does multivariable integral calculus using the Lebesgue integral. It is often overlooked because of classics like Rudin's Principles of Mathematical Analysis. It treats point-set topology, differential forms and Stokes's theorem too, totally awesome!
Comment: This looks nice. Maybe a bit repetitive since I'm already familiar with the first half of the book (up to and including topology), but if nobody suggests something better I might get it.


Can multiple MS-Access 2007 front ends be linked to an SQL Server 2008 backend on Sharepoint?

Question: I have several computers at different locations, each with their own copy of an MS-Access 2007 front end. Each copy links to an SQL-Server 2008 back end on a server. I would like to migrate the back end to Sharepoint and have each front end access it there. IS this possible, or do I have to use Azure? I would also like to know if its possible to have both front and back ends on Sharepoint, and have my users operate with thin-client workstations? If any of these two options are possible, please explain how I can go about implementing them.
Answer: The scenarios you could use with SharePoint are:

Save the database file in SharePoint itself and check it in and out when you're using it just like you'd do with any other file. This is kind of rickety and SP isn't really going to do a great job of telling you what changes you made, but it's possible, I guess.
Use Access Services to, in essence, host the Access DB on SharePoint itself. Your SharePoint WFEs then are going to become the WFEs for your Access database. This is still not quite the same thing as what you're doing at the moment; while the tables/views/etc. will be stored within SharePoint, they'll be stored the way SharePoint stores objects, with all the normal SharePoint DB caveats attached (if you edit the data therein directly via a stored proc or something you could kill the entire SP farm, MS doesn't support accessing the DB directly, and so on).
Depending on how advanced your database architecture is, you could use a BCS connection to the DB in question and then render the tables or views you want to access as SharePoint lists. So long as you get the SQL calls right, they'll look like regular old lists on the front end and behave like a database on the backend.
Comment: Based on your answer, it doesn't sound like Sharepoint is an acceptable platform for hosting the SQL-Server backend. It looks like Azure or AWS-RDS (Amazon Web Services-Relational Database Services) are adequate platforms. Now I have to decide which of these two is the best.