Introducing ASP.NET vNext
There’s some really cool stuff going on on the ASP.NET and Web Tools team. The ...
8088 Domination Post-Mortem, Part 1
These next few posts are a technical write-up of how I created 8088 Domination, which is a program that displays fairly decent full-motion video on a 1981 IBM PC. Before reading further, it might b…
Docker Development Patterns
In the past I've written about my "home cloud" that used to be OpenVz containers, and how I've come to advocate rebuilding the "build server" for every build
PHP 7's new hashtable implementation
About three years ago I wrote an article analyzing the memory usage of arrays in PHP 5. As part of the work on the upcoming PHP 7, large parts of the Zend Engine have been rewritten with a focus on smaller data structures requiring fewer allocations. In this article I will provide an overview of the new hashtable…
A Lisper's first impression of Julia
I have recently looked at Julia , a new programming language developed at MIT that promises to be a dynamic programming language that is sui...
CSRF in Doorkeeper OAuth2 gem
I read a post about CSRF on DigitalOcean (in Russian) by Sergey Belove . My first reaction was, obviously, how come ? DigitalOcean is not k...
Articles Every Programmer Should Read
A blog about Java, Programming, Algorithms, Data Structure, SQL, Linux, Database, Interview questions, and my personal experience.
Dear clueless assholes: stop bashing bash and GNU
This is a defense of the most prolific and dedicated public servant that has graced the world in my lifetime. One man has added hundreds of billions, if not trillions of dollars of value to the global economy. This man has worked tirelessly for the benefit of everyone around him. It is impossible…
My Startup School Europe talk: The Technology
Note: This is the talk I gave at Startup School Europe, which was held last Saturday in London. You've heard a lot of great startup advi...
Dijkstra’s algorithm and the Fibonacci heap
A couple of Sundays ago, I wrote an implementation of Dijkstra’s algorithm in Clojure. The core algorithm came to twenty-five lines. I banged out the code as...
The Death of Cocoa
For many of us, the simplicity, elegance, and performance of Apple’s hardware and software working together are the reason why we build on their platforms. And yet, after just a few months of working with Swift, Cocoa has begun to lose its luster.
Evolutionary couplings between files reveal poor software design choices
Given a software code repository together with all commit history, can you spot potentially problematic parts of the software?This is the question I have bee...
No more JavaScript frameworks
Stop writing Javascript frameworks. Translations: Chinese Japanese Russian Here's the talk, based on this essay, that I gave at OSCON 2015. [Slides] The 100-line templating library presented as a Gist has been cleaned up, documented, and published as the Stamp library. JavaScript frameworks seem like death and taxes…
Code is not Literature
I have started code reading groups at the last two companies I’ve worked at, Etsy and Twitter, and some folks have asked for my advice about code reading and running code reading groups. Tl;dr: don’t start a code reading group. What you should start instead I’ll get to in a moment but first I need to explain how I…
You Don't Need JQuery
Free yourself from the chains of jQuery by embracing and understanding the modern Web API and discovering various directed libraries to help you fill in the gaps.
Dropping Loot
I got started hacking on my own roguelike after spending several years avidly playing Angband . Like most projects, I had a few itches I wanted to scratch and it kind of took on a life of its own. One thing that annoyed me about Angband was how monsters dropped loot when they died.