Moving from Native Apps to Progressive Web Apps
From now on, I won’t be building any more native apps. All my apps going forward will be progressive web apps. Progressive web apps are web…
The Sad State of the Backbone Ecosystem
For the past 2 years, ~90% of my coding time has been spent working on a large scale Backbone.js app. In February 2014, the Backbone community was in a fairly good place. The core library had reached 1.0 the previous year and had a strong team around it. Marionette had emerged as a de-facto standard for web…
Zeroing Memory is Hard: VC++ 2015 arrays
Quick, what’s the difference between these two C/C++ definitions of initialized local variables? char buffer[32] = { 0 };char buffer[32] = {}; One difference is that the first is legal in C a…
A polyglot's guide to multiple dispatch
This is the first article in a series dedicated to multiple dispatch - an advanced abstraction technique available to programmers out-of-the-box in some languages, and implementable in others. This first post in the series presents the technique and explains the problem it intends to solve. It uses C++ as the…
Making 1M requests with Python-aiohttp
In this post I’d like to test limits of python aiohttp and check its performance in terms of requests per minute. Everyone knows that asynchronous code perf...
APL Tutorial
Interested in learning about APL? Have you heard of this exciting language with strange characters and incredible brevity? Look no further, here you will find an introduction to the language, and even understanding from a historical perspective.
John Carmack on Idea Generation
Last year at an internal talk at Facebook I was fortunate to see [John Carmack](https://en.wikipedia.org/wiki/John_Carmack) speak about his idea generation system. At first I was disappointed because...
Specifying JSON
I find myself tasked with polishing and publishing a little custom JSON-encoded language. It’s harder than it ought to be.
Why I Don't Use React Router
Tech blog of topics that interest me - frontend development, functional programming, user experience, building cool things
Death of a Language Dilettante
It's not about technology for its own sake. It's about being able to implement your ideas.
Why Rust's ownership/borrowing is hard
Working with pure functions is simple: you pass arguments, you get a result — no side effects happen. If, on the other hand, a function does have side effects, like mutating its arguments or global objects, it's harder to reason about. But we've got used to those too: if you see something like player.set_speed(5) you…
Don’t Use Markdown for Documentation
“Markdown” is the most commonly used lightweight markup language on the internet. It is great for a subset of tasks, mainly blog posts and commenting. However, lately it has been adopted by the tec...
Requiem for GitHub
Kind people already sent donations that will make my childrens' lives easier, when I'm not there any more. Thank you enormously! :-)
Debugging using system calls in Mac OS X
Today I want to talk about an issue I was having with UDP sockets in Go, and how I learned more about my program by making use of two tools that ship with Mac OS X called dtruss, and DTrace.
Reverse engineering Android from binary to source
Dmitry.GR: Full sources for Android on zWatch