Monads in JavaScript
Monad is a design pattern used to describe computations as a series of steps. They manage side effects in pure functional languages but can also be used in other languages to control complexity.
Problems with Go Get
T-Minus 15.193792102158E+9 years until the universe closes!
Make a Lisp in Nim
I spent the last weekend working through the amazing guide for Make a Lisp , writing a Lisp interpreter in Nim. The final result just made it into the repository.
Rust traits for developer friendly libraries
Mildly interesting technology stories.
Compiling Julia for NVIDIA GPUs
For the few last months, I have been working on CUDA support for the Julia language . It is now possible to write kernels in Julia and without much hassle execute them on a NVIDIA GPU, but there are still many limitations.
Gradual typing for Clojure
Today’s programming landscape is dynamic and polyglot . Interlanguage interoperability is a mainstay — it’s almost unavoidable that a given piece of code will be used without the knowledge of the original author.
Sylph: the programming language I want
Creating a programming language is apparently all the rage these days, and it’s got me thinking about what I would really like to see in one. I’m starting to suspect the things I want are either impossible or mutually incompatible, so I’d better write them down and let smarter people tell me why I can’t have…
What will be the legacy of Go?
In October this year I had the privilege of speaking at the GothamGo conference in New York City. As I talk quite softly, and there were a few problems with the recording, I decided to write up my slide notes and present them here.
Java 7 changed the structure of String
Java 7 quietly changed the structure of String. Instead of an offset and a count, the String now only contained a char[]. This had some harmful effects for those expecting substring() would always share the underlying char[].
What does “asm.js optimizations” mean?
The Microsoft Chakra team has announced on the IE blog that asm.js optimizations are In Development . We at Mozilla are very excited for IE to join Firefox in providing predictable, top-tier performance on asm.js code and from my discussions with the Chakra team, I expect this will be the case.
Writing Friendlier Clojure
I love the Clojure language, but I don’t think there’s any use pretending that the combination of expressiveness, power, and repl-driven development can result in some staggeringly dense code. Everyone that writes Clojure is guilty of this at one time or another; you start with the core of your function, evaluate it…
LLVM OpenMP Support
OpenMP support in Clang compiler is completed! Every pragma and clause from 3.1 version of the standard is supported in full, including combined directives (like ‘#pragma omp parallel for’ and ‘#pragma omp parallel sections’).
F*dging up a Racket
Source code can be found at: https://github.com/dyoo/brainfudge . The latest version of this document lives in http://hashcollision.org/brainfudge .
Wrapper Types in Rust: Choosing Your Guarantees
This post is now a part of the official rust book In my previous post I talked a bit about why the RWlock pattern is important for accessing data, …
The Cost and Complexity of Cgo
Cgo is an important part of Go: It's your window to calling anything that anything that has C bindings. But while cgo works for us, it hasn’t come for free.
Concurrency Is Not Parallelism (2013)
Watch Rob Pike's talk, _Concurrency is not parallelism._
Don't Learn C the Wrong Way
Update : On Sep. 28, 2015, Zed Shaw wrote a rebuttal to this post. You can find the details here .
Project Panama: Interconnecting JVM and Native Code
We are improving and enriching the connections between the Java virtual machine and well-defined but “foreign” (non-Java) APIs, including many interfaces commonly used by C programmers.
0.4.1: Introducing Parse
One of the greatest feature of the Rebol language has always been its parsing engine, simply called Parse. It is an amazing piece of des...