There’s a whole lot of know-nothing advocacy that’s still happening in the JS/webdev/design world these days, and it annoys me to no end. I’m not sure how our community got so religious and fact-disoriented, but it has got to stop.
Category: Development
Jan31
Sep26
Busy at JSConf EU, but it bears mentioning that script.aculo.us 2.0 is now in beta. The main new feature put a few gray hairs on my head: it will “optimize” certain animations to be GPU-accelerated in capable browsers, including MobileSafari on iPhone and iPad. Here’s a demo that explains it in greater detail.
Jun7
Feast on slides: How Custom Events Will Save the Universe, a talk I gave yesterday at TXJS. (Travel can be fun, but you can’t beat conferences held where you live.)
Mar26
GitHub now has even better commenting on commits. Better UI (collaborator highlighting, comment preview), better functionality (repo collaborators can edit anyone’s comment), better aesthetics. I use Git. I’m not wild about using it. I could take or leave it, to be honest. But I would stand in front of a tank for GitHub.
There are many geeks out there with a soft spot for Mercurial, or Bazaar, or darcs, or an even-more-neckbeard-y DVCS, and they often wonder why Git is getting all the love. It’s because Git has GitHub. Mercurial seems to be feature-equivalent to Git (at least in my limited experience), and Mercurial has BitBucket, which seems to be pretty good. But it’s not as good as GitHub.
Nobody should be ashamed that they can’t replicate GitHub’s success. It’s really hard to do the web well. It’s hard even to really smart people, of which I’m sure there are a few at BitBucket. The only people who think it’s easy are idiots. You can spot these people easily: they’re the ones who comment on TechCrunch posts and chortle that they could build a Stack Overflow clone over a weekend.
Feb13
Don’t slip a concrete dildo into someone’s box of Fruit Loops. They won’t be happy with your Morning Breakfast Surprise. Put the concrete dildo in a clearly labeled box, with instructions. Then when someone encounters a problem, “Hey, something is screwing me here. Maybe it’s the concrete dildo?” at least they know to ask.
Jan19
Mock geolocation
Useful if you’re working on a website meant for mobile devices. Firefox 3.5 has geolocation, but I use this with Safari and GreaseKit. Replace with whatever latitude and longitude you prefer, naturally.
if (!('geolocation' in navigator)) {
navigator.geolocation = {
watchPosition: function(success, f, options) {
var broadcast = function() {
var position = {
coords: {
latitude: 30.2696384,
longitude: -97.74947,
accuracy: 10000,
},
timestamp: (new Date()).valueOf()
};
success(position);
};
broadcast();
window.setInterval(broadcast, 10000);
}
};
}
Jan2
A stream-of-consciousness browsing session brought me to this writeup on how the Source engine deals with lag. Also serves as a parable for web developers — don’t rely on the client to validate input, for the same reason that a game server can’t trust a participant to tell it if that bullet hit anything. See also Ninjam, a clever latency workaround for online jam sessions. And consider that even without the inherent delays of Internet traffic, the speed of light would be a constraint on distant collaboration.
Nov25
Thomas Fuchs just pushed out the alpha 5 release of scripty2. This is the first release to include the small handful of UI controls I’ve been writing. The controls are designed to be compatible with jQuery UI’s Theme API — meaning that, for instance, a theme built with ThemeRoller could be dropped into a site using scripty2, and vice-versa. More to come!
Sep12
The “Configurable” pattern
If you don’t know about Raphaël, you’d better ask somebody. It provides a vector drawing API that works in all major browsers (by abstracting between SVG and VML).
I’ve been working on a JavaScript charting library called Krang. Krang is designed to take a data set and produce any chart (line chart, pie chart, bar …
Aug28
Deep-extending objects in JavaScript
Today I’m going to be talking about Object.extend without much introduction or context. Bear with me. This is a prerequisite blog post for something I’ll be talking about in a few days.
Extending objects in JavaScript
Prototype has a function named Object.extend. It takes two objects and copies all properties from the second object onto the first. …