If there's a bug between the specifications and Chrome, what incentive is there for Chrome to change? How do you check/verify the specifications if there is only one implementation?
Given a single implementation, what incentive is there to develop open standards?
How do you innovate (in standards, JavaScript performance, rendering, etc.) if there is only one group working on them?
Case in point: Firefox is the only major browser to provide MathML support. Where is the incentive to get that implemented in the other browsers, especially given MathJax?
Where is the competition to innovate in things like web tools (layout analysis -- esp. for flexbox, etc., accessibility property (WCAG, WAI-ARIA) navigation/investigation) given a single implementation?
The tricky part of this is that not all programmers make good managers, or want to be promoted into management. They are different skill sets. That said, having a basic understanding of the difficulties and things that take time (learning new technology, investigating/debugging an issue, etc.) would be a good thing to have as a manager. Also, being able to assist where possible -- asking if the developer needs someone to help out, finding people with the relevant skills to mentor the developer (or finding suitable courses/training/books), etc.
Is that from the work by David Crystal reconstructing the sound of Shakespeare? It's very interesting to listen to passages read out in that Original Pronunciation. There are several videos of it on YouTube. NativLang also did a video on Shakespeare pronunciation.
It's also interesting how the pronunciation is reconstructed. Looking at rhyming pairs that don't currently rhyme (e.g. loved/proved), looking at different accents of English (Irish, Scottish, American, etc.) to identify historic pronunciations, etc.
I now tend to focus on a black box logic coverage approach to tests, rather than a white box "have I covered every line of code" approach. I focus on things like format specifications, or component contract definitions/behaviour.
For lexer and parser tests, I tend to focus on the EBNF grammar. Do I have lexer test coverage for each symbol in a given EBNF, accepting duplicate token coverage across different EBNF symbol tests? Do I have parser tests for each valid path through the symbol? For error handling/recovery, do I have a test for a token in a symbol being missing (one per missing symbol)?
For equation/algorithm testing, do I have a test case for each value domain. For numbers: zero, negative number, positive number, min, max, values that yield the min/max representable output (and one above/below this to overflow).
I tend to organize tests in a hierarchy, so the tests higher up only focus on the relevant details, while the ones lower down focus on the variations they can have. For example, for a lexer I will test the different cases for a given token (e.g. '1e8' and '1E8' for a double token), then for the parser I only need to test a single double token format/variant as I know that the lexer handles the different variants correctly. Then, I can do a similar thing in the processing stages, ignoring the error handling/recovery cases that yield the same parse tree as the valid cases.
I've allocated a 5GiB partition to /home on my SSD, as it does not need to be bigger. I don't want it filling up with software or other things like ivy/maven caches.
If you are implementing a specification (e.g. CSS/HTML/other language parser), tests are invaluable to assess how conformant your code is. They allow you to test the different parts and specifications in isolation (the lexer, the parser, the value/unit handling, etc.)
If you are implementing interfaces that plug into some other program (e.g. an IDE, or even different teams in a project), tests are invaluable to check that your code works as expected, and does not break when a new version of the program is released.
Yes, writing tests takes longer. Yes, writing tests makes it harder to change the code in the future. However, they have helped me identify cases in my code that I had not considered (when integrating my code with an IDE), and to prevent issues when refactoring and extending the code.
There are ways to mitigate the issues of changing the code, such as creating scaffolding to bridge the old and new code via adaptors, etc.
If it is in your top sites, you need to add that widget to the home page to get access to the menu to dismiss the result. (See my reply to the grandparent post for details.)
Ok, I've figured it out. The Shift+Delete combination only works for search results (e.g. the results displayed when you press space or type part of the url that are in your history).
To manage the top sites (which Firefox 78 displays on address bar click or down arrow if enabled in the preferences [1]), you need to:
1) add the top sites on the home page,
2) hover over the page you want to remove,
3) click the "..." button in the top right ("Open Menu"),
4) click "unpin" if you don't want it to be kept there, but stil calculated in the ranking,
5) click "dismiss" if you don't want it displayed.
[1] This is a change in Firefox 78, as when pressing the down arrow key Firefox 77 displayed what Firefox 78 displays when pressing the space bar.
If you have that in your history, you can highlight that entry in the search results (e.g. using the up/down arrow keys after typing "weather") then press Shift and Delete to delete it from the history. If you don't want search results, you can go to the options/preferences, select search, and uncheck the "Provide search suggestions" option.
I don't like the behaviour in Chrome or Slack either. I haven't tried the new Edge (Edgeium) -- the Trident/IE derived Edge only expands downward.
1. It is inconsistent with the behaviour of every other control, including other combobox/search/dropdown UI elements. The web search element on the new page/tab for both Firefox and Chrome only expand downward to show the results. (The one on Chrome adjusts the border radius slightly, but that is more to do with the way the border radius is calculated.)
2. I personally find it distracting, especially as it is moving in two directions at once. -- I don't like animated elements in the Windows start menu and YouTube's latest post section even more for the same reason (I notice the movement in the corner of my eye, then get distracted as it is drawing attention away from what I am doing).
3. It can happen when not user initiated, e.g. when switching to an already open tab where the focus then goes to the address bar. This further adds to the distracting "look at me!" nature of the new design, where you have to explicitly click away to get rid of. Couple that with reddit's behaviour of clicking outside a post navigating to the channels page and you have some fun times!
4. The dropdown of frequently visited pages can no longer be opened by the mouse only. You need to click on the address bar and then press the down arrow key.
My understanding is that from General Relativity (GR) mass carrying particles (and other energy-momentum) curves space-time, and that curvature is what we understand as gravity. I'm aware of there needing to be an exchange particle due to quantum mechanical (QM) representations, but have not been convinced how they work.
I wonder if the Higgs particle could be a candidate for the force carrier in the QM representation of GR (e.g. the resulting higgs field interacts with and causes space-time curvature instead of energy-momentum doing it directly). That is speculation on my part from a lay-person perspective, so could be completely wrong.
Ranges are a (start, end) pair of iterators that support begin/end -- think of them like a subset of containers that just provide access to the iterators over them. They also support the end iterator being a different type to the sstart iterator, supporting things like sentinel iterators (e.g. null pointer checks).
The next standard library supports using the standard algorithms with ranges, so you can say things like `std::sort(v)` instead of `std::sort(v.begin(), v.end())`.
IIUC, views are ranges that can adapt the results of the underlying object without changing the contents of that object, such as a lower-case view, or a reversed view. These work by doing the lower-case conversion on dereference, or swapping the increment/decrement operations.
Destructors in C++ aren't just for making sure you leak memory. They are used for many lifetime controlled things such as:
1. general resource cleanup (file handle, database connection, etc.) using RAII (Resource Aquisition Is Initialization);
2. tracing function entry/exit.
And the nightmare of determining who owns the APIs in things like SQL, BSD, POSIX, libc, speadsheet functions, the cairo and HTML canvas path APIs, HTML DOM, and more. Not to mention compatibility projects like wine, DOSBox, and various emulators. If printf is copyrighted, it will affect C, PHP, python, the command line application, and others. Then there are things like where C# is clearly influenced by Java.
The whole programming landscape would need to be audited.
What about something like "in_order_traversal", which is an algorithm and you need to keep track of the traversed stack. You could either write it with functions in which case you would need to pass the stack as a parameter and have a constructor/initial state version of the function that passes the stack to the main function, or have a functor/function class that keeps the stack internally.
A better comparison would be the yearly death toll due to flu for the US, noting that the current COVID-19 death toll is over a 2-3 month period. Preliminary estimates for the 2019-2020 US flu season [1] put the number of deaths for a 6 month period (Oct 2019-Apr 2020) at 24k-62k, so the COVID-19 attributed deaths are 2x-4x that of flu over half the time (3 months vs 6 months).
The audio generation is split into packets or chunks of audio. There are two general methods of storing/generating these chunks:
1. LPC/formants -- building the audio using the LPC (linear predictive coding) or frequency (formant) parameters and a residual carrier for the difference;
2. OLA (overlapped add) -- combining and overlapping audio split at individual wave (peak to peak) packets.
The different systems (klatt, MBROLA, etc.) build on these basic techniques. The *OLA systems are more space intensive, as they need more of the audio data to synthesize the voice, but tend to result in more natural voices.
The other complexity is how the individual phonemes (building blocks of speech) are stored. Different languages and accents have different sets of phonemes, so more complex languages require more data. Systems like MBROLA store the data as diphones (from the mid-point of the first phoneme to the mid-point of the second), to make it easier to join the phonemes. There are more diphones, although not all combinations are in a given language and accent.
This data is controlled by different prosodic parameters (e.g. pitch and duration). Neural nets can be used to control these parameters, or techniques like decision trees and probabilistic models.
IIUC, there are two approaches to neural nets when using audio generation: 1) generate the LPC/formant parameters; 2) generate the audio directly. These can either operate on phonemes, or on the text directly. Operating on the text directly limits the voice to a particular language and accent, but potentially allows the neural net to infer pronunciation rules itself.
That's interesting. So what you have is some sort of similarity metric that is colour based. You could define it as being 1 for an exact match, and 0 for not matching, so cyan, etc. would be 0 red, while orange may be slightly red (e.g. 0.1), and pink may be slightly more red (e.g. 0.25). This would be a 3D function/surface.
This would allow you to model classes of colours, like purples. Shades of a colour could then be any similar colour in the range 0 to 0.5 (or 0.25).
Given a single implementation, what incentive is there to develop open standards?
How do you innovate (in standards, JavaScript performance, rendering, etc.) if there is only one group working on them?
Case in point: Firefox is the only major browser to provide MathML support. Where is the incentive to get that implemented in the other browsers, especially given MathJax?
Where is the competition to innovate in things like web tools (layout analysis -- esp. for flexbox, etc., accessibility property (WCAG, WAI-ARIA) navigation/investigation) given a single implementation?