Are these legitimately redistributable, or just someone who checked in their licensed ebooks into github and hasn’t been DMCA’d yet?
I am afraid I don’t know, and I confess I didn’t think of it such that I assumed they were legitimate.
I am really excited about some of these changes but I also have mixed feelings. On one hand, it’s awesome that the type system is now sound, but I will miss some of the nuanced approaches enabled by the original optional/gradual typing approach. Gilad Bracha’s work is very intriguing.
This article is full of great advice. Thank you for sharing!
I get to be happy about an article about logging, for a change \o/
I first read this article by the pool in Jamaica and then proceeded to reread it several times. Eventually it made it’s way to a semi-permanent tab for a period of months because I love it so much.
Every time I read over coverage like this I wonder how Flutter will fit in. Are they targeting Dart on Flutter for cross-platform app development? Could Fuschia become the new core for ChromeOS, Android, and WearOS?
I believe (my opinion, based on observation) that Google wants to compete better in native app experiences to drive more business adoption, and ultimately, their play for Fuschia is as a direct competitor to Windows and macOS. ChromeOS requires being managed by Google’s domain facilities. Fuschia might support arbitrary management through ActiveDirectory, etc, making it a more appealling choice for larger corporations.
The scary part in this plan is that the “ad team won.” That makes me nervous.
Flutter/dart is the equivalent of Cocoa/Swift, and .NET/C#, but it happens to work on those other platforms too. So, “Hey native devlopers! Your porting efforts are lesser if you switch to flutter! And then they’ll work on Fuschia, too! We’re attracting tons of new interest. You can be one of the first native apps that works on Fuschia, and maybe be a launch partner.”
I arrived at a similar conclusion a few years ago when I encountered differences between what the language specification and the compiler considered to be correct type-casting. Fortunately, generics in Java are essentially syntactic hints to the compiler and do not end up in the compiled bytecode (this both enables and prohibits some useful but possibly unintended features involving multiple inheritance over interfaces).
Are you referring to type erasure? If so, could you expound on your thoughts a bit? I’ve always heard of type erasure in a negative context although recently have read a bit about it as if it’s a feature.
Yes, type erasure. I suppose it depends on your perspective whether you view it as a feature or a hindrance. Generics were added to Java in version 5.0 (~2003 IIRC), and was an add-on to the compiler, not the runtime. This preserved forward-compatibility with non-Generic code using the same API (e.g. Java Collections). Furthermore, even with the oddities and limitations of the compiler with respect to Generics, it is usually possible to work around those issues via type erasure or (in the special case I linked above) multiple-casts.
I use StreamData (soon to become ExUnit.Properties in a future release) for testing Elixir/OTP applications. I find that it helps isolate bugs which would otherwise be subtle as it’s so easy to forget an edge case.
Don’t try to help too much
I think that this might be the best advice in here. How do you go about finding the right balance between bringing a tool closer to the problem, and bringing it so close to your problem that it declines in usefulness?
Julia Evans does amazing simple illustrations of various technical topics. I advise you check out her graphical work.
Julia Evans exists is some charmed intersection of neophyte (“there isn’t just one protocol used for VPNs”; “the IETF is the group that makes RFCs”) and expert (”I’m working on writing a kernel in Rust”).
I say ‘charmed’ because her writing style causes me to enjoy and remember her lessons.
Clicking the site domain in the submission will also show other submissions of her site’s content. There’s been a lot of them on Lobsters.
Folks, I recall reading somewhere that OCaml has something like a GIL and threaded/paralleled apps are a bit of an issue. Is this still true? Thanks!
Yes there is a GIL and parallelism is currently doable with c bindigs as in python, but there is ongoing work for multicore (and algebraic effects) support: https://discuss.ocaml.org/t/ocaml-multicore-report-on-a-june-2018-development-meeting-in-paris/2202
The work is still ongoing, and went through some iterations in the past few years, but the first bits should start landing by the end of the year
That’s really great to hear, that things will be moving along in such short order. Do you have any good introductions to the topic of algebraic effects, beyond what I could get by searching on my own?
I would recommend http://okmij.org/ftp/Haskell/extensible/index.html
And for more specifically ocaml:
Although Ocaml ignored multicore a long time, the Standard ML community keeps doing interesting projects in that space. MultiMLton is one example.
Although GIL seems like a huge limitation, I’ve been actually quite impressed by how infime it was for most tasks (except if you do require huge throughput).
I follow Hillel on Twitter and he posts a ton of great content about formal verification, correctness, and programming in general. This particular post is really terrific.
This reminds me of Coconut, which actually compiles to Python.