giovannibajo1
|
6 years ago
|
on: Qt Offering Changes 2020
My company has been a Qt partner for 10 years now. It’s embarrassing how many companies we met that were not complaining with the open source license — most of them did comply after they talked to us though. Our market (Italy) is specially allergic to runtime licenses (required for embedded products, which is 90% of what companies use Qt for, at least here) so they prefer to bend over for compliance rather than spending on a runtime license.
giovannibajo1
|
6 years ago
|
on: Microsoft to force Chrome default search to Bing via Office365 ProPlus installer
This seems a method for enterprise administrators that centrally manage Chrome installation. That page doesn't seem to show a way for third-party software providers to bundle extensions into installers.
giovannibajo1
|
6 years ago
|
on: Microsoft to force Chrome default search to Bing via Office365 ProPlus installer
I haven’t followed closely, but Chrome took many steps over the years to make sure software installers couldn’t sneakily install extensions. How is this possible?
giovannibajo1
|
6 years ago
|
on: CGA in 1024 Colors – A New Mode: The Illustrated Guide (2015)
Impressive achievement!
giovannibajo1
|
6 years ago
|
on: Branch prediction minutiae in LZ decoders
Another big advantage is that the wire format is a byte stream and not a bit stream, so parsing is so much faster.
giovannibajo1
|
6 years ago
|
on: Translating Quake 3 into Rust
Out of curiosity, how do compilation times look, for a fresh build and for the edit-compile cycle?
giovannibajo1
|
6 years ago
|
on: The dark side of GraphQL: performance
The last comment specifically shows that there is one big part of degradation that depends on the usage of promises. This is either a platform or library problem, but surely not a GraphQL problem at all.
giovannibajo1
|
6 years ago
|
on: Why are my Go executable files so large?
Because one of the mantra of Go is not telling users to have a "debug" build and a "release" build. The development build is the one that goes into production, with no difference in optimizations, symbols and whatnot. This has pros and cons, like all tradeoffs.
giovannibajo1
|
6 years ago
|
on: The Go runtime scheduler's way of dealing with system calls
I think it's mandated by POSIX standard; but even if I'm wrong, there's still the problem that libc doesn't allow to do that atomically, for instance. In general, it's an old interface that doesn't fully expose the full power of all modern syscalls.
giovannibajo1
|
6 years ago
|
on: The Go runtime scheduler's way of dealing with system calls
You can't do that atomically with libc. There's a short window in which the file descriptor will potentially be inherited, if another thread forks.
giovannibajo1
|
6 years ago
|
on: The Go runtime scheduler's way of dealing with system calls
There is a difference though: libSystem on Darwin is a very thin wrapper over the kernel syscalls; on the contrary, libc is a library that was
designed for C, then standardized in POSIX, and has several layer of abstraction over kernel syscalls including many bad defaults that are universally recognized as wrong today (eg: libc’s created file descriptors will all inherit by default).
giovannibajo1
|
6 years ago
|
on: Twitter for Mac is incapable of accepting certain letters in the password field
The application is brand new, and is built on a brand new macOS API. Nobody broke anything. The point is whether the bug is due to Twitter’s usage of the APIs, or the APIs themselves.
giovannibajo1
|
6 years ago
|
on: SQLite is easy to compile
Another good example is the Go compiler. Assuming you have any version of Go in your PATH, it's:
git clone https://github.com/golang/go
cd go/src
./make.bash # or make.bat for Windows
And that's it. You can then use "bin/go" to compile your projects.
giovannibajo1
|
6 years ago
|
on: Linux kernel drivers in Rust might become an option in the future
But the point is that there is so much provably safe code that the borrow checker doesn’t understand. Let’s not get confused: Rust borrow checker forces you to write in a very narrow space that it can understand, which is a very small subset of safe programs. Sometimes it’s worth it to be so constrained, others simply don’t.
giovannibajo1
|
6 years ago
|
on: Deconstructing Google’s excuses on tracking protection
Depends on your point of view. Chrome is going to use the same architecture that Safari has had for a few years (on iOS and Mac): data-driven content blocking, where rules are declared by the extensions, and then read and implemented by the browser core with no JavaScript involved on each request.
Javascript-based content blocking is technically slower because you need to invoke V8 on all requests, and then it’s up to the extension to make sure that the JavaScript code is fast enough. It surely is more flexible (as you can do whatever you want in that javascript code) but it’s hard to beat a simpler, data-driven content blocking engine written in native code and integrated in the core.
Whether this difference in resources does have a concrete impact or not, remains to be seen. The fact that Apple Safari did it first makes me believe that there is some truth in the technical merit argument; surely Apple didn’t want to make sure their content blockers were ineffective, but was actually using the same approach as always: providing a possibly “weaker” but far more efficient implementation (compared to “de facto standards” on other platforms) to protect iOS resources usage.
giovannibajo1
|
6 years ago
|
on: Await in Rust
There have been comments in this HN thread that this implementation of continuations based on futures is supposedly more performant than a stack-pointer switching one (like green threads). Can you elaborate on how? It looks to me that it should instead be slower (and even much slower if the stack depth is deep).
giovannibajo1
|
6 years ago
|
on: Await in Rust
Can somebody explain the performance characteristics? For instance, let’s say I have a deep stack of 15 async calls. If the deepest call yields, what code is executed? Does it “jump back” to the top ala “longjmp” or it needs to return back up the stack frame by frame? And what happens when it resumes execution? IOW is the overhead linear with the stack depth or not?
giovannibajo1
|
6 years ago
|
on: A Map That Made Los Angeles Make Sense
Well, in that case, Google Maps would wake up and suggest an alternative route.
The point I'm trying to make is that Google Maps (actually, all navigators) is biased towards shutting the brain down and just focusing on next turn. It could do much better in describing the overall route, and even letting you drive by yourselves parts of the route you already know -- it can still tell you to do alternates routes if there's traffic though.
Obviously the workaround is to skim the overall route and decide by yourself what to do, whether to follow directions or not on certain parts. This is what I always do -- just because I want to make sure that I still know my way without a navigator and it's also a good way to learn new parts of the city (or new cities) that you don't know. At the same time, Google Maps isn't really helping on this.
giovannibajo1
|
6 years ago
|
on: A Map That Made Los Angeles Make Sense
For instance: “First, we need to take the I-10W”. “Ok I know this part”. <stops giving directions>
giovannibajo1
|
6 years ago
|
on: Facebook Hit by Apple’s Crackdown on Messaging Feature
Typing in two languages works since iOS 11 (IIRC). I’m routinely typing in either English or Italian without ever manually switching language