I am a web developer. Tech-wise, I focus on high-performance UI programming and web accessibility. I used to do UX but I hated it and stay firmly on the execution side of the fence these days.

2d
comment To MVC or not MVC, that is the question
Maybe your issue is the common observation that Backbone is a very boilerplate-heavy solution. Which may be why it has been superceded in the intervening years.
Jun
23
awarded Yearling
Jun
23
awarded Yearling
Jun
21
comment How to either determine SVG text box width, or force line breaks after 'x' characters?
I have written a library that essentially does just this, named raphael-paragraph. See my answer below.
Jun
21
answered wrap text to fit into a rectangle : raphael
Jun
7
comment Should AudioBufferSourceNode.stop() need a 'this' binding?
In Chrome, oscillator.stop did not like me giving it non-integer timeouts. They would fail to fire, but without throwing exceptions. I assume this is a Chromium bug.
Jun
6
revised Should AudioBufferSourceNode.stop() need a 'this' binding?
added 55 characters in body
Jun
6
accepted Should AudioBufferSourceNode.stop() need a 'this' binding?
Jun
6
comment Should AudioBufferSourceNode.stop() need a 'this' binding?
I guess that's what I wanted to confirm - that I should assume that BOM methods need the same kinds of binding. Now I think of the document.getElementById case, it seems fairly obvious now.
Jun
6
comment Should AudioBufferSourceNode.stop() need a 'this' binding?
I think you misunderstand; I understand perfectly well how this binding works and how it gets lost with function pointers in JavaScript. What I don't know is if this should be happening with a BOM method that could be calling native code under the hood, or simply an implementation detail in Google Chrome.
Jun
6
revised Should AudioBufferSourceNode.stop() need a 'this' binding?
added 24 characters in body
Jun
6
comment Should AudioBufferSourceNode.stop() need a 'this' binding?
I understand what is happening with the this binding - but I don't know if this is an implementation detail in Chrome or if it's how I should expect the API to work? Especially given that .stop() could be native code rather than JavaScript (and therefore not be subject to the same binding behaviour as JS)
Jun
6
asked Should AudioBufferSourceNode.stop() need a 'this' binding?
Jun
4
comment Should I tell on my colleague for not keeping to assigned work-hours and abusing work-hours as break time?
"So while he's out getting coffee I log into his time account using his credentials to check if he's stamped out. He never is." - in many companies, this kind of behaviour is a dismissible offence, even if it isn't explicitly prohibited by policy. Be very careful about the 'evidence' you give HR, else you may find that it's you who gets fired first.
Jun
4
comment What should you test with unit tests?
+1 for "qualitative answers are useful, but it is possible - and preferable - to be quantitative"
Jun
3
awarded Autobiographer
Jun
3
awarded Supporter
May
30
awarded Tumbleweed
May
26
comment Knockout textInput and maskedinput plugin
@marcus - no, it is you who misunderstands. I am not telling you to use the textinput binding. I am suggesting you to write a delegate binding that uses a maskedinput library of some kind which can call mutation callbacks and have its value programatically changed. You may find my answer wearisome, but it is the 'proper' way to separate view concerns in a Knockout MVC application. Leave your passive aggressive 'sigh' for someone who actually owes you something.
May
26
comment Knockout textInput and maskedinput plugin
@marcus - Knockout does not listen to input events; bindings do, as and when you tell them. You should ideally to give your jQuery plugin a callback to fire when the input mutates, and that callback should mutate the model value, rather than having your binding create an event listener on top of the plugin. I'm assuming MaskedInput provides such a thing; if it does not you might want to use a different library or just implement the behaviour yourself in the binding with jQuery.
1 2 3 4 5