170 karma · joined March 11, 2009
#--hackrtrackr:3xlrFPnWdakUF5V0U5kihWCYrNcuK4#
[ my public key: https://keybase.io/chrismear; my proof: https://keybase.io/chrismear/sigs/4y7JNkskd07HXwNHlnTuTcdLqxfgIH4lTOoJgwkU-3c ]
I explained this to someone recently in the context of event handlers in ActionScript/JavaScript, starting with the idea that when you do:
something.onclick = function(){...};
you're passing a function around just like it was any other value.Then I moved to an artificial example of a 'magic function-making machine':
function giveMeAnAdder(baseNumber) {
return function (i) {
return baseNumber + i;
};
}
with a couple of examples of storing and using the functions that giveMeAnAdder returns.Then I pointed out that, normally, local variables in a function disappear when the function returns, so how does my adder 'remember' what baseNumber is? And the answer is that the anonymous function is actually a bundle of a function body and the local context, and we call this a closure.
It's not as huge a gap as with Haystack, to be sure, but anyone who's tried to get non-webhead clients to grok/use Basecamp will know what a struggle it can sometimes be. People have been asking for years for the app to have more help/guidance that's geared towards client end-users, rather than the agency account owner.
As for Haystack, I sort of see it as a (reverse) extension of their job boards, which seems to have been pretty successful for them despite not being something they themselves use very often.
Suppose you have pages on a server www.example.com that reference images on an asset host assets.example.com. Usually, you would use a full URL in your HTML to reference your images:
http://assets.example.com/image.png
This is fine if all your accesses to www.example.com are done over HTTP. But what if you want to use HTTPS sometimes? Unless you change those URLs to use the HTTPS protocol as well, the browser may give the 'mixed secure and insecure content' warning.
If you specify the image URLs as relative URLs in the form:
//assets.example.com/image.png
then when a user visits http://www.example.com/ their browser will fetch the image from http://assets.example.com/image.png . But when they visit https://www.example.com/ their browser will fetch the image from https://assets.example.com/image.png .
Without the double slash, this kind of relative URL would be indistinguishable from the more common relative URL which just means a different path on the same server:
/assets.example.com/image.png
Just as in the early days of the mouse and windowed GUI, a system based upon 10/GUI's principles would likely be best suited to a systems builder capable of full vertical integration."
I wonder who they're thinking of.
http://www.subversionary.org/martintomes/preventing-access-t... http://blog.samdevore.com/archives/2006/05/01/hivelogic-prev...
On the other hand, if it's trying to make a case for libre software, then it's must be talking about libre sex. And I'm really not clear on what that entails.
"The app isn't running in the background; it's working server-to-server."
So presumably all they've done is a deal with AT&T to access the cell-location data for a subscriber, and using the app to tie that into their Loopt identity. Nothing special going on inside the iPhone OS.
Isn't this less about being 'horizontal' or 'vertical', and more about the fact that we display information on flat areas, and about different disciplines relating to segregation of 'in-progress', 'pending', and 'archived' material?
If I have five pieces of paper relating to a task that needs to be done, but which I'm not working on right at this moment, I'll stack them up simply because that leaves more space for the task I am working on right at this moment. Now, that stack may be 'horizontal' on the desk, or it may be 'vertical' in a filing cabinet. But it's simply a space-saving measure.
His main problem seems to be that when he files pending stuff away, he forgets to look at it again. But this isn't about vertical versus horizontal thinking -- it's just about bad document management. If you just have a monolithic filing cabinet that contains both ancient archived documents, and material relating to pending tasks, then yes, you're going to get confused and forget about things. If, on the other hand, you have one file as an archive, and one file that you know is for pending material (or an in-tray; or just a special pile on your desk), then you'll remember to check it.
I admit, my usage isn't particularly sophisticated. I typically use the browser (with genre, artist and album columns) to drill down to music, or the full text search to quickly dig out something specific. I also have quite a few manual and smart playlists.
My experience is in Ruby (specifically Rails), with Test::Unit (usually used to espouse TDD), and RSpec (recommended for BDD-style development).
With TDD, I follow the pattern of using real objects for almost everything (only mocking out API wrappers, etc.), setting some initial values, poking a method, and then testing that some final values are as they should be.
With BDD, I end up mocking and stubbing almost everything, and then writing a test that checks that my object under test calls the right methods on other objects.
I like the BDD school for its focus on testing one class in isolation, but often when writing BDD-style tests I just end up echoing the (eventual) implementation in test-form, line by line. It's entirely possible I've got utterly the wrong end of the stick, but I can't shake the feeling that it seems a bit redundant at best, and of little added value at worst.