I deleted the earlier post and am replacing it with this one. It's essentially the same I just corrected a few swapped words that made it more confusing than it needs to be.
So let's deal with the easiest stuff first.
A function is a code block that can be invoked as a single unit either immediately or very often called later from outside of the function. It's a mechanism by which we can define a sequence of statements and associated data and then use and reuse that sequence.
A method is just a function that is part of an object. So a function is a function that is not part of any object.
Also a variable outside of an object is a variable and inside an object is referred to as a property.
Same things, different contexts.
Objects are nothing more than a collection of properties and methods. In fact it's even simpler than that. Objects are collections of key/value pairs called properties. Some of those properties are functions, and when they are, they're referred to as methods.
How do functions differ from objects?
Well I've already given a bit of the answer. A function is a single executable or callable block of code whereas an object is a collection of properties including potentially multiple methods (functions attached to objects).
Now here's where it is as simple or confusing as you want to make it.
Even what would appear to be basic datatypes are objects - numbers, strings, booleans – all objects. And yes functions are objects.
To convince yourself you could create a function using a constructor like:
var exFunction = new Function ([param1, param2, …, paramN,] CODE GOES HERE)
(So somewhere there is a Function prototype and when we create a new Function we are creating an instance of the class based on that prototype.)
Should you be using objects or using functions? It depends on what it is that you're trying to model. If just a basic sequence of steps then you can just deal with functions. If it's something that can be considered a single thing composed of a bunch of parts then an object is a better way to think of it. You could think of a microwave oven as just a series of functions but there are also properties too, right? It makes sense to represent a microwave oven as an object, not a loose collection of functions.
Sadly, this is the reason I'd hesitate to use Perl as a language to teach people to program formally. Although having said that, it's great to use for the same reason, and the argument could be made I think that avoiding objects at first is a good way to focus on other issues related to thinking like a programmer - execution flow, logic etc.
Anyway, unless you specifically tack on an object layer there is no talk of methods and properties in Perl but there are a lot of functions.
This can involve actually using the function as part of a larger expression (such as when assigning it to a variable OR wrapping a function in a pair of parenthesis so that the interpreter doesn't see it and treat it as a function declaration but instead a function expression.
I also found this slightly less readable write up that people seem to like: http://benalman.com/news/2010/11/immediately-invoked-function-expression/
I didn't immediately see anything egregiously wrong with either one of them.
I hope this helps!
I don't think there can ever be just 1 tool, which is a good thing. Try to go that route and you end up with Facebook or Amazon. I'm much more in favor of the small single purpose tools used in endless combinations strategy, as I'm sure you are. Integration becomes a problem, but I think integration is overrated, and may be a red herring.
The right tool for me is a combination of email, and some kind of group IM, and an individual IM which might be the same as the group tool, and a forum, and personal blog, and group blog, (both with comments), and some kind of aggregator, and some form of document collaboration, and version control/version history like git, and… well that's a start.
I like Slack because it behaves the way I except it too most of the time. I like the implementation. Git on the other hand, it wants to post every time I hit return. I really don't like the way they position Slack. Although I guess people are using it more and more as a public space, but I'm not sure I understand how that works.
Sounds good and a lot of work, good job.
"but individual users would need to "register" their apps with the Twitter API."
I hate that. (I'm using the word hate here.) That is the point at which the open web started to die. That really made me upset and I'm still very sour about it. Anyway…
I have my usual big (small) plans for Ode. I really want it to be a bulletproof local/remote writing and publishing solution and I want to use it to get a more diverse group of voices on the web. I've heard enough from the same people, especially in tech and web design and development. My attitude at this point is basically fuck them. We've been right about a lot of things over the years while they've gone with the flow. The flow sucks.
Anyway, I like this path you're on.
.htaccesshacks, I found some things on caching. Would this work for Ode due to its dynamic nature? https://www.askapache.com/htaccess/speed-up-sites-with-htaccess-caching/