I use Noteworthy Webmail all day, every day. Yes I work for Mailtrust. Yes I coded on the Webmail team for a while. But that doesn’t change the fact I love the webmail interface.
Yesterday, I got back to my desk after a meeting and started attacking the 30 emails that had accumulated during that time. After reading through them, the next step was deleting because I use my Inbox like a task list. While doing this, something dawned on me. My favorite webmail feature is the one I don’t think about. It is the one I use every day. Check-Drag.
Check-Drag is the ability to click on a checkbox, hold the mouse button down, and select other checkboxes by dragging the mouse over them. Hopefully the video below illustrates how this works. Using it has become second nature, so the only time I notice it is when I am using a different application that doesn’t support it.
Webmail still supports shift-click and ctrl-click, but check-drag is just easier to use in my opinion.
As a side note, this is my first screencast Feel free to mock and heckle me. Also, tell me if you think it is stupid, or good. If it could be better, tell me how. I hate watching it because I hate the sound of my voice. At this point in my life, I believe I am ready to take the criticism that my peers might have
That’s right, this afternoon I figured out how to break instanceof in Javascript. Since I don’t use it often, I figured it worked just like it does in PHP. Basically it does, with one major caveat. Mozilla’s javascript reference gives this definition of the instanceof operator:
Use instanceof when you need to confirm the type of an object at runtime. For example, when catching exceptions, you can branch to different exception-handling code depending on the type of exception thrown.
Earlier today, I was trying to pass data from a child window to its parent window. From there, the parent window used JSON to encode the data ….. but it never got encoded. Upon further investigation, I saw that JSON used the instanceof operator to determine if an object was an Array. I created these test pages to confirm my results:
parent.html
1
2
3
4
5
function foobar(value){alert(value instanceof Array);alert(value instanceof child_window.Array);}var child_window = window.open('child.html');
child.html
1
window.opener.foobar(new Array(1,2,3));
The first alert is false, while the second one is true.
In Javascript, all objects are “owned” at the root level by the window. Since the window is different for child windows, it makes sense that instanceof would break.
For most small applications, this doesn’t matter. But for Webmail, it does. I have a couple ideas for a good workaround, but nothing set in stone yet.