would you mind simply explaining a little more what an immutable value is? I Understand immutable as something that cannot be changed.
> all of our collections are immutable
How can a collection which is data that eventually ties into a db be unchangeable?
Think of strings in JavaScript. Those are already immutable:
var fooString = "foo";
var secondFooString = fooString;
secondFooString; // => "foo"
fooString = "bar";
secondFooString; // => "foo"
We set the variable fooString to point to a different string, but the original, underlying string hasn't changed. In JavaScript, we can think of a string as a value.
This is not the case with arrays in JavaScript:
var firstArray = [1, 2, 3];
var secondArray = firstArray;
firstArray[0] = 100;
firstArray; // => [100, 2, 3]
secondArray; // => also [100, 2, 3]
Because we can change the underlying contents of the array, an array in JavaScript isn't a value. It's a place: a reference to a location in memory. The underlying value could be changed at any time.
But, using Mori, collections are values, just like strings:
var firstVec = m.vector(1, 2, 3);
var secondVec = firstVec;
firstVec = m.assoc(firstVec, 0, 100);
firstVec; // => [100, 2, 3]
secondVec; // => still [1, 2, 3]
Instead of modifying firstVec in place, mori.assoc creates a new vector that is identical to firstVec except for the change we want. We then assign the result to firstVec. secondVec is unchanged. We are unable to go in and change the underlying values because a vector is a value, not a place.
The most obvious way to build this would be to deep-copy the entire collection when it's changed, but that would of course be way too slow and wasteful — imagine copying a one-million-long array just to change one element. Clojure, ClojureScript and Mori minimize unnecessary copying using a very thoughtfully designed data structure you can read about here: http://hypirion.com/musings/understanding-persistent-vector-... The short story is that, surprisingly, you get "effectively O(1)" copying when you use assoc.
I experimented with http://rifff.com/ a bit for crowdsourcing feedback. I got some great detailed feedback, but I think the site is more prone to X vs. Y questions, which are helpful as well.
The one thing we have proven is that while people do trust their own network, they have been open to hearing from us. Off the top of my head, we convert maybe 40% of the time. By convert I mean getting someone to click on a link to our site from twitter.
This is absolutely fantastic feedback and advice and it gives me a new possible road to take. Thank you. I might be misunderstanding something, but the main thing I wanted to do which a tweet-bot wouldn't is start conversations with the "bad back" person and the chiropractors. Even one or two messages back and forth could answer a question where a bot would come short, for instance "I hurt a muscle around my left shoulder blade lifting weights. Is this a normal athletic case for you to work on? If so would I need an initial x-ray? Do you take insurance and when is the earliest you can fit me in?" If the hurting back person was able to get a few chiropractors to answer these question then they could make a much better buying decision.
It seems like you're trying to apply a Business to Business (B2B) mentality to a business to consumer relationship. Is there a reason for that? Is that your background? The problem is, business to consumer is low margin, high volume. You need to find a way to make that work.
It sounds like you want to do a LawPivot, for general consumer application. You want to build a MARKET, which is the hardest thing imo to do in the startup world. Too many variables, and even with millions of dollars and a great founding team, you can fail (Airtime didn't fail, but for what they were hyped up as, I think it did). If you want to really do this, start with a small sector.
Btw, LawPivot would not work over tweets - it would ruin their professional presence (at least currently). Maybe you want to make a 411 tweet-bot of sorts? Where you tweet a question, and you answer it?
I feel as though you're hitting several different things at once, try to hit one thing, HARD.
Also, automate business to consumer, IN THE LONG TERM. Short term, anything goes. Mechanical Turk, you and a friend doing google searches after reading tweets, anything. Get paid, then automate. This is covered in "The Lean Startup", required reading.
That was just my stream of consciousness, thanks for reading!
I really want to thank you Manglav. You have helped me immensely. Your last reply is spot on. It is like LawPivot and most importantly I think I am failing because I am trying to build a MARKET. This really brings things into perspective for me. Building a MARKET is just not something I can do. Do you think there is way to find a specific niche in the market that I could start with? Also, I am curious as to your thoughts on Pinterest. It has no natural pre-existing market or at least I dont see how one reaches girls who like to create scrapbooks. Yet it succeeded. I am not saying I could do what they did. I am just curious as to how you would define their market.
To be clear, the market is already a niche (Taskrabbit, AirBnB, LawPivot, etc). I was advising you to find a smaller segment of the market to start from. This should be something you're familiar with, and should have a decent concentration of said niche. For example, I don't advise trying match Eskimos with Popsicles that they want (not enough volume). Finding "your niche" is sort of easy, try graphing your time weekly and see what activities you do. Then rank your activities based on the strength you have in them. The top one is your best niche to attack in your local market.
Pinterest pulled a Steve Jobs - it was their job to know what consumer's wanted a year in the future. They were able to see that the coming smartphone explosion would combine with people wanting to be social, and what evokes a lot of emotion? Looking at old photos with friends. Add some filters on top to hide any bad picture taking skills/catering to the masses, and you have a billion dollar idea. They also provided a billion dollar execution, by exiting within two years. Pinterest was a case when all the stars align in the startup universe, and they also worked really really hard to build the telescope to see them.
On the point that is will not scale quickly. I wrote a bot that searches through various directories and pulls off email addresses, so its an automated process that does my work and emailing. I don't trust my bot yet so I still check over everything it does. The only reason I mention calling is if they want something done really fast and they are willing to pay for it. I understand completely that using a human to call is not scaleable. Its still a way to gauge my market and get customer feedback.