The Chrome Dev Channel has recently introduced a revamped home screen that features a search box alongside the top sites. In addition, I noticed that the suggestions offered as you type now became part of the body of the page.
I tried to right click and unsurprisingly, it seems Google has decided to “dogfood” more and more of its browser’s chrome.
I headed to the Chromium issue tracker to learn more about the change and its implications[1]. I came across some predictable yet very well-formulated concerns over a potential performance degradation. In the process I learned that Chrome provides a chrome://omnibox URI to query the suggestions manually:
It’s not certain whether this change will stay, but I favor the idea of the browser using its own rendering engine for most of the UI, something that Chrome has been doing for its Settings, extensions management and even the print dialog. And maybe this will further extend the hacking surface of its rich extension ecosystem.
[1] Aside from a few links that seemed to be exclusive to Google employees, I still find it amazing that I can in a matter of minutes learn so much about the internals of a project of this caliber.
if ( comments_open() ) { ?>Email you receive on a daily basis falls into two primary categories:
- A. Mail written by someone on a Mail User Agent (MUA), like iOS Mail or Gmail.
- B. Mail written by a computer program, normally transactional email.
Almost every web application you use on a regular basis will send you email when different transactions occur. If someone adds you as a friend on Facebook, you’ll likely receive an email about it sent by Facebook’s backend server.
And unlike category A, the information contained in a lot of email from category B also exists in a web application you can access with a web browser. Chances are good you could visit facebook.com and read the notification (and even act on it) before you check your inbox, yet that same message will still be waiting for you in your inbox in an unread state.
You’ve probably found yourself reading chat email digests of messages you’ve already read in the original chat client (ironically, this even happens with Gmail’s own Google Talk). You might have even read emails about “new” pull requests you actually merged on Github hours ago.
The solution is actually a quite simple one: enable applications to dismiss email they’ve sent in the past, once they know that the email is no longer relevant.
A rough implementation could be as follows:
- Outgoing transactional email would contain a dismissal id in the form of a proprietary SMTP header:
X-Read-ID: <hash> - Once the information is “read” from the website or application, a new email is emitted with a custom format
read({user}, {token})@host.com.
For example, if I’m sending Guillermo (rauchg@gmail.com) a notification email I would include a header like this: X-Read-Id: 55765639d46104a0de.
If Guillermo then goes to the website and reads the notification, I would now send a new empty email to read(rauchg, 55765639d46104a0de)@gmail.com. The email provider can then decide what to do with this amazing information. Gmail could archive those emails for you. Non-compliant email servers will simply bounce the email, making this completely “backwards compatible”.
tl;DR: only 2/3 bugs have an impact, one has a trivial workaround (jQuery snippet included below), the other one is UX related. Socket.IO needs no updates.
In the past 48 hours a lot has been written about the introduction of iOS6. With such a major software release it’s not surprise that a few issues have been introduced. Of particular importance to us web developers, three different bugs have been attributed to Mobile Safari:
- A continuous “spinning loading indicator” reported on TechCrunch
- Broken long-polling due to a connection limit set to 1 explained by Real Software
- The introduction of aggressive caching of POST requests, reported on Stack Overflow
As it turns out, a lot of misinformation is being spread as well. In addition, all of these bugs are of very high importance to the development of the Socket.IO and Engine.IO realtime frameworks. Therefore I took the time to document the actual bugs and their workarounds in this post.
if ( comments_open() ) { ?>If MongoDB rs.status() displays the following error:
> rs.status()
{
"startupStatus" : 4,
"errmsg" : "all members and seeds must be reachable to initiate set",
"ok" : 0
}
The first course of action is to look at the MongoDB logs. In my Amazon Linux installation, these are at /var/log/mongo/mongod.log.
$ tail -n 100 /var/log/mongo/mongod.log
You might find an entry like this:
(date) [rsStart] getaddrinfo("ip-10-0-1-94") failed: Name or service not known
Under certain configurations, your machine’s hostname might not actually be reachable. An easy solution is to make it so by adding the an entry to /etc/hosts:
127.0.0.1 ip-10-0-1-94
After restarting mongo, you’ll be able to run rs.config without problems with any IPs you want as members of the replica set.
On Monday I had the pleasure of speaking once again at NodeConf in Portland. On this glorious second edition, several talks were dedicated to the topic of realtime, covering angles such as its inception and future, scalability, backend messaging and more.
Mikeal requested that I talk about the state of Socket.IO, now one of the corner stones of the so-called realtime web and one of the most popular JavaScript projects on GitHub at the time of writing. Those familiar with the project know that stability and reliability are the commanding goals of all the ongoing work towards 1.0.
These goals are largely attained by the introduction of a new library, whose first release was announced at the conference: Engine.IO.
if ( comments_open() ) { ?>As a conference curator and fellow argentinian, and due to the lack of any reports in English, I thought I’d share a brief summary of a very unfortunate occurrence: Richard Stallman, father of the FSF, had his bag containing his laptop, medicine, money and passport stolen after his talk at the University of Buenos Aires on Friday, June 8.
Despite his controversial views on a variety of topics, his evangelism work all over the world is a true inspiration for countless people. Almost a decade ago, as I was getting fully immersed in the world of Unix and programming, I sneaked out of school to watch the genius who created GCC, GDB, emacs deliver a compelling presentation in flawless spanish.
His presentation back then was followed by a ritual that was repeated yesterday: anyone in the audience could walk up to him, exchange a few words, get a sticker and a picture. Unfortunately, on this occasion someone decided to take advantage of the ruckus and take his bag.
Shortly after he realized his bag was gone, according to Partido Pirata, Stallman found himself in utter despair, cursing out loud. The report goes on to convey the truly heartbreaking image of a hopeless RMS sitting at the university staircase, crying.
As a result of this occurrence, he was forced to cancel his talk in Cordoba, and it’s still unknown how this will impact the rest of his speaking engagements throughout the world.
For the rest of us who also do fair amounts of traveling and speaking, more than ever is it important to emphasize that it is not just cyber-crime we should watch out for.
Update: it was clarified to me that force was not used during the occurrence and I therefore updated the title to reflect this.
if ( comments_open() ) { ?>
