Decoding the question of the coder I need
May 5, 2011 11:21 AM   Subscribe

What kind of Web programmer/coder do I need for this project? Where do I find such a person?

I have an idea for a Web site; I'd like to invest a bit of money in getting it to the point where I can maybe take it to Kickstarter and really get it off the ground.

My Web skills begin and end with HTML and a bit of CSS. I tried learning some PHP once and got a nosebleed.

The nexus of the idea is a functionality where people can enter text in an entry page of the site; this text will then be re-presented on an aggregate page that shows lots of different texts, being entered by different people at different points on the globe, with everything updating in real time.

The "data entry" pages are simple and look like a straight-up text entry box.

So Person A in Nebraska can be typing an essay about water tables and agriculture;
Person B in Hong Kong can be typing a letter to his/her mother;
Person C in Toronto can be typing a film script;

and there's another page somewhere where you can see Window A, Window B, and Window C, and see the texts that Person A, B and C are entering in real time.

There’s a lot more to it, but that’s the core. I’m not trying to be maddeningly vague, but I also don’t want to explain the whole thing in a way that will be (a) nauseatingly long or (b) totally give it away. The engine of the concept is this "simulcasting" of text entered by multiple people at multiple points.

So... what kind of a Web programmer am I looking for? I know design is its own thing, but I really need to build the fundamentals of this so I can move on to proof-of-concept and then maybe Kickstarter. My programming knowledge is comprised of

20 GOTO 10

... so I don't have the foggiest of what kind of subset of coder/programmer will best suit my needs.

And where's the best place to look? I need to start fleshing out a budget for this project, both for the initial phase and as a Kickstarter goal.
posted by Shepherd to Computers & Internet (15 answers total) 1 user marked this as a favorite
This made me think of Google Wave, but since things have fizzled out for them, Apache has it now.
posted by Seboshin at 11:28 AM on May 5, 2011

I think you want a kind of web application developer, and are on the right track with the Python / Ruby vibe into which you are tapping. Maybe within a framework like Django.
posted by Victorvacendak at 11:31 AM on May 5, 2011

The thing you're looking to develop is called a collaborative real-time editor, and lots of people have already done it. From a programming perspective, it's a surprisingly difficult problem to solve effectively.

You're likely going to want to re-use a pre-existing open-source realtime editing component for your project, so that the hard work's already been done for you.

Best of luck!
posted by schmod at 11:39 AM on May 5, 2011

You need a back-end software developer for the web application itself. But it sounds like if you want things appearing in "real-time" that requires some JavaScript magic a good front-end developer can help you with.
posted by xtine at 11:40 AM on May 5, 2011

Best answer: I would tackle the realtime update using node.js and web sockets. You will need at the very least a javascript developer to handle the dynamic updates to the client and someone famiar with something like operational transforms, which is how changes get managed in a real-time collaborative text editor.

I personally don't know of any drop in real-time text editors that would work out of the box for what you want, not that that means they don't exist.
posted by Ad hominem at 11:46 AM on May 5, 2011

Best answer: If the people are all working on separate texts, not collaborating on a single text, this is actually a fairly simple problem. (The complexity of collaborative realtime editing is mostly in how to cope with conflicting changes made simultaneously by different users, but that doesn't sound like it would be an issue for what you describe: every user is working on a separate text, so there's no opportunity for collisions.)

The entry pages would need to push the updated text to the server on some not-quite-realtime basis to scale to your server capacity and the number of users (every keystroke is probably too much, every minute is probably too few). The "aggregate" page would need to periodically poll the server to find which texts have changed since the last poll, download them and plug them into the page replacing whatever was there before.

So you're looking at a little bit of javascript-with-ajax to do the pushing and the pulling, plus a tiny bit of very straightforward CRUD on the server to store the texts and serve them back out again. Literally any web programming language would be able to do this easily. Use the Framework Of Your Choice to handle the boilerplate stuff (login, user accounts, etc).
posted by ook at 12:28 PM on May 5, 2011 [1 favorite]

I agree with ook, but I still think you will need operational transforms or some way to get deltas so you aren't sending back entire texts every time. This is of course outside the scope of the question :)
posted by Ad hominem at 12:37 PM on May 5, 2011

True. I had actually started into a digression about how you could add a lot of complexity by building it to scale well, but decided it wasn't really relevant and deleted it.

(fwiw it was about making the polling frequency dependent on who's looking: if nobody's looking a given entry on an aggregate page, then that entry page doesn't need to push updates as frequently; and if someone's looking at an aggregate page but nobody currently has an entry page open, then the aggregate page doesn't need to check for updates very often.)
posted by ook at 1:07 PM on May 5, 2011

Response by poster: For clarity: there will be no collaborative editing, only "real-time viewing" of people entering text from their respective locations.
posted by Shepherd at 1:27 PM on May 5, 2011

Someone who has experiencing using node.js - So a javascript programmer. From what I understand of what you're saying it sounds like just the kind of thing that node.js was designed for.
posted by aychedee at 2:51 AM on May 6, 2011

yes, most node coders at jsconf could probably write this in 30 minutes. And you'd have plenty of places where to host it for free, too.
posted by 3mendo at 3:56 AM on May 6, 2011

Best answer: My advice: forget the recommendations of tech platforms, languages or libraries to use. This is a fairly simple application that any competent web developer should be able to complete quickly. The platform choice should probably be made on factors such as cost, availability, and available programming talent. When you are a startup you need to find the easiest path (often cheapest) forward. Sprinkling in some AJAX is obviously important to avoid too many page refreshes. Other than that, find a decent web application developer a let them loose.
posted by SNACKeR at 5:54 AM on May 6, 2011

I'm a little surprised by all the node recommendations.

Can one of you who's spent some real time with node.js explain what you think would be advantageous about it for this particular case? It's still on my "keep an eye on it but don't invest any real time yet in case it's just another flavor-of-the-month" list, so maybe I'm missing something, but based on my reading I'm not seeing anything that would make it the obvious right choice for this app.
posted by ook at 6:30 AM on May 6, 2011 [1 favorite]

ook: sure, you could use java based messageque that meets a few Jstandards and runs on a cluster on suns. But the same thing will take less than 100 locs in node. and that's 50 on the server and 50 on the client.. * of the same language. Now I know that any web developer knows both a backend and a frontend lang, but even if he does, just the time savings from the context switch in your head from one lang to the other makes you write, say, 10% more betterer software.

Mind you, I am sure ruby and python can technically perform in a similar manner. But since someone is supposedly paying for this I guess that hand optimized assembler is not a viable choice.

* [excluding styling of course.]
posted by 3mendo at 9:44 AM on May 6, 2011

Hand optimized assembler? WTF are you talking about?

I'm not a Java guy, and I have no idea why you're trying to paint me with that brush. I'm just questioning why people are suggesting bleeding edge stuff like web sockets and a relatively new and untested framework for an app that seems like it could run quite happily on a bog standard LAMP stack.

Is there something specific about this particular application that would make node the obvious right choice, or is it just a thing you happen to like and would suggest for everything? (which, if so, that's great, more power to you)
posted by ook at 7:07 AM on May 8, 2011

« Older Find me cookbooks for vegetarian one-pot meals.   |   Literary device? Newer »
This thread is closed to new comments.