Thursday, August 29, 2013

The Web Developer's SEO Cheat Sheet 2.0 (

It is my honor and privilege today to introduce the brand-new version of The Web Developer's SEO Cheat Sheet. This free and downloadable document covers all of the important SEO code and best practices that are needed by online marketers and developers.

Read more

Periodic Table of the HTML5 Elements (

The table shows the 107 elements currently in the HTML5 working draft

Wednesday, August 28, 2013

SQLite version 3.8.0 released (

SQLite version 3.8.0 might easily have been called "3.7.18" instead. However, this release features the cutover of the next generation query planner or NGQP, and there is a small chance of breaking legacy programs that rely on undefined behavior in previous SQLite releases, and so the minor version number was incremented for that reason. But the risks are low and there is a query planner checklist is available to application developers to aid in avoiding problems.

Read more

Go After 2 Years in Production (

After running Go for two years in production at, I wanted to share our experience/feelings about it. We were one of the first companies to use Go (golang) in production and we didn't know what to expect in the long run, but so far, so great.

I talked a little about about this in a previous post about switching to Go from Ruby, but this will go into specific things that we love about the language, the things we learned along the way. In no specific order, here they are:

  • Performance
  • Memory
  • Concurrency
  • Reliability
  • Deployment
  • Talent

Read more

Tuesday, August 27, 2013

Scaling Reddit from 1 Million to 1 Billion–Pitfalls and Lessons (

Jeremy Edberg is currently the Reliability Architect for Netflix, the largest video streaming service in the world. Before that he ran Reddit, an online community for sharing and discussing interesting things on the internet that does more than two billion page views a month.

Jeremy Edberg shares some of the lessons learned scaling Reddit, advising on pitfalls to avoid.

Read more here and here...

Friday, August 23, 2013

ECMAScript 6 modules: the future is now (

This blog post first explains how modules work in ECMAScript 6, the next version of JavaScript. It then describes tools that allow you to already use them now.

Read more

WebKit Has Implemented srcset, And It’s A Good Thing (

WebKit has made some serious news by finally implementing the srcset attribute. As Chair of the W3C’s Responsive Images Community Group, I’ve been alternately hoping for and dreading this moment for some time now. It turns out to be good news for all involved parties—the users browsing the Web, most of all.

As with all matters pertaining to “responsive images”: it’s complicated, and it can be hard keeping up with the signal in all the noise. Here’s what you need to know.


LESS – The Dynamic Stylesheet (

You might have heard until now of LESS and you might know it has something to do with CSS and styling websites, but I am quite sure that not many people really know what LESS actually is and why is it so special that it got its own name.

Unlike CSS, LESS is an open-source dynamic stylesheet language, with its first version being written in Ruby, but replaced by JavaScript later on. LESS is more complex than CSS is, providing variables, nesting, mixins (reusable classes), operators and functions and allows real-time compilation via LESS.js by the browser in use. LESS can run on both client- and server-side and can even be compiled into normal, plain CSS.

Using LESS would allow writing CSS in a programming way instead of static, as CSS is by default.


Thursday, August 22, 2013

Firebug 1.12 New Features (

Firebug team released fresh new Firebug 1.12 and here is a list of some new features we have implemented in this version.

Read more

LEAKED: German Government Warns Key Entities Not To Use Windows 8 – Links The NSA (

According to leaked internal documents from the German Federal Office for Information Security (BSI) that Die Zeit obtained, IT experts figured out that Windows 8, the touch-screen enabled, super-duper, but sales-challenged Microsoft operating system is outright dangerous for data security. It allows Microsoft to control the computer remotely through a built-in backdoor. Keys to that backdoor are likely accessible to the NSA – and in an unintended ironic twist, perhaps even to the Chinese.

The backdoor is called “Trusted Computing,” developed and promoted by the Trusted Computing Group, founded a decade ago by the all-American tech companies AMD, Cisco, Hewlett-Packard, IBM, Intel, Microsoft, and Wave Systems. Its core element is a chip, the Trusted Platform Module (TPM), and an operating system designed for it, such as Windows 8. Trusted Computing Group has developed the specifications of how the chip and operating systems work together.


Wednesday, August 21, 2013

PuTTY 0.63 released, fixing SECURITY HOLES (

PuTTY 0.63, released today, fixes four security holes in 0.62 and before:

Other than that, there are mostly bug fixes from 0.62 and a few small features.

download here...

Where the heck do I host my .NET app? (

In this short series of posts, I’m looking at the various options for hosting different types of applications. I first looked at Node.js and its diverse ecosystem of providers, and now I’m looking at where to host your .NET application. Regardless of whether you think .NET is passé or not, the reality is that there are millions upon millions of .NET developers and it’s one of the standard platforms at enterprises worldwide. Obviously Microsoft’s own cloud will be an attractive place to run .NET web applications, but there may be more options than you think.


Tuesday, August 20, 2013

Crosswords don’t make you clever (

Doing crosswords isn’t good for your brain? It is good for improving your crossword skills but does it lead on to other kinds of advanced cognitive function? No. There is no translation of the crossword skills to other skill categories. That shouldn’t discourage anyone, they are a lot of fun, but a vigorous hike will do more for your cognitive function.


Node.js incorrectly parses HTTP methods (

First, however, let's modify our server script just a bit so we can see what the Node.js server's view of the request method received is:
  http.createServer(function(request, response) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Hello World " + request.method);
Start it up:
bash-3.2$ node server.js
Now do:
bash-3.2$ telnet 8888
Connected to localhost.
Escape character is '^]'.
GEM / HTTP/1.1

HTTP/1.1 200 OK
Content-Type: text/plain
Date: Mon, 19 Aug 2013 20:48:04 GMT
Connection: keep-alive
Transfer-Encoding: chunked

Hello World GET

Read more

Monday, August 19, 2013

In Defense of JavaScript Cryptography (

Google "javascript cryptography" and you'll quickly find a fair number of people dismissing JS Crypto as a fools errand. My favorite is the Matasanto Security article entitled "JavaScript Cryptography Considered Harmful." The tone of the article seems a little alarmist to me. But... it also happens to bring up a few really great points. Its critique of the current state of web app crypto is mostly spot-on. However, the state of the art is evolving quickly and may soon make the Matasano Security article mostly irrelevant...


JavaScript Strategies at Microsoft with Scott Hanselman (

... I’ve been doing a lot of talks and thinking about where JavaScript fits into the world going forward. Are we in the middle of some epic shift where JavaScript’s going to do all the work and the server is just going to return JSON? Or is there a reason to render html on the server? ...


Saturday, August 17, 2013

Node.js error handling (

While building out Bugsnag I’ve had a bunch of experience with the state of error handling and thought I’d pass on what I’ve found. I’m going to discuss the various ways I’ve seen error handling done, and talk a little about what the future holds.


Friday, August 16, 2013

Go as an alternative to Node.js for Very Fast Servers (

Node.js has gained acceptance in mainstream software development at an amazing pace. There are a lot of good reasons for this: everyone loves software that is Very Fast, npm is truly an excellent package management tool/ecosystem, and its release coincided with the web development community as a whole awakening to the fact that JavaScript is a Real Programming Language. However, I think there are assumptions lurking in the subtext of the conversation around Node that are false, yet have contributed greatly to the excitement around it. I’ll whine about this briefly below...


Toward Modern Web Apps with ECMAScript 6 (

ECMAScript, the official name for the language we all know as JavaScript, has enjoyed tremendous success over the last couple of years. With convergent standard support, performance boosts from modern JavaScript engines, as well as its foray into the server-side stack, ECMAScript has gained significant traction and redefined the scope of HTML5 applications. The final requirement for world domination is the modernization of its syntax and run-time, which is coming in ECMAScript 6 and is the subject of this post.


Gumbo - A pure-C HTML5 parser (

Gumbo is an implementation of the HTML5 parsing algorithm implemented as a pure C99 library with no outside dependencies. It's designed to serve as a building block for other tools and libraries such as linters, validators, templating languages, and refactoring and analysis tools.


Destructuring Assignment in ECMAScript 6 (

Destructuring assignment allows you to assign the properties of an array or object to variables using syntax that looks similar to array or object literals. This syntax can be extremely terse, while still exhibiting more clarity than the traditional property access...

let [first, second, third] = someArray;

TC39 (the governing committee of ECMAScript) has already reached consensus on destructuring assignment and it is part of the draft ES6 specification. Effectively what this means is that it is now up to the people writing JavaScript engines to start implementing it; SpiderMonkey (Firefox's JS engine) already has support for much of it.


Thursday, August 15, 2013

SQL Server script to adding an identity to an existing column

As every SQL Server developer knows you can't alter the existing columns for identity. But there is an work around to solve this limitation. You can create a new table with identity, then migrate data form old to new table and then drop the old table. And here follows the script snippet:



CREATE TABLE [dbo].[tmp_Projects](
 [Id] [bigint] NOT NULL IDENTITY(1,1),
 [Name] [nvarchar](250) NOT NULL,
 [WebsiteUrl] [nvarchar](200) NULL,
 [IsNew] [bit] NOT NULL,
 [CreatedOn] [datetime] NOT NULL,
 [CreatedBy] [varchar](50) NOT NULL,



SET IDENTITY_INSERT dbo.[tmp_Projects] ON

IF EXISTS ( SELECT * FROM dbo.[Projects] )
 INSERT INTO dbo.[tmp_Projects] (
 FROM dbo.[Projects] TABLOCKX

SET IDENTITY_INSERT dbo.[tmp_Projects] OFF

DROP TABLE dbo.[Projects]

Exec sp_rename 'tmp_Projects', 'Projects'

How yield will transform Node.js (

Node v0.11.2 was released recently, and with it support for v8 generators. Generators can be hard to grasp, but essentially they’re decorated functions that you can execute multiple times and resume execution at different points inside the function.

What this means in practice is that we can get rid of the callback hell that has plagued node applications, and write code in a synchronous style, while it’s executed asynchronously behind the scenes.


New Features of Firefox Developer Tools: Episode 25 (

Firefox 25 was just uplifted to the Aurora release channel which means we are back to report about new features in Firefox Developer Tools. Here’s a list of the most exciting new features:

  • Black box libraries in the Debugger
  • Replay and edit requests in the Network Monitor
  • CSS Autocompletion in the inspector
  • Execute JS in the current paused frame
  • Import and export profiled data in the Profiler
You can read the summary of those features here, and to get the whole picture you can check the complete list of resolved bugzilla tickets.

Wednesday, August 14, 2013

A meta style guide for JavaScript (

Whenever you are considering a style question, ask yourself: what makes my code easier to understand? Resist the temptation to be clever and leave most of the mechanical cleverness to JavaScript engines and minifiers...


Tuesday, August 13, 2013

Isaac Schlueter on The Future of Node.js (

There's been a lot of debates, theories, and requests about Node's core API patterns on this list lately. I'd like to clarify the actual plans of the project on these points.

Callbacks will remain the de facto way to implement asynchrony. Generators and Promises are interesting and will remain a userland option...


JavaScript Promises (

No I am not talking the promise that JavaScript will fix everything if you use it. I don't even believe that ;) I am talking about the concept of a promise object that several JavaScript libraries use (including AngularJS, jQuery, Dojo and WinJS).

A promise is a pattern for handling asynchronous operations...


7 JavaScript Basics Many Developers Aren't Using (

JavaScript, at its base, is a simple language that we continue to evolve with intelligent, flexible patterns. We've used those patterns in JavaScript frameworks which fuel our web applications today. Lost in JavaScript framework usage, which many new developers are thrust right into, are some of the very useful JavaScript techniques that make basic tasks possible. Here are seven of those basics...


The old HTML parser is removed from Firefox tree (

Many years ago, I got my start contributing to Mozilla by working on the "new" HTML parser. At the time that I was starting to contribute, there were big changes happening in Mozilla-land, most notably AOL laying off basically all of its Netscape engineers. With that stroke, the available manpower working on Gecko shrank to a shadow of its former self, leaving large portions of the codebase unowned. Naturally, this meant that the least sexy portions of the code received even less attention than before and the parser, which had not been actively worked on (except to fix critical bugs) fell even further onto the back-burner. The reasons for this abandonment were not only due to the fact that HTML parsers are not the most exciting thing in the world to work on, but also because of a few other factors...


Bug 903912 - Rip out most of the old parser

Monday, August 12, 2013

Keep Your Identity Small (

I finally realized today why politics and religion yield such uniquely useless discussions...

Most people reading this will already be fairly tolerant. But there is a step beyond thinking of yourself as x but tolerating y: not even to consider yourself an x. The more labels you have for yourself, the dumber they make you.

Read more

Friday, August 9, 2013

Crowdfunded Ubuntu Phone Will Be A Big Success, Even If It Never Happens (

Another day, another healthy dose of press attention for the Ubuntu Edge. This non-existent smartphone is still just a glint in the eye of its originator, billionaire and Forbes disruptor Mark Shuttleworth, but it’s back in the headlines after receiving an $80,000 crowdfunding investment from Bloomberg . (Yes, the financial news company — who’d have guessed it?) The handset has also just had a price drop, down to $695 per unit for all future campaign backers, which hasn’t hurt its exposure either.


Thursday, August 8, 2013

Ubuntu Edge Gets Its First Major Corporate Backer In Bloomberg, But Funding Still Off Needed Pace (

The Ubuntu Edge is an audacious attempt to crowdsource the next smartphone advancement. Canonical, the company behind the Edge and Ubuntu itself is seeking an exorbitant $32 million to make it happen, and gave itself only a month to raise those funds. Now, Bloomberg LP has come forward as its first major corporate backer, with a lump $80,000 contribution in exchange for 100 Ubuntu Edge devices and enterprise workshops and technical support.

Read more

Wednesday, August 7, 2013

TypeScript 0.9.1 (

We’re happy to announce the release of TypeScript 0.9.1. With this version we've focused on fit and finish, improving the compiler performance and rounding out the language and ASP.NET support.

Change log:

  • Improved Performance
  • Typing with 'typeof'
  • Better 'this' handling
  • No Implicit Any
  • Visual Studio support for ASP.NET projects


Hacktivist Richard Stallman takes on proprietary software, SaaS and open source (

Richard Stallman, revered by some as a genius (after all, he won a McArthur “genius” grant in 1990) and derided by others as a crackpot, was in New York Monday where he warned against the dangers of using proprietary software, SaaS and even open-source software. Yes, for this famed hacktivist and creator of the free software collaborative GNU, open-source is not nearly open enough and worse, masquerades as free software. Which, he says, it most definitively is not. During the lecture, held at NYU by HackNY—a nonprofit, organized by Columbia and NYU faculty, whose mission is to “federate the next generation of hackers” —Stallman advocated the benefits of truly free software.


Tuesday, August 6, 2013

IBM opens up Power chips, ARM-style, to take on Chipzilla (

With its embedded Power chip business under assault from makers of ARM and x86 processors – and to a lesser extent MIPS chips – and having lost the game console business to AMD, IBM had to do something dramatic to expand the addressable market for its Power processors. And that something, which Big Blue has just rolled out, is called the OpenPower Consortium. which takes a few pages from the ARM Holdings playbook to breathe some new life into the Power architecture.


An Improved DevTools Editing Workflow (

With Chrome DevTools our goal is to make your experience as a web developer as productive as possible. In the most recent version of Chrome we've added three major new features that will improve your authoring experience more than ever before.

Workspaces allows you to live-edit source files within DevTools with bidirectional disk persistence. CSS preprocessor mapping supports Sass file live-editing in the DevTools, allowing you to instantly see your changes. Finally snippets lets you create, edit, save and execute custom JavaScript snippets.


Monday, August 5, 2013

Announcing the release of the Windows Azure SDK 2.1 for .NET (

Today we released the v2.1 update of the Windows Azure SDK for .NET. This is a major refresh of the Windows Azure SDK and it includes some great new features and enhancements.


Thursday, August 1, 2013

Compilers in OpenBSD (

A long time ago, in the first few years of the *BSD projects, the only free software compiler spanning the various platforms BSD systems were targeting was gcc...

Also, gcc 2.5 (at the time) had a few bugs, but not many. You could trust it to produce working code at any optimization level, and forget about it. In other words: there was no need to put any effort in maintaining the compiler, because it was (almost) bug-free...

And then C++98 came out, as well as C99, and it was time for serious work in gcc, if only to attempt to support the new features of these standards...

As an unavoidable consequence of this, something very important in the world order changed: gcc had bugs, and you were expected to accept that and cope with them...