1,199 karma · joined December 1, 2014
My generation did not vote for the constitution, and many of us dislike it. I agree that it is a conservative constitution made out of fear, with a flawed electoral system, a king, etc. The same fear that the party in power, lineage of the dictators, uses to address our aging population.
"Mejor malo conocido que bueno por conocer" (Better a known bad than the good that is jet to be known) is the worst Spanish saying.
I am Andalusian and pro-referendum.
We do have a formal one. In practice that is not so clear, as the many corruption cases show, with political use of the police included.
Also they not only have declared the referendum illegal, but are persecuting everyone promoting the referendum, so much for freedom of speech. But anyways, now you get into a criminal trial for making jokes about terrorist actions from 40 years ago against Franco ministers.
I am Andalusian and I'd be happy to keep Catalonian withing the Spanish state, under a federalist republic where we can move forward together. But in the current state of affairs I very much understand the independentist movement. Having a referendum is the only solution long-term and the Spanish goverment just uses legalist excuses to stop it. What they don't say is that precisely they can change the law to allow it!
But if they did so there would be no surplus value left for shareholders. Paying for labor less than its contribution to the value of the product is the basis of capitalism.
I think you should read Marx's Capital. It is devoted to answering that question: the generation of surplus value and its consequences in society. As you suggest, such system is not stable, explaining capitalism's tendency to crisis.
You can see that if you "fix" the program by checking Do before calling it, it still inlines the call in the True branch:
On another note, see how "fewer times" and "less time" means different things (might help clarify the distinction to some.)
(Non native speaker here though.)
I sometimes fantasize about rewriting Ewig in Rust, as a learning project (have been reading about it but didn't dare to write code in it yet). But I'd like to use RRB-Vector there too. Sadly, this data-structure is not really trivial to implement... (the concat algorithm in particular). Maybe one day I'll find the time :-)
Excuse me the shameless plug, I'd like to show mine too: https://github.com/arximboldi/ewig
It is written in C++, but using a style that is unlike what most C++ developers use: it is composed mostly of pure functions. The architecture is very much like that of Elm programs, and there is even a `store` class like in Redux.
Like the project from OP, it is about 2K lines of code. But it also supports asynchronous loading/saving, copy-paste (you can copy-paste a 1GB file instantly), very robust undo, dirty markers, UTF-8 (not perfect), etc.
The magic? Immutable vectors based on RRB-Trees. This is like the vectors in Clojure/Scala, but also supports log(n) slicing, concatenations, insertions---these operations are fundamental for a text editor, and I'd say, to most interactive software supporting big data models [1].
The code has been written in a style as simple as I could. I'd like to think that even non-C++ developers might be able to understand it. It might be specially interesting for web developers invested in Clojure, Elm or Redux and the single-atom architecture.
Probably one day I should go ahead and just write a blog post about it or a tutorial or something. But so far I don't have a blog I am not really a social media person. The code is still moving also...
PS. And thanks a lot to @kostspielig her help writing and reviewieng the code! <3
[1] The data-structure can be found here: https://github.com/arximboldi/immer
I just opened it a couple of days ago, still have to polish the story and probably be more active on social media (I don't have Twitter, etc... I really despise Twitter but I kind of feel I am missing huge opportunities to get visibility...)
If you allow me another shameless plug, I also compiled a good bunch of references in the "Related Work" section of my own paper on immutable vectors: https://public.sinusoid.es/misc/immer/immer-icfp17.pdf
Actually one of the things I found during my work on transducers is that actually they seem to me more implementable in C++ than in Haskell. For example, you can implement state-less transducers with almost zero overhead, something that in Clojure is definitely not true (so the standard transducers do hide state inside the closure of the reducing functions). It is also easier to do n-ary transducers for zipping and unzipping and everything, as you intuit, is type checked.
Still, I agree that transducers are most useful when you have libraries that make sense of them. For example, you could implement a lot of "Rx" using transducers. Ideally I see a user never writing a transducer, and occasionally passing one to some library that provides "higher order" reactive collections (channels, observables, etc.) that can be transformed with transducers. For example, my motivation to implement them in C++ was to build "observable/reactive lenses" (something like "cursors" in Om) [1] where you could use transducers to specify how you "zoom" into the virtual sequence of state values...
Anyways, they are an interesting coding tool, but they don't really influence the architecture of the application.
[1] atria::funken https://github.com/Ableton/atria
Clojure default of immutable hash maps and vectors was really bold. They had to innovate by giving a twist to Bagwell's great research on data-structures, and they managed to build what in my opinion are the first set of general data-structures suitable of representing traditional hierarchical object-tree data-models immutably, at the scale of large interactive software.
Without these, the single-atom architecture that now is popular as ever with Redux, Elm, etc. would not be possible. The flourishing of functional programming for interactive software that followed shows to me that the biggest impediment before was not the lack of functional ways of expressing interactions (the Haskell people have devoted a lot of notable effort in the FRP camp). Instead, just having efficient data-structures to write persistent document models, escaping the rigidity of lists and rb-trees, allows you to write big interactive sofware in a functional manner even with the most dumb abstractions (which is a good thing, KISS!) and even stupid language (JavaScript!).
This has inspired me to work on a generic implementation in C++, which also has experimental Python and Guile bindings: https://sinusoid.es/immer/ https://github.com/arximboldi/immer/
In the past I also did some other work on bringing Clojure Transducers to C++ (https://www.youtube.com/watch?v=vohGJjGxtJQ&t=1614s) but I know consider it a much less important effort---without the data-structures the other parts of Clojure feel almost like just sugar.
EDIT1 -- Sorry for the shameless plug ;)
EDIT2 -- Grammar
I am from Spain where you wold think we have a more "european" time management sense. Yet it is common to say: "ahora nos vemos" or "hasta ahora" (see you now/soon) as you are leaving the room, when you know you are gonna meet the others later in the day. It if you ask someone when are they going to do this thing you asked them to do and and they reply: "ahora"... it actually means "when I finish what I am doing now". It is true that in a business setting and some context you might need to be more specific, but that still does not change the meaning of ahora. It is also a ok reply "ahora, cuando acabe con esto", which means--"soon, as I am done with this", or even more specific: "when is the concert going to start? Ahora en 15 minutos."
"Ahora" simply does not mean "now" as in the current instant, but in the "present", this is, the time of the events that are connected to the current activities, the things that you can "wait for", the things that will happen before they are out of your head... it is like "soon" or "soon today", but with a hint of will, of promise, of certainty or fate.
I don't remember ever seeing an ad showing a new invention. That is actually not the purpose of advertising. You can't understand a new concept in the time lapse of an ad. In fact, you'll see that new inventions normally become popular via other means (targeting niches firsts via specialized magazines, conferences, etc.) and only use advertising when they already have an established business and market.
The fact is, most advertising is just about manipulating peoples feelings. The first kind is about brand aggrandizing, trying to change how people feel about a specific brand--this brand is "quality", "fresh", "young", "elite", whatever. The second one is about stimulating demand, normally trying to make people need things they did not need before: "you are fat! buy our cream!", "your life is boring! buy our holiday packages!", "you look ugly, buy our clothes!", "you could be healthier eating our pro-active meta-splendidous yogurt!", etc. In either case, the goal is to make you feel bad, incomplete, until you spend your money on more shit.
Personally, I would love to live in a world with almost zero advertising. I am from Spain and one of the things I love about Berlin, where I live, is the low amount of advertising in the streets compared to anywhere I lived before. That is changing slowly though. But I have seen pictures of DDR Berlin and there is literally no ads. Of course, sadly that package came with the STASI and other horrible things. That aside, I would love to be able to walk the streets without having to look at ads telling me to buy shit over pictures impossible women in lingerie, rich men in expensive cars, smiling youngsters partying together, families on vacation in the Bahamas, etc. I know people that consider such world dull, gray, etc. But for me, it would bring some kind of new zen to urban life.
Ironically now, thanks to the Internet, advertisers themselves (and security agencies) are tracking our lifes in ways the STASI could not even dream of. The grass is always greener on the other side, but if you try hard enough you can always get the worst of both worlds.
127.0.0.1 news.ycombinator.com
127.0.0.1 www.facebook.com def foo(*, x=None, y="")
(Edit) The specific slide: http://www.asmeurer.com/python3-presentation/slides.html#16I imagine less bullshit businesses selling air castles built on top of an exploitative operation. I imagine better democratic processes inside companies. I imagine using collective power to protect underrepresented groups instead of fighting against each other. A net benefit to society.
I think most of the loading time is in the images, gifs and web fonts used (the svg a bit, but not so much). These days I don't see much of value in optimizing the slides for after-the-fact consumption (video is much better for that), and I just put them online so people that have actually seen the talk can go back to some of the code, links and references. And in this way I justify my lazyness for not optimizing the load time a little bit :)