Categories
JavaScript Package Management Tooling

Yarn: npm Has Competition

Facebook and Google released Yarn yesterday—a new package manager that uses npm's registry but promises faster, more reliable, more secure installations. The collaboration between tech giants and focus on npm's pain points suggests npm has serious problems.

Whether Yarn succeeds depends on execution and whether developers tolerate another package manager.

What Yarn Fixes

Categories
Angular Frameworks JavaScript

Angular 2 Finally Ships

Angular 2.0 shipped this week, two years after announcement. The wait was long, the changes are total, and the reception is mixed. Google rebuilt Angular from scratch—TypeScript, component-based, completely different API. Whether this was right decision depends on who you ask.

What's certain: the two-year rewrite gave React enormous opportunity.

What Took So Long

Categories
Design UI/UX Web Development

Material Design: Google’s Attempt at a Design Language

Google I/O happened this week, and the most interesting announcement wasn't a product—it was Material Design, Google's new design language. After years of being the engineering company that can't design, Google is making a comprehensive bet on unified, opinionated aesthetics. Whether this works depends on execution and adoption.

What Material Design Claims To Be

Categories
Programming Web Development

Prevent Googlebot Following Links in Gmail

If you run a mailing list or send automated emails with links, you may have noticed something strange: Googlebot is following links sent to Gmail subscribers, which can trigger unsubscribe actions or inflate download counts.

Why Common Solutions Don't Work

The typical approach—using robots.txt or adding rel="nofollow" to links—doesn't work for email links. These methods only apply to web pages, not email messages. When Gmail displays emails in the web interface, Googlebot can still crawl those links.

The Solution: User Agent Filtering

The best approach is to detect and handle Googlebot requests at the server level. Check the user agent string in incoming requests and filter out bot traffic before processing actions like unsubscribes or incrementing download counters.