isn't quite ashamed enough to present

jr conlin's ink stained banana

:: Notifications and Bipostal

So, i should probably talk about what the heck i've been doing at Mozilla, shouldn't i?

Well, with things finally starting to surface, i'm a bit more comfortable talking about them. The first part of what i'm working on is Notifications. What the heck is "Notifications" you ask? Well, it's kinda tricky.

The elevator pitch i like to give is "Somewhere between Instant Messaging and Email is 'Notifications'". It's a way for sites to semi-anonymously send messages to a user. Communication is one way right now, mostly for simplicity sake between the site and the user, but there's precious little to prevent the communication from going either way.

Ah, this is our floor, shall we get out of the elevator and actually talk about this? Cool.

The history lesson

A little over a year ago, a couple of damn bright interns spent their summer building a prototype notification system that used AMQP and a few other things to pass messages back and forth. The cool thing is that it allowed browsers to talk to browsers, or sites to talk to browsers or really anything to talk to anything. You could get twitter announcements in your chrome, or send a tab to your mobile device or all sorts of things. It was spiffy, but unfortunately, had issues. A fairly large one was relying on AMQP, meaning a persistent socket connection. That's expensive on a whole slew of levels, not including trying to convince your grandma to punch a hole into her firewall.

So, as is the case with a lot of good ideas, we headed back to the whiteboard to figure out what elements we can use. Some things, like sending a tab to a device, turned out to work better if we used something like sync. That still left a few other features that we wanted.

Enter the BrowserID

BrowserID is cool. The ability to log into a site by selecting what email you want to provide to them is amazingly simple! Granted, if you're logging into a site like GnomeBondage.com, you probably don't want to give them an email that will let them fill your work email box with things you may not want your employer to see.

That's why you want something that is a bit harder for them to associate back to you. And that's what i've been working on.

(Originally, Bipostal (BrowseriD Postal Services, no, really. Stop giggling like that.) was meant to be a later addition to the Push Notifications stuff. Because BrowserID pushed forward, though, the need was higher for that part.)

So, Bipostal generates a token that is specific for you and the third party site (say example.org). The token is ~64 base36 characters resulting in 64*(log2(36) ~= 5.17) = 330 bits of entropy or 2187250724783011924372502227117621365353169430893212436425770606409952999199375923223513177023053824 possible combinations. That's pretty large. Plus, we're doing a number of things to prevent spammers and other ne'er do wells from sending in just random garbage.

When a site wants to send you a note, the send it to an address like "6e7snqnx6lomcr67r0clqyimrspopjt894kjhh0dafpfysa3sey944kc3aek1gfi@browserid.org". We make sure it's legit, strip out the fancy HTML cruft, and sent it to you. You can also quiet messages to that address (if some site turns out to be overly chatty) or delete that ID. In the future, sites can include bits of JSON in their email that can get pulled out and sent to you as notifications. All magical and pseudonymous. Well, unless you fill out all the profile info with your real values, in which case, they know everything about you, but that's an "out of band" problem.

What's to come

Honestly, quite a bit. While a lot has been nailed down (both Push and Bipostal are on Github), but that doesn't mean we don't want to hear folks comments and ideas. i've included two of the ways you can provide feedback on the Notifications main page. Likewise, you can comment here and i'll try to respond both here and via email.

Likewise, we'd really love for other companies to help us work out the details to provide a cost effective, light weight platform for this sort of thing. (Websockets and SIP are neat, but require persistent connections which can be costly. We have the option to do message encryption, which would allow the server to not know the content of the message being transmitted, but it would be neat to use non invasive encryption validation to see if we can prevent bogus messages from being delivered.) It's always good to have bigger brains helping out. There's a lot we can do and a lot we're trying to make sure we don't mess up.

Now more than ever, What do you think?

  1. Jeremy Leader
    2012-02-03 18:50:15

    Did you know that this page produces a "Reported Attack Site!" splash page in Firefox? Talk about not being authorized to speak for your employer!

    Actually, I suspect it's those long strings of quasi-random digits and characters that might have matched some malware profile or something. Or maybe it was the link to the inappropriate front-lawn decor?


  2. jr
    2012-02-03 19:36:00

    no, the problem was with a subdomain a few days ago. Google decided *.unitedheroes.net was suspect. yay!

    I scheduled a rescan, so things should be ok by the end of the month.


Wanna join in?

:: Who Do You Think You Are?

Working on the new identity stuff has been fairly interesting. Not just because i'm working in a language i am still just learning, but because identity is one of those loaded terms that everyone has a definition for. This is a problem that a lot of folks have been trying to juggle for quite some time. In fact, two very smart folks recently posted about "identity"

Still, the problem is that "identity" is sadly pretty vague.

As a person, "Identity" is pretty vital to you. It, quite literally, is who you are. It's immensely personal and something that a lot of folks don't really want to grant to everyone, because losing control over that is a personal sin of the highest caliber.

Now, consider the role of the a site owner or provider. While your identity is important, it's more "useful" than "personal". That may seem a bit cold, but it's true. A site owner simply doesn't have as much invested in your identity as you do. It may sound cold, but it's more business than anything else. Frankly, all they really care about is:

  1. Are you unique?
  2. Can i contact you?

The other bits? Well, they're not really that important to the site owner. Well, ok, some bits are, but not really for the reasons you expect. The "personal" info is there to convince you to stick around so that you can look at the ads or give them money. The "social" aspect is there so that you can run free ads for the service to your friends.

Right, so that's probably a touch more cynical than it needs to be, but again, it's because while it's nice to have you, it's nicer to have you, your friends, and their combined level of disposable income.

So, how does one balance out providing what's sacred to you with what's profitable for the site owner? Well, you have to compromise. Personally, websites tend not to be very good stewards of your identity. That's understandable, because it's not valuable in the same way to them. You are, quite literally, a commodity.

So, now that you're probably donning your black jacket with white pinning and doing your best Patrick McGoohan, it's important to think about what possible solutions do exist.

i spent way too long doing this. The first thing that needs to be done is to simplify. Yes, online identity can carry with it a lot of additional items (like the association, reputation, and other elements mentioned above), but each of those also carries context that you as the owner want to control. You're reputation as a top notch cribbage player may not carry the same weight in the Call of Sponge Bob LARP Group.(Which, sounds kind of an awesome group, really), but you really don't need to tell everyone online that. Ultimately, you need to control what aspects of your personality various sites get.

Yes, that means you need to be fairly active at worst, or have several personae at best. Kind of like how you manage your real life. It also means that instead of wrapping identity up in something that's hard to control or understand, it should be fairly clear and possibly a bit worrisome.

Mozilla is taking the approach that the one thing that you own, that the site providers need to talk to you, that is unique to you and a little worrisome to hand out to strangers, is your email address. It's something you already have (probably multiple of them, really), and that you control, even more so if it's with a domain you control. Likewise, site owners get something they can use to contact you without going through a broker or gatekeeper. Yes, there are potential issues with spamming, but those issues exist regardless.

The thing about identity, really, is that you should own it. It should be yours to control. You should grant sites access to your identity the same way that you do in real live. (You don't tell the Barrista your Social Security Number or who you went to the movies with last Friday.) Likewise while you can get someone to vouch for you, you shouldn't be held captive to them.

We're still working out the details, but we're fairly far along. Feel free to join in the conversation if you like.

:: Apples To Foxes

Righto. So, let's look at memory footprints, shall we?

With the pending Firefox 4 release (yay!) a few folks have posting things like the following:

i was kind of curious about that myself. So i decided to do a bit of a test. My personal walk-around box is a Dual Core 1.3GHz Acer Aspire with 3GB of memory running Win7-64bit. i'll pick that OS since it's the most popular platform (even though i tend to run Ubuntu as my real work space). i've got PsTools installed so i can do snapshots of running processes. Mind you, "Memory usage" (particularly on Windows) is not really an easy term to identify since applications can reserve more memory than what is available (effectively, overbooking memory) and most tools will report that number rather than the actual memory in use (the Working Set, which is closer to the real amount of memory in use).

So, with that in mind, lets look at a few things.
i brought up a clean version of Firefox 4 (no addons), sync'd it to my work desktop and pulled over 18 tabs. They are a mix of static pages, a pinned Twitter, an Etherpad editing a 40K doc and a few other things (no flash because i tend not to use that while working or coding, but feel free to add one if you want to do this at home)

from the command window, i ran:

C:\Program Files (x86)>plist -m firefox
pslist v1.29 – Sysinternals PsList
Copyright (C) 2000-2009 Mark Russinovich
Sysinternals

Process memory detail for VIR:

Name Pid VM WS Priv Priv Pk Faults NonP Page
firefox 7576 445036 236912 219460 238040 468908 137 342

Since values are returned in KB, Firefox has reserved about 445MB of Virtual Memory with a Working Set of around 236MB. That's our baseline.

Now to bring up those same tabs in Google's Chrome.
and we get the following:

C:\Program Files (x86)>pslist -m chrome

pslist v1.29 – Sysinternals PsList
Copyright (C) 2000-2009 Mark Russinovich
Sysinternals

Process memory detail for VIR:

Name Pid VM WS Priv Priv Pk Faults NonP Page
chrome 3876 230404 60364 42332 57428 505725 46 306
chrome 5980 156528 39764 29788 41332 251894 23 164
chrome 7272 100012 15116 8208 11464 6225 12 164
chrome 9640 134756 17008 9568 14272 11077 14 164
chrome 7284 142864 27396 17984 23796 34864 19 164
chrome 1840 136804 20168 12612 16856 15592 14 164
chrome 10456 138392 22784 14480 18484 10414 15 164
chrome 816 139300 22552 14024 18188 12245 18 164
chrome 8936 136488 20812 12300 18000 9796 15 164
chrome 10768 137432 17860 10524 14720 9176 15 164
chrome 11172 102060 16144 8980 13608 7015 12 164
chrome 10740 136576 20200 11752 17204 9553 15 164
chrome 10824 147120 32488 20236 27848 30158 21 170
chrome 10584 161836 29940 25132 25248 7876 22 232
chrome 11380 98988 13996 7152 10764 6647 12 164
chrome 7216 139412 23296 14648 20892 13321 18 164
chrome 4724 113004 26700 21408 25116 9617 12 164
chrome 6976 98988 14136 7256 10928 6651 12 164
chrome 2684 133988 17420 10008 13828 8320 14 164
chrome 10256 110572 23372 18060 21940 8861 12 164

Huh, why so many? Well, the good folks at Google sandbox each page into its own process so that when it crashes, it usually doesn't take out the other browsers. Because of that, each process then requests and uses more overall memory. In this case, the total numbers are 2,696MB of Reserved Memory (VM) with a working set of about 482MB. That's a lot more memory, but again, there is a lot going into these numbers that can set them higher.

So what about the others?

Well Safari 5.0.3 does a bit better with the process generation (only building two) and memory footprint:

C:\Program Files (x86)>pslist -m safari

pslist v1.29 – Sysinternals PsList
Copyright (C) 2000-2009 Mark Russinovich
Sysinternals

Process memory detail for VIR:

Name Pid VM WS Priv Priv Pk Faults NonP Page
Safari 5228 491876 227472 235152 242528 992772 225 438
Safari 8204 251544 55068 38864 73768 52337 61 356

with a total of 743MBVirtual, and 283MB Working Set. Better than Chrome, but still bigger than Firefox (but just barely).

Opera 11 shows up at:

C:\Program Files (x86)>pslist -m opera

pslist v1.29 – Sysinternals PsList
Copyright (C) 2000-2009 Mark Russinovich
Sysinternals

Process memory detail for VIR:

Name Pid VM WS Priv Priv Pk Faults NonP Page
opera 4728 345856 218068 215104 215908 258746 47 225

Which gives it the smallest footprint so far, shaving 18MB less than Firefox

IE9(rc) shows up at:

C:\Program Files (x86)>PsList.exe -m iexplore

pslist v1.29 – Sysinternals PsList
Copyright (C) 2000-2009 Mark Russinovich
Sysinternals

Process memory detail for VIR:

Name Pid VM WS Priv Priv Pk Faults NonP Page
iexplore 4928 183092 35676 14888 16300 12907 45 329
iexplore 5060 269624 82320 44424 51464 31208 56 385
iexplore 3900 321020 90184 55620 60860 35165 70 416
iexplore 2664 213272 41056 22412 25152 12574 38 342
iexplore 5104 235628 54836 25616 70920 28599 51 372
iexplore 5040 240560 71040 48260 54136 63598 98 365
iexplore 3412 231716 52024 31668 51920 19874 60 338
iexplore 3280 243336 54364 32552 35372 16715 47 369
iexplore 1336 204544 39144 21392 21784 10383 38 341

Which sums up to VM of 2,143MB and a WS of 503MB (Well, after a reboot since the install required it.)

So, for the benefit of them what like charts, here's the memory footprint breakdown:

Browser Virtual Memory Working Size
Opera 11.01 346MB 218MB
Firefox 4.0b12 445MB 236MB
Safari 5.0.3 743MB 283MB
Chrome 9.0.597.107 2,696MB 482MB
IE 9.0.8(64) 2,143MB 503MB

Mind you, these are all top-notch browsers, and frankly you should be paying attention to the second column (working size) more anyway. Even with all those browsers and associated tabs open, there was memory available and i didn't notice any huge lags. That's again due to the somewhat interesting approach Windows and other modern OS's takes to memory management.

Plus, if you're running a machine that has just 1GB (or less), there's a fix for that.

That said, i think Firefox 4 does a right fine job of memory management compared to the competition. i'd also love for a few folks to do similar tests on their systems to see how it performs. Hopefully, this will help.

(Also, Firefox and Chrome made this REALLY EASY by letting me drag text into the URL field rather than copy/pasting it in. Really wish the other browsers would let me do that.)

:: Fear the Remote

Perhaps, while watching TV you may have seen one of those OnStar commercials. Basically, the service allows you to remotely monitor and access your car via their service. Kinda neat, huh? It gives you a little app you run that can give you god like powers over your vehicle in a simple way.

Said service is, of course, not free. It's a subscription service that costs either $200 or $300 a year, depending on whether or not you want the GPS service too. i'm sure there are various other fees that might exist, but let's say $200 a year on top of your $36,000 car.

Now, let's go a bit further. Let's say that OnStar is such a spiffy way to manage your vehicle, that you don't need a key anymore, or that to get a key, you'll have to pay $200 each (the going rate for key replacement from the dealer) Just bring up the app on your phone or call their 1-800 number and they'll unlock and start your car for you. In this modern worlds, chances are you probably know where your phone is more often than your keys, so again, pretty spiffy, right?

Well, up until you forget to pay your subscription, or there was a problem with your credit card that month, or you lose your phone, or they drop your account because they no longer support your vehicle, or…

See, that's why you want to have a key. A key you can carry with you and control.

That's my big problem with Facebook Connect. You don't have the key.

You have to coordinate though a remote service in order to use something. A service that will go away at any time or for various reasons, leaving you not only without a way to click on your cows, but if you are using them as your internet equivalent of OnStar, without every single site you log into.

That would be, a bit bothersome, no?

And lo, Om Malik describes exactly this problem.

Still not quite sure what the best fix for this is. i'm still a fan of identity being contained in your browser (synced to your devices with some sort of kill-switch capacity for lost/stolen things), but site hosts would want a third trusted party to validate against.

Some interesting discussions are being had at work on how to address that, though.

:: On The New Job

There was a psychology study done a while ago that found people became more confident with a decision if they washed their hands after making it. This, of course, only holds true for folks with normal levels of paranoia and self doubt, so i'm pretty much out of the running before the race even starts.

No one ever leaves a company when they're happy. Likewise, i never regret a decision because i know it was the best one to make at the time with the information i have. i do consider the previous decision an interesting learning opportunity, and while i won't go into great detail, i will say that it was about as close as i ever got to regret. This time around, i wanted to make sure i made the right decision for the right reasons.

i'll also say that it's not a very easy decision to have made. Effectively, i was torn between two options. One was with a mid-size company that is on the very cusp of doing some amazing things. Were i to go there, i would absolutely have a tremendous impact on them and lots of other folks and do a lot of good in the long run. i could well become quite well known and use it to write my own ticket should i ever decide to leave (not likely, considering my normal tendency to stay with companies for nearly a decade, but an option none the less).

The other is smaller, some might consider "past their prime", and a good deal more chaotic, but does a fair bit of good for the community at large.

You could say that the choice is between joining pre-IPO Google or signing up for the Peace Corps.

i was really reminded of this because i just came back from meeting with the CEO of said mid-size company who asked to meet with me after hearing that i declined the offer to join. i was deeply flattered that he wanted to speak with me (considering that i am an industrial grade idiot), and he made a very compelling case for me to reconsider my choice. While i talked with him about the countless, valid, hard reasons that joining his company made sense, there was still something… else. Something that was hard to put into words. Something above hard, quantitative analysis and pure data.

i needed to get my soul back.

(Yes, this is something that the CEO noted was an illusion and probably a product of me being hard on myself, but that's the best way of putting it.) The past bit of employment was not wholly productive for me for a number of reasons. There were a lot of things that i did and accepted that i wasn't really very comfortable with because i believed it would "get better". It never did. i don't blame anyone there and in fact i think nothing but the best toward them, but it simply wasn't a proper fit. Fortunately, we parted ways before things got inevitably worse.

After that experience, however, i'm a bit gun shy of getting myself back into that same position. Yes, it's borderline phobic, and irrational but it's a factor i have to contend with. When i talk about "getting my soul back" it's actually a lot of things. Some of those things are irrational to anyone other than myself. Some are even irrational to me, however, i know it's the right thing to do.

i seriously am thrilled to be able to work with Mozilla in the coming years. Yeah, i won't make millions doing it, gain legions of fans, or become a guiding voice for my industry, and i'm fine with that. Instead, i'll be working quietly to make people's lives better. i'll be doing cool things that will feel "magical" to folks that use it, and that just seems more fun to me, even if it means giving up a once in a lifetime opportunity.

i know that this probably sounds like me trying to justify a decision, and perhaps i am, but it's a decision i made several years back and only acted upon it recently. Perhaps you've got a similar decision and this helps you.

At least i know i won't regret it.

Blogs of note
personal that's my blog
(The Official Blog of the Internet)
memoirs of hydrogen guy matthew shepherd (quebec) rhapsodic.org Henriette's Herbal Blog lynne ydw i slumbering lungfish
geek jeremy z
(The Official Website of the Internet)
dave's picks ultramookie Josh Woodward derek balling
news ars technica search engine watch

Powered by WordPress
Hosted on Dreamhost.