Posts Tagged mozilla
Why Microsoft is Evil (and Google is Not)
Posted by admin in entrepreneurs on 13Feb09
Last time I checked, Google had annual revenues of about $20B.
Microsoft has annual revenues of about $60B.
Google knows everything about me – and they’ve shown a few times that they’re not afraid to use it. (Ask Chris Campbell about the time Google emailed us when we were working on Netscape 8.)
Microsoft knows very little about me.
As a developer of software, I respect and emulate their business model – they write software, and then they sell it to people. It’s old-fashioned, but it works. And it’s straightforward.
And Google? Google, who makes a living by pimping out a spot in my attention span; Google, who has the moral backbone of a Tadpole – is considered to be the good guy.
Moving to the Cloud – Making EC2 Usable for the Rest of Us
I’ve been messing around with hosting for what seems like a LONG time – my first domain name was registered in February of 1997, more than ten years ago.
It never gets simpler.
I started out with a shared hosting account with ProWebSites.com (long defunct), for almost $30 per month. Traffic and storage were measured in megabytes, those days, and no one even talked much about “up-time”.
When I started working at Ramsbottoms Computers in Nelson, I took over their “web hosting” department – which involved a bunch of local businesses, hosted off of an overbuilt desktop machine sitting on the desk in the back room. The best thing I did for them was get that server rebuilt into a rack-mounted box, and tucked into colocation in the only data-center in town.
Sometime early in 2000 I put my own server together, in the basement of an office building in Iowa. (It’s still there, actually.) Since then it’s been a succession of colo boxes, self-managed hosting… I’ve even run a couple of data centers.
Last week, the hard-drive started failing in one of my ServerBeach servers.
This, really, was the last straw.
I’ve had billing issues. I’ve had trouble-ticket issues. They won’t return phone calls (although they do reply to email – excessively. Usually I get a blank copy of any email I send to them – 10 minutes before I get an actual reply.) Now I’m getting hardware failures – I’m done. I’m leaving.
I decided it was time for EC2 – until I realized that the hosting services built on it where $500 a month minimum, and the alternative seemed to be a weird set of windows command line tools.
I went whining to Jesse Andrews:
4:52:13 PM JustJosh: do you know the gandi people?
4:52:18 PM JustJosh: can I get an invite?
4:52:57 PM jesse: ahh, that is new
4:53:00 PM jesse: have no invites
4:53:03 PM JustJosh: fucl
4:53:15 PM jesse: ec2 might be better for you
4:53:20 PM jesse: since you need more than a $8 slice
4:53:31 PM JustJosh: yeah
4:54:01 PM JustJosh: but I don’t really have time to figure out ec2 instances
4:54:24 PM jesse: install elasticfox
4:54:31 PM jesse: you can have a new slice in minutes
4:54:41 PM JustJosh: looking into it now
5:16:18 PM JustJosh: help
5:16:24 PM JustJosh: what AMI should I start with?
5:16:27 PM JustJosh: there are a PILE of them
Etc, etc.
Let me start out by saying that ElasticFox ROCKS – James Greenfield took an entirely broken experience, and managed to make it only MOSTLY broken.
But there was one absolutely critical function that elasticfox DIDN’T do – save an AMI image of your running instance, back to S3.
So I added it.
There are a lot of caveats, of course – I’m still hacking wildly. No guarantees on anything but Mac. But seriously, it’s a lot better than the alternative.
Go download it, and try it out.
PS – SpandexFox.com is running on EC2.
PPS – EC2 got elastic storage today – SpandexFox will have support SOON, I promise.
BuyLater 0.7 Released, Support for Canada and UK Users
Posted by admin in entrepreneurs on 03Apr08
After the deluge of new users from last week’s Lifehacker.com article, followed by a full day on the front page of delicious, I ended up with an inbox full of bug reports. While there were a few pernicious actual “bugs” in there (sorry to everyone who ended up with the ‘can’t delete items’ bug, that’s fixed too), most of them fell into two buckets:
I Wrote A MashUp, Just for You
Posted by admin in entrepreneurs on 22Mar08
If you’re one of those people who stood in “The Line”, then this isn’t for you.
If you get a strange, visceral pleasure in wasting hours, even days, of your life, waiting for your local WalMart to get more Beanie Babies in stock – then you should stop reading right now.
If you like to revisit your local grocery store every night, just to see if they’ve dropped the price on those great donuts in aisle 4… then hit the Back Button, and read something else.
But – if you have a life, and you still want to try and buy something online – I might have something that can help.
It’s called BuyLater, and that’s exactly what it’s for – buying Amazon products, later on.
Later can be: When it’s back “In Stock” (can someone say Wii?), or simply when it’s a little cheaper (or even on sale).
Unlike many of my ideas (which are unique, innovative, and incomprehensible), this one actually isn’t mine. My buddy Jesse Andrews did it first, with a Wii-only bot called WiiMe. I just took the idea, and strreeettched it a little.
IE 8 Beta Released – A First Look
Posted by admin in entrepreneurs on 06Mar08
According to PC Magazine, Microsoft has just released the newest edition of Internet Explorer, in a Beta at the MIX08 conference in Las Vegas. You can grab yourself a copy.
In a nod to the trend of “backgrading” Vista machines to Windows XP, the IE beta will run on XP SP2 or newer – although it seems to require a different download for every possible flavour of OS. At 14.4 Mb, it weighs in a little heavy, but not unusual for a Microsoft product.
I’ll admit right off that I haven’t bothered to fire up Parallels to try it out – so what you’ll be getting here is purely jaded commentary. Read the rest of this entry »
The seduction of Browser Hacking
Posted by admin in entrepreneurs on 28Dec07
I’ve just spent another day in the Flock office. It’s like an addiction – browser coding is the opium of hacker drugs. Why?
- It’s really hard (cross-platform, mixed languages, and inherent complexity).
- Millions of people will use the result (at least, until they turn off Netscape).
- It’s not that hard to innovate.
Now, I imagine there are legions of Mozilla folks arguing with me on that last point, but if you look at this essay on browser featuresets, we’re essentially still living in the 90s – most of what most people need to do, most of the time, is still difficult, and poorly exposed.
Think I’m being harsh? Okay, try signing up for a new service with your browser – say, Firefox. Did you get this great dialog?

Why would you do this to someone??
How bout this for an approach instead:
– We have just saved your password. <Undo that> <Undo, and Don’t ever do that>
In a browser bar – non-interruptive, and it’s already done the best thing. (Of course, this is predicated on having a “public” mode in the browser, or a “logged in” mode – wait, didn’t we have that in NS6?)
Anyway, I (of course) have been dreaming of the super browser since just before we started work on Netscape 8 (which was originally going to be NS 10 – ask me about that sometime). The one that *I* would want to use. The one that I quit my job at Mercurial to join Flock and build.
If I was business savvy, I would build the ElderBrowser. I know – I coined the term, at Gnomedex ’07. (And damn their shitty network connection, too – it died in the middle of my attempts to register the domain, and GoDaddy scooped it from me.) Talk about an unserved market. But honestly – it’s not really the browser that I want to build.
What does that browser look like? I’ve got 20 pages of notes. Perhaps I’ll put them up here. Would you use it?
Bondage in the XML world
Posted by admin in entrepreneurs on 06Aug07
Ah, the glories of SnM – and in this case, yes, I’m talking about bindings.
Last time, I waxed verbose eloquent about the glories and the power of RDF. Today, I’m going to talk about how to use RDF to generate UI, in a flexible, extensible, and performant way.
Actually, I’m lying. I’m going to talk about two DIFFERENT ways to do this. One of them is flexible and simple. The other is extensible and performant. You take your pick.
But first, a quick review.
- XUL = HTML for the browser. Defines layout.
- CSS = Stylesheets, of two kinds:
- one makes things look GOOD (themeable),
- the other makes things WORK (moz-binding and functional layout).
- XBL = The wondrous binding language, essentially lets you create your own XUL elements of arbitrary complexity. This is where the magic happens.
XBL brings the power and rigor of Agile Development to the declarative, XML world. When is the right time to refactor? When you write the same code for the second time. When is the right time to make a XBL binding? When you’re going to have the same chunk of XUL twice.
Alright, that should be enough to scare off anyone who’s not going to follow the next bit. Let’s dive into the nitty gritty.
As I mentioned last time, one of the beautiful things about RDF is that it allows you to express additional ARCs to capture service-specific data or metadata, on top of the base data. Think of sub-classing a generic PERSON to a youtube PERSON, which allows us to keep track of the number of videos they have uploaded, a list of their friends, and maybe the last time they logged on.
So how can we do this in Flock?
- Declare an inherited coop object. (In this case, it would be YoutubePerson inherits from Person).
- Create an inherited XBL binding for the relevant UI (personcards in the sidebar, FOAFcard for browsing friends of a friend, etc.)
- Add an overlay to the sidebar XUL, that includes a service-specific CSS file to connect the inherited binding, with the relevant elements, like so:
personbar.xul:
<vbox datasources="rdf:flock-favorites" ref="urn:flock:peopleroot">
<template>
<rule rdftype="http://flock.com/rdf#Person">
<personcard uri="rdf:*"
type="rdf:http://flock.com/rdf#Service"
name="rdf:http://flock.com/rdf#Name"
... />
</rule>
</template>
</vbox>
youtube-person-bindings.css:
personcard[type='youtube'] {
-moz-binding: url("chrome://your/binding/file/here.xml");
}
youtube-person-overlay.xul:
<?xml-stylesheet
href="chrome://flock/content/youtube-person-bindings.css"
type="text/css"?>
<overlay id="youtubePersonOverlay"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="...there.is.only.xul">
...
</overlay>
Why is this cool? Or, why is this the right way to do it?
- It works with either RDF templates, OR javascript document.createElement()
- It means a single generic method of displaying ALL persons can output service-specific UI – Including service-specific ACTIONS in that UI.
- It encapsulates the UI code per service, WITHOUT mashing that UI code into an xpcom service somewhere.
- Services don’t HAVE to use specialized bindings – if they don’t define one, the generic binding will be used, which ought to just work.
No approach is perfect, however. Here are the possible drawbacks:
- The generic binding has to assume a very low level of functionality, since it can only rely on the actions that every service will have. So many services will end up duplicating binding code for a rich-but-common set of functions. (Perhaps this could be mitigated by inheriting from a more-sophisticated, common but not default binding?)
- Since the attribtues on the element are only those common to all PERSONs, the binding may end up needing to use coop internally to fetch the additional metadata that it needs. (This is straightforward, but it does add complexity.) Again, the template itself could be overridden with an overlay, but that spoils the elegance of this approach.
- Hopefully, an inherited binding will still be able to take advantage of drag-n-drop handling code within the base binding, but this is definitely a point to watch out for in test-planning. Perhaps the most critical goal of this quasi-polymorphism is to ensure that the DnD behaviour is consistent across services.
This is a little more technical than I was going for, as I’m trying to keep this blog accessible and approachable for ordinary coders. But, if you understand XUL, and you understand XBL, you ought to be able to grab this one and run with it.

