20 Matching Annotations
  1. Jun 2020
  2. May 2020
  3. Jan 2020
    1. Databases must always be opened with the same flags once created.

      Can a case not arise where a dbi needs to be re-opened with different DbiFlags?

      What if an Dbi is reopened with different flags nevertheless? Will the api throw?

    2. but only ever one write transaction

      Is one scoped to one lmdb environment?

    3. there must not be two concurrent transactions opening the same database
  4. Dec 2019
    1. Hans Moravec argued in 1976 that computers were still millions of times too weak to exhibit intelligence. He suggested an analogy: artificial intelligence requires computer power in the same way that aircraft require horsepower. Below a certain threshold, it's impossible, but, as power increases, eventually it could become easy.[79] With regard to computer vision, Moravec estimated that simply matching the edge and motion detection capabilities of human retina in real time would require a general-purpose computer capable of 109 operations/second (1000 MIPS).[80] As of 2011, practical computer vision applications require 10,000 to 1,000,000 MIPS. By comparison, the fastest supercomputer in 1976, Cray-1 (retailing at $5 million to $8 million), was only capable of around 80 to 130 MIPS, and a typical desktop computer at the time achieved less than 1 MIPS.
    1. "You usually think of an argument as a serial sequence of steps of reason, beginning with known facts, assumptions, etc., and progressing toward a conclusion. Well, we do have to think through these steps serially, and we usually do list the steps serially when we write them out because that is pretty much the way our papers and books have to present them—they are pretty limiting in the symbol structuring they enable us to use. Have you even seen a 'scrambled-text' programmed instruction book? That is an interesting example of a deviation from straight serial presentation of steps.3b6b "Conceptually speaking, however, an argument is not a serial affair. It is sequential, I grant you, because some statements have to follow others, but this doesn't imply that its nature is necessarily serial. We usually string Statement B after Statement A, with Statements C, D, E, F, and so on following in that order—this is a serial structuring of our symbols. Perhaps each statement logically followed from all those which preceded it on the serial list, and if so, then the conceptual structuring would also be serial in nature, and it would be nicely matched for us by the symbol structuring.3b6c "But a more typical case might find A to be an independent statement, B dependent upon A, C and D independent, E depending upon D and B, E dependent upon C, and F dependent upon A, D, and E. See, sequential but not serial? A conceptual network but not a conceptual chain. The old paper and pencil methods of manipulating symbols just weren't very adaptable to making and using symbol structures to match the ways we make and use conceptual structures. With the new symbol-manipulating methods here, we have terrific flexibility for matching the two, and boy, it really pays off in the way you can tie into your work.3b6d This makes you recall dimly the generalizations you had heard previously about process structuring limiting symbol structuring, symbol structuring limiting concept structuring, and concept structuring limiting mental structuring.
    1. During 1995, a decision was made to (officially) start licensing the Mac OS and Macintosh ROMs to 3rd party manufacturers who started producing Macintosh "clones". This was done in order to achieve deeper market penetration and extra revenue for the company. This decision lead to Apple having over a 10% market share until 1997 when Steve Jobs was re-hired as interim CEO to replace Gil Amelio. Jobs promptly found a loophole in the licensing contracts Apple had with the clone manufacturers and terminated the Macintosh OS licensing program, ending the Macintosh clone era. The result of this action was that Macintosh computer market share quickly fell from 10% to around 3%.
  5. Oct 2019
    1. Let's make the example even easier. function convertDate<T extends string | undefined>(isoDate?: string): T { return undefined } 'undefined' is assignable to the constraint of type 'T' Means: What you return in the function (undefined), matches the constraints of your generic type parameter T (extends string | undefined). , but 'T' could be instantiated with a different subtype of constraint 'string | undefined'. Means: TypeScript does not consider that as safe. What if you defined your function like this at compile time: // expects string return type according to generics // but you return undefined in function body const res = convertDate<string>("2019-08-16T16:48:33Z") Then according to your signature, you expect the return type to be string. But at runtime that is not the case! This discrepancy that T can be instantiated with a different subtype (here string) than you return in the function (undefined) is expressed with the TypeScript error.
    1. In the body of the function you have no control over the instantiation by the calling context, so we have to treat things of type T as opaque boxes and say you can't assign to it. A common mistake or misunderstanding was to constraint a type parameter and then assign to its constraint, for example: function f<T extends boolean>(x: T) { x = true; } f<false>(false); This is still incorrect because the constraint only restricts the upper bound, it does not tell you how precise T may really be.
  6. Aug 2019
    1. Negative rates in theory mean the German government can borrow money from investors and get paid for doing so. But Berlin runs a budget surplus and has no desire to increase spending as other slower-growing European countries would like it to do. Olaf Scholz, Germany’s finance minister, has said recently the government doesn’t need to act as if it is in a crisis
  7. Mar 2017