It was a pretty reasonable app, able to anonymize (a bit) and save data at the same time. Unfortunately when it came out of beta it turned into nagware, constantly prompting to turn it on, get more data etc. I uninstalled it at that point. Tainted it forever in my eyes. Google Wifi Assistant supposedly does something similar but it's not available in my country.
I still use Opera Mini though. It's still handy for breaking through stupid filtering proxies in places such as public wifi spots.
Neither. There is no obligation either morally or legally that Google, GoDaddy or anybody else should host objectionable, illegal or inciteful content if they don't wish to do so. Boo hoo for the nazis, they'll have to get a static IP and host their own server.
These people can host their own content on their own servers. There is no obligation on Google to host it, not morally or legally. There is no "slippery slope" here.
Spatial planning is an ongoing thing and it's clear in many cities, particularly in the US that they planned around the motor car, not people. They assumed everyone would drive and the consequence is everyone MUST drive or suffer terrible quality of life. It's not uncommon to drive 20 miles down a single road which has strip malls either side. No coherence or sense to it. Even with a car we see the problems extend in other directions - obesity, addiction to oil, pollution, poor air etc.
And its not even a case that cities didn't know they were going to grow. This was purely lack of forethought. And even after cities have grown it is not too late to fix things. Land can be rezoned, reclaimed land can be turned into amenities, footpaths & cycle lanes can be built, public transport can be provided, commercial and business developments can be clustered together. It requires coherent thinking and planning but it can be done. Uber isn't the answer.
Morroco, Libya, Algeria, Tunisia, Egypt. All are capable of being suppliers and even if there is a conflict in one, the others are still operating. As would be solar wind & wave farms operating elsewhere including throughout Europe. No one supplier would monopolize or put supply in jeopardy just because of strife. It would also give Europe a vested interest in ensuring these countries were stable, intervening to ensure it if necessary.
The point about jobs isn't just about one project but many. It's the kind of thinking Europe needs if it wants to stop migrants turning up because there are no jobs or prospects in their own country.
Assuming Tunisia was the only supplier. If it were one of many then they could be told to GTFO and would normally be striving to ensure their prices were competitive.
Aside from that, there is a dividend in providing jobs in northern Africa - standards of living and education are raised and less people want to migrate to Europe, or radicalize.
I really don't see why it would have any substantial impact on a long distance trip. You have to get out of the car to go to the toilet, eat, rest etc. and those stops can coincide with charging the vehicle.
Microsoft have the inexplicable practice of radically altering the look and experience of Windows while leaving some of the most fundamental tools broken or seriously deficient. Things like msconfig, notepad, paint, calc, etc.
Compare Conemu or other console replacements to the default and it's quite obvious it has more problems than a simple colour scheme. Just being able to horizontally resize the console would be nice, or allowing it to handle standard escape codes, or selection / copy behaviour or using a nice default font, or having multiple tabs open.
The compiler enforces the rules for the standard libraries. e.g. It won't let me share reference to an object between threads unless the object is protected with an atomic reference count or read/write lock. It won't let me send an object from one thread to another unless it is marked as safe to send. It won't let me copy an object unless it implements a Clone trait and so on. It
A weak pointer is a reference to something without affecting its lifetime. So if I had a bunch of nodes pointing to each other they could hold weak pointers and I would actually control their life time from a master list or something. That could be one way of doing it. An option - something or nothing might be used to hold a strongly reference counted, allocated Node, e.g. Option> - or nothing. I think the master list would be safer in an acyclic graph because nodes could self reference without causing issues.
As for why not other languages, probably because there isn't anything close to Rust for writing systems programming. If you're building a higher level application there are plenty of choices depending on your runtime performance requirements and tolerance for failures. e.g. graphical / enterprise apps might think of using Java,.NET, Ruby, Python, Go, Swift, C++, NodeJS depending on what they do. Generally even there C++ has been squeezed out because stability is seen as more important than performance. The likes of Go & Swift try to strike a middle ground, being compiled languages with GC and are gaining some traction.
At the systems level performance, memory and correctness does matter. Rust offers the same characteristics as C or C++ but stops many problems dead in their tracks. This is a compelling reason to use it, especially for people who don't like software to ship with bugs or exploits due to weaknesses in the language.
Compiled performance in Rust is largely equivalent to C or C++ as is memory usage. E.g. if you use a Vec in Rust or a std::vector in C++ they have similar memory allocation behaviour. Rust isn't hiding what it's doing - if you want a var on the stack, you declare it in scope just like a var in C. If you want to create it on the heap you use a Box which is basically a scoped pointer. The code that comes out the other side is functionally and performantly equivalent to code in C. It doesn't force you to do unnecessary copies, allocs or locks any more than the same code in C or C++, assuming that code was written safely.
An Option isn't recreating pointer semantics. It is explicitly stating that the value is nothing, or something. That something could be a primitive, a reference to an object, an actual object, an array of objects, a tuple etc. So a node in a tree may or may not have a parent. You'd only use Option if that's even a possibility for what you're holding otherwise you directly reference the value and it cannot be null. It's not like a C/C++ pointer where calling something without checking for null will blow up at runtime, or where the non-value might be a dangling pointer. For the code using Options to compile you have to explicitly unwrap the value in code to use it which demonstrates coding intent.
Real programs are running Rust. Firefox for one, but also many others. e.g. Dropbox uses Rust for its cloud storage servers.
And ownership isn't difficult but Rust will force you to define it. If you want to build trees, acyclic graphs or whatnot you can use an Option, or something like a Weak reference.
If you were absolutely desperate to mimic the way C did something (e.g. to interoperate with some 3rd party library), you could even use pointers and nulls from inside an block marked unsafe. e.g. the openssl bindings for Rust call out to C code but they wrap it all up in some nice RAII objects.
If I am writing mission critical software, or software which is handling untrusted data, or simply prefer happy customers instead of angry ones then I care less about how "wonderful" a language and more about the stability and reliability of what comes out the other side.
Rust is getting a deal of traction because it stops C or C++ bugs by design. For example the null pointer has been described as the billion dollar mistake. Rust doesn't use pointers in normal safe programming, and so at a stroke it eliminates an extremely common runtime error. Memory allocation is via lifetime tracking in the compiler, so memory leaks and dangling pointers are another problem gone. And things like threads, file io & sockets are RAII so they close when they come out of scope. Lots of things like this add up to less bugs.
Did your 1997 browser have multiple tabs open, each running megabytes of javascript, css and content from multiple domains, complex layouts and streaming video and audio? That's what a modern browser has to face.
Rust is not an interpreted language. It compiles to machine code. In fact it compiles to machine code using the same compiler as clang - LLVM. And if you're worried about people learning memory management then you would appreciate the Rust compiler because you won't be compiling anything until you do.
Performance wise, the code runs about the same as the equivalent in C.
Rust compiles to just about anything supported by LLVM, which is a lot of targets but includes Windows, BSD, Linux, iOS, Android + various others including bare boards, How much portable do you want it?
In my experience code is also very portable because the toolchain, package management and stdlib work the same across platforms. The stdlib comes with thread, socket, path, file & io functions that do more to hide OS differences than C or C++. And for that matter, the toolchain supports cross compilation out of the box - just use rustup and add the target you want to build for.
Rust uses LLVM as its backend, same as the Clang C/C++ compiler. It's not an abstraction of C, but it can link with code written in C relatively easily.
Bits of Firefox are being replaced with Rust code. And it is precisely because of hacking / exploits and performance that they're doing it. Writing code that withstands malicious data and input is incredibly difficult. And writing code that is safely concurrent is incredibly difficult.
Rust has a lot of language design elements that make code far safer. For example there is no null pointer or pointers at all for that matter in normal safe programming. You declare an object, either on the stack, or the heap (e.g. via a box) and the compiler tracks how long it should live for and ensures that only one thing owns it or modifies it at a time. If you share an object (e.g. between threads) then you MUST protect it to prevent data races.
I can't even fathom what you're talking about here. The Rust community isn't "rabid". I'd also love to know what these shortcomings are and in what context. Or why Rust's success is tied to Mozilla when there are over 10,000 published packages for it and numerous external projects developed with it. Even if Mozilla died tomorrow (it won't), it's not like Rust would up and die.
My own experience of the language is that it is very challenging to start, more so I suspect for people coming from C than perhaps a language like Java. No denying it. The compiler is very strict but the pay off is code that doesn't suffer the litany of runtime issues that happen in C or C++. Memory leaks, buffer over/underruns, dangling pointers, null pointer exceptions, data races. For systems programming or surfaces that should be hardened against attack that seems rather important don't you think?
Does that mean I hate C or C++? Not at all. I write code in C and C++ all the time. And Ruby, Javascript, Java and other languages. I suspect many people in this "cult" as you call it do too. Stop seeing languages as a threat but something to embrace. If they die and fizzle out so what? You've still learned something.
Well that's a really wonderful question. Please replace "vaccine" with "seat belt". Demand who is criminally liable when a seat belt kills a child. And by extension imply that since a seat belt killed a child in your hypothetical argument that nobody should wear a seat belt. Well done you've graduated Cretin 101 argumentation.
I still use Opera Mini though. It's still handy for breaking through stupid filtering proxies in places such as public wifi spots.
Neither. There is no obligation either morally or legally that Google, GoDaddy or anybody else should host objectionable, illegal or inciteful content if they don't wish to do so. Boo hoo for the nazis, they'll have to get a static IP and host their own server.
These people can host their own content on their own servers. There is no obligation on Google to host it, not morally or legally. There is no "slippery slope" here.
And its not even a case that cities didn't know they were going to grow. This was purely lack of forethought. And even after cities have grown it is not too late to fix things. Land can be rezoned, reclaimed land can be turned into amenities, footpaths & cycle lanes can be built, public transport can be provided, commercial and business developments can be clustered together. It requires coherent thinking and planning but it can be done. Uber isn't the answer.
A decent public transport system and a city that is spatially planned around the needs of people who live there.
The point about jobs isn't just about one project but many. It's the kind of thinking Europe needs if it wants to stop migrants turning up because there are no jobs or prospects in their own country.
Just like Disney Keychest and UltraViolet.
Aside from that, there is a dividend in providing jobs in northern Africa - standards of living and education are raised and less people want to migrate to Europe, or radicalize.
I really don't see why it would have any substantial impact on a long distance trip. You have to get out of the car to go to the toilet, eat, rest etc. and those stops can coincide with charging the vehicle.
Nothing in particular. Tesla just generates the same kind of hype and aura as Apple.
Compare Conemu or other console replacements to the default and it's quite obvious it has more problems than a simple colour scheme. Just being able to horizontally resize the console would be nice, or allowing it to handle standard escape codes, or selection / copy behaviour or using a nice default font, or having multiple tabs open.
Thanks for your input anonymous idiot.
A weak pointer is a reference to something without affecting its lifetime. So if I had a bunch of nodes pointing to each other they could hold weak pointers and I would actually control their life time from a master list or something. That could be one way of doing it. An option - something or nothing might be used to hold a strongly reference counted, allocated Node, e.g. Option> - or nothing. I think the master list would be safer in an acyclic graph because nodes could self reference without causing issues.
As for why not other languages, probably because there isn't anything close to Rust for writing systems programming. If you're building a higher level application there are plenty of choices depending on your runtime performance requirements and tolerance for failures. e.g. graphical / enterprise apps might think of using Java, .NET, Ruby, Python, Go, Swift, C++, NodeJS depending on what they do. Generally even there C++ has been squeezed out because stability is seen as more important than performance. The likes of Go & Swift try to strike a middle ground, being compiled languages with GC and are gaining some traction.
At the systems level performance, memory and correctness does matter. Rust offers the same characteristics as C or C++ but stops many problems dead in their tracks. This is a compelling reason to use it, especially for people who don't like software to ship with bugs or exploits due to weaknesses in the language.
An Option isn't recreating pointer semantics. It is explicitly stating that the value is nothing, or something. That something could be a primitive, a reference to an object, an actual object, an array of objects, a tuple etc. So a node in a tree may or may not have a parent. You'd only use Option if that's even a possibility for what you're holding otherwise you directly reference the value and it cannot be null. It's not like a C/C++ pointer where calling something without checking for null will blow up at runtime, or where the non-value might be a dangling pointer. For the code using Options to compile you have to explicitly unwrap the value in code to use it which demonstrates coding intent.
And ownership isn't difficult but Rust will force you to define it. If you want to build trees, acyclic graphs or whatnot you can use an Option, or something like a Weak reference.
If you were absolutely desperate to mimic the way C did something (e.g. to interoperate with some 3rd party library), you could even use pointers and nulls from inside an block marked unsafe. e.g. the openssl bindings for Rust call out to C code but they wrap it all up in some nice RAII objects.
Rust is getting a deal of traction because it stops C or C++ bugs by design. For example the null pointer has been described as the billion dollar mistake. Rust doesn't use pointers in normal safe programming, and so at a stroke it eliminates an extremely common runtime error. Memory allocation is via lifetime tracking in the compiler, so memory leaks and dangling pointers are another problem gone. And things like threads, file io & sockets are RAII so they close when they come out of scope. Lots of things like this add up to less bugs.
Did your 1997 browser have multiple tabs open, each running megabytes of javascript, css and content from multiple domains, complex layouts and streaming video and audio? That's what a modern browser has to face.
Performance wise, the code runs about the same as the equivalent in C.
Yeah because C is a MANLY language.
In my experience code is also very portable because the toolchain, package management and stdlib work the same across platforms. The stdlib comes with thread, socket, path, file & io functions that do more to hide OS differences than C or C++. And for that matter, the toolchain supports cross compilation out of the box - just use rustup and add the target you want to build for.
Rust uses LLVM as its backend, same as the Clang C/C++ compiler. It's not an abstraction of C, but it can link with code written in C relatively easily.
Yes C is well understood, as are the multitude of problems that come from programming in it.
Rust has a lot of language design elements that make code far safer. For example there is no null pointer or pointers at all for that matter in normal safe programming. You declare an object, either on the stack, or the heap (e.g. via a box) and the compiler tracks how long it should live for and ensures that only one thing owns it or modifies it at a time. If you share an object (e.g. between threads) then you MUST protect it to prevent data races.
My own experience of the language is that it is very challenging to start, more so I suspect for people coming from C than perhaps a language like Java. No denying it. The compiler is very strict but the pay off is code that doesn't suffer the litany of runtime issues that happen in C or C++. Memory leaks, buffer over/underruns, dangling pointers, null pointer exceptions, data races. For systems programming or surfaces that should be hardened against attack that seems rather important don't you think?
Does that mean I hate C or C++? Not at all. I write code in C and C++ all the time. And Ruby, Javascript, Java and other languages. I suspect many people in this "cult" as you call it do too. Stop seeing languages as a threat but something to embrace. If they die and fizzle out so what? You've still learned something.
Well that's a really wonderful question. Please replace "vaccine" with "seat belt". Demand who is criminally liable when a seat belt kills a child. And by extension imply that since a seat belt killed a child in your hypothetical argument that nobody should wear a seat belt. Well done you've graduated Cretin 101 argumentation.