The Application Cache spec provides us with a very useful tool for enabling offline access to assets. This allows us to build web apps that can function whether or not the browser has an HTTP connection. AppCache is not a complete solution for offline apps, and it’s received some criticism for the fact that some […]
Continue Reading
Please read this post from Steven at MyFitnessPal regarding the change to allow setting macros by gram, along with other advanced nutrition options as part of their new premium service. This JavaScript bookmarklet will enhance the macro target section of the custom goal editor in MyFitnessPal with some advanced features that allow you to set up a more […]
Continue Reading
When I start a project, I like to tackle the parts that are new to me first. Obviously, I enjoy the dopamine hit from exploring something unfamiliar, but also, I’ve found that this is a great way to catch “gotchas” early, rather than waiting until the end when work-arounds might require substancial changes to parts […]
Continue Reading
I wanted to share some quick notes on how to get JavaScript code assist “working” under the latest version of Aptana Studio. Note: As far as I can tell, this feature is very buggy, and as such, YMMV. There are three features that I find particularly desirable: Jump-to-definition: A Command-Click opens the file to the […]
Continue Reading
I’m structuring the project folder like this: /portfolio /deploy /css /img /icons /link.png /video.png /pic.png /js /framework /lib /jquery.js /background.png /index.html /contact /thumb.png /bio_contact.html /projects /project1 /thumb.png /video.html /description.html /project2 /thumb.png /video.html /description.html /src /project1 /video /notes If your information architecture is tight, you’ll likely see echoes of your file hierarchy in your data hierarchy […]
Continue Reading
Don Your Project Manager Hat A week with no updates?! … And things are about to get more busy, not less. Plus, upon reviewing the project plan, I noticed an omission: there’s no specific line item for the mask transition. It seemed so obvious, I neglected to capture it in the schedule. I’m adding 3 […]
Continue Reading
Jump to Part 1 here. Today, we’re going to define the data format for our portfolio. Back in 2005, XML was the last data format we were ever going to need, so that’s what I used. It must have been second-to-last, because today, everyone seems to prefer JSON. I’m more than happy to commiserate about […]
Continue Reading
Introduction I built a Flash-based portfolio back in 2005. It was itself a nice example of the kind of work that kept new projects coming: back-button & bookmarking support, raw content visible to Google & non-Flash browsers, Google Analytics tracking, easily updatable via an XML file, etc. All at a time when most people believed […]
Continue Reading
Just a little something I cooked up tonight after a few beers with Lee: ModelMediator = function (model) { this.__onChanged__ = new Dictionary(); for (var key in model) { this.__defineSetter__(key, function (arg) { this.set(model, key, arg) }); this.__defineGetter__(key, function () { this.get(model, key) }); this.__onChanged__.set(key, new signals.Signal()); } } ModelMediator.prototype.get = function (model, key) { […]
Continue Reading
I sorely miss the Dictionary class from AS3, but wasn’t excited by what my Googles led to and figured I’d learn more by rolling my own. JavaScript Arrays can be used as a hash, but only with String or Numeric keys. This class lets you use any Object. A function, an Array, a class … […]
Continue Reading