Now I feel I should rewatch this video annually as a reminder to myself, or maybe monthly.
503 karma · joined October 13, 2020
Now I feel I should rewatch this video annually as a reminder to myself, or maybe monthly.
I actually quite liked "Divine Proportions". As far as I know Wildberger is eccentric, but not exactly a crackpot.
# Object Oriented Programming library for Nix
# By Russell O'Connor in collaboration with David Cunningham.
#
# This library provides support for object oriented programming in Nix.
# The library uses the following concepts.
#
# A *class* is an open recursive set. An open recursive set is a function from
# self to a set. For example:
#
# self : { x = 4; y = self.x + 1 }
#
# Technically an open recursive set is not recursive at all, however the function
# is intended to be used to form a fixed point where self will be the resulting
# set.
#
# An *object* is a value which is the fixed point of a class. For example:
#
# let class = self : { x = 4; y = self.x + 1; };
# object = class object; in
# object
#
# The value of this object is '{ x = 4; y = 5; }'. The 'new' function in this
# library takes a class and returns an object.
#
# new (self : { x = 4; y = self. x + 1; });
#
# The 'new' function also adds an attribute called 'nixClass' that returns the
# class that was originally used to define the object.
#
# The attributes of an object are sometimes called *methods*.
#
# Classes can be extended using the 'extend' function in this library.
# the extend function takes a class and extension, and returns a new class.
# An *extension* is a function from self and super to a set containing method
# overrides. The super argument provides access to methods prior to being
# overloaded. For example:
#
# let class = self : { x = 4; y = self.x + 1; };
# subclass = extend class (self : super : { x = 5; y = super.y * self.x; });
# in new subclass
#
# denotes '{ x = 5; y = 30; nixClass = <LAMBDA>; }'. 30 equals (5 + 1) * 5).
#
# An extension can also omit the 'super' argument.
#
# let class = self : { x = 4; y = self.x + 1; };
# subclass = extend class (self : { y = self.x + 5; });
# in new subclass
#
# denotes '{ x = 4; y = 9; nixClass = <LAMBDA>; }'.
#
# An extension can also omit both the 'self' and 'super' arguments.
#
# let class = self : { x = 4; y = self.x + 1; };
# subclass = extend class { x = 3; };
# in new subclass
#
# denotes '{ x = 3; y = 4; nixClass = <LAMBDA>; }'.
#
# The 'newExtend' function is a composition of new and extend. It takes a
# class and and extension and returns an object which is an instance of the
# class extended by the extension.
rec {
new = class :
let instance = class instance // { nixClass = class; }; in instance;
extend = class : extension : self :
let super = class self; in super //
(if builtins.isFunction extension
then let extensionSelf = extension self; in
if builtins.isFunction extensionSelf
then extensionSelf super
else extensionSelf
else extension
);
newExtend = class : extension : new (extend class extension);
}
In nix overlays, the names "final" and "prev" used to be called "self" and "super", owing to this OOP heritage, but people seemed to find those names confusing. Maybe you can still find old instances of the names "self" and "super" in places.Dave also designed a way of doing "object oriented" programming in Nix which eventually turned into what is now known as overlays.
P.S. I'm pretty sure jsonnet is Turing complete. Once you get any level of programming, it's very hard not to be Turing complete.
Lemma gal_conjg K E x : 'Gal(E / K) :^ x = 'Gal(E / x @: K).
This says for intermediate fields K and E (within some ambient separable (finite dimensional) field extension L / F), 'Gal(E / K), the group of automorphisms of E that fix K†, conjugated by (written as :^ ) x‡ is equal to 'Gal(E / x @: K),the group of automorphisms of E that fix x @: K which denotes x(K).The fields E K and F in this proof correspond to the fields L M and K from the article; 'Gal(E / X) corresponds to X* from the article; and of course x corresponds to τ from the article.
†) technically that fix E ∩ K since our notation doesn't technically assume that K ≤ E.
‡) I believe by type inference x must be something we can conjugate the group by, and thus is must be a generic automorphism of E, i.e. an F-automorphism of E.
https://www.cbc.ca/news/canada/ottawa/rcmp-chinese-police-st...
I'm fairly sure that people are only getting hung up on the size of this finite set, for no good reason. I suspect that if the size of this finite set were 2, instead of 633, and you could draw these unavoidable configuration on the chalk board, and easily illustrate that both of them are reducible, everyone would be saying "ah yes, the four colour theorem, such an elegant proof!"
Yet, whether the finite set were of size 2 or size 633, the fundamental insight would be identical: there exists some finite unavoidable and reducible set of configurations.
The Four Colour Theorem is true because there exists a finite set of unavoidable yet reducible configurations. QED.
To verify this computational fact one uses a (very) glorified pocket calculator.
But to clarify the report's indirect costs is not due to (just) indirect costs on buying goods transported by carbon tax, but the report's additional "economic factors" is due to "the loss in employment and investment income".
But I personally find this take in their report unfair because the the alternative of not having the carbon tax isn't really the status quo, because there is an "economic cost" from climate change such as 'the interior of BC being hotter than death valley' and 'the town of Jasper burning down'.
That said, I do see that I'm rationalizing my personal beliefs on this topic, and that is also unfair.
While it was a pretty big upfront cost, the combo does have the advantage of entirely reimagining how one does laundry! Specifically because it both washes and dries you can just run it overnight and in the morning you take out dry clothes. So no more laundry days; every night is a potential laundry night. Not only is it energy efficient, it also runs on my ultra-low overnight time of day rates, because that is simply the most convenient time of day to run it anyways.
I think the above video review covers basically everything. I do agree the clothes do not come out super dry, and sometimes I do run it a little longer, or let things air out a bit. Clothes are usually fine and sheets are slightly less fine. Also there is no lint trap, so I have to keep wiping out the lint.
Overall I think the advantages outweigh the disadvantages with not having to babysit the washing machine ensure wet clothes are transferred to the dryer in a timely fashion.
https://www.cbc.ca/news/canada/british-columbia/canada-jorda...
I recently found out that Syncthing is ending Android support. :(
I could be wrong (and I probably am) but I feel like the term "reproducible build" has shifted/solidified since 2006 when Dolstra's thesis was first written (which itself doesn't really use that term all that much). As evidence the first wikipedia page on "Reproducible builds" seems to have appeared in 2016, a decade after Dolstra's thesis, and even that stub from 2016 appears to prefer to use the term "Deterministic compilation".
Anyhow, when the Nix project originally spoke about "reproducible builds", what I understood was meant by that term was "being able to repeat the same build steps with the same inputs". Because of the lack of determinstic compilation, this doesn't always yield bit-by-bit identical outputs, but are simply presumed to be "functionally identical". There is, of course, no reason to believe that they will necessarily be functionally identical, but it is what developers take for granted every day, and if otherwise would be considered a bug somewhere in the package.
With Nix, when some software "doesn't work for me, but works for you", we can indeed recursively compare the nix derivation files locating and eliminating potential differences, a debugging process I have used on occasion.
I agree that "reproducible builds" now means something different, but that isn't exactly the fault of Nix advocates. I guess a new term for "being able to repeat the same build steps with the same inputs" is needed.
Blog content is assembled via various SGML entities includes into a prehtml file of "-//ISO-HTML User's Guide//DTD ISO-HTML Preparation//EN" doctype per ISO 15445:2000 recommendations[0]. This is all processed with osgmlnorm through a somewhat simple Makefile to generate the resulting HTML files.
Relaxations were gradually introduced into Cistercian life with regard to diet and simplicity of life. Also, they began accepting the traditional sources of income that monks in comparable orders used: like rents, tolls, and benefices. The agricultural operations were blessed by success. Wealth and splendour characterized the monasteries, so that by 1300, the standard of living in most abbeys was comparable, if not higher, than the standards middling nobles enjoyed.[59]
[59] Jaritz, Gerhard (1985). "The Standard of Living in German and Austrian Cistercian Monasteries of the Late Middle Ages". In Elder, E. Rozanne (ed.). Goad and Nail. Studies in medieval Cistercian history. Kalamazoo, Michigan: Cistercian Publications. p. 57. ISBN 978-0-87907-984-0. "A study [Watzl 1978] done for the Lower-Austrian abbey of Heiligenkreuz demonstrates that in the first half of the fifteenth century, no fewer than 201-207 days of the year saw extra food."
> But the set of programs that compute real numbers is a subset of all programs, and the set of all programs is countable. Therefore the set of computable numbers is countable.
A constructivist is also not going to buy into your argument that a subset of a countable set is countable. Heck, the constructivists are not even going to buy into an argument that a subset of a finite set is necessarily finite (they have a term for such subsets: 'subfinite').
Yes, I know that this constructivism feels so bizarre that it cannot possible be coherent; the whole notion of cardinality appears to become useless. But you get used to it after a while.
Heck, even in classical mathematics, trichotomy of cardinally requires (or rather /is/) the axiom of choice. So cardinality wasn't really super well behaved to begin with.
That said I believe your comments are off the mark in regards to the topic of the Weierstrass function. The Weierstrass function is completely well behaved from a constructive point of view[0]; it is uniformly continuous and everything. In particular we can (constructively) map (constructive) real numbers to (constructive) real numbers via this function.
I hear you. I got a 2022 Prius Prime and I was disappointed with the smaller trunk space compared with the 2010(ish) Prius I had before, but I still went with it. However, my understanding is that the newer models somehow have even smaller trunk space space. At least that space under the trunk floor is filled with batteries in my case.
While I'm happy enough with my purchase, I suspect I won't be getting a Prius in the future. If I want a PHEV, I might look at the Rav4 Prime, but I think I'm more likely to look for a full EV when the time comes.
I have a 2022 Prius Prime, and I am moderately sure with the car on and in park I can press the front window defrost button, and the ICE will turn on and start blowing hot air on the front window.
Also, while parked and plugged in at home, I can use the remote A/C button to start heating the cabin and front windshield while clearing off snow and clearing the driveway, and will be powered from my house. I'm not sure if this also works without being plugged in.